Beispiel #1
0
        public ActionResult ConfirmDuePaid(int?id, string transactionId, decimal?amount)
        {
            Response.NoCache();
            if (!id.HasValue)
            {
                return(View("Other/Unknown"));
            }

            if (!Util.HasValue(transactionId))
            {
                DbUtil.LogActivity("OnlineReg PayDueNoTransactionId");
                return(Message("error no transactionid"));
            }
            var ti = CurrentDatabase.Transactions.SingleOrDefault(tt => tt.Id == id);

            if (ti == null)
            {
                DbUtil.LogActivity("OnlineReg PayDueNoPendingTrans");
                return(Message("no pending transaction"));
            }
#if DEBUG
            ti.Testing = true;
#endif
            OnlineRegModel.ConfirmDuePaidTransaction(ti, transactionId, sendmail: true);
            ViewBag.amtdue = PaymentForm.AmountDueTrans(CurrentDatabase, ti).ToString("C");
            SetHeaders(ti.OrgId ?? 0);
            DbUtil.LogActivity("OnlineReg PayDueConfirm", ti.OrgId, ti.LoginPeopleId ?? ti.FirstTransactionPeopleId());
            return(View("PayAmtDue/Confirm", ti));
        }
Beispiel #2
0
        public ActionResult ApplyCoupon(PaymentForm pf)
        {
            OnlineRegModel m = null;

            if (pf.PayBalance == false)
            {
                m = OnlineRegModel.GetRegistrationFromDatum(pf.DatumId);
                if (m == null)
                {
                    return(Json(new { error = "coupon not find your registration" }));
                }
                m.ParseSettings();
            }

            if (!pf.Coupon.HasValue())
            {
                return(Json(new { error = "empty coupon" }));
            }
            var coupon      = pf.Coupon.ToUpper().Replace(" ", "");
            var admincoupon = DbUtil.Db.Setting("AdminCoupon", "ifj4ijweoij").ToUpper().Replace(" ", "");

            if (coupon == admincoupon)
            {
                if (pf.PayBalance)
                {
                    var tic = pf.CreateTransaction(DbUtil.Db, pf.AmtToPay);
                    return(Json(new { confirm = $"/onlinereg/ConfirmDuePaid/{tic.Id}?TransactionID=AdminCoupon&Amount={tic.Amt}" }));
                }
                else
                {
                    return(Json(new { confirm = $"/OnlineReg/Confirm/{pf.DatumId}?TransactionId=AdminCoupon" }));
                }
            }

            var c = DbUtil.Db.Coupons.SingleOrDefault(cp => cp.Id == coupon);

            if (c == null)
            {
                return(Json(new { error = "coupon not found" }));
            }

            if (pf.OrgId.HasValue && c.Organization != null && c.Organization.OrgPickList.HasValue())
            {
                var a = c.Organization.OrgPickList.SplitStr(",").Select(ss => ss.ToInt()).ToArray();
                if (!a.Contains(pf.OrgId.Value))
                {
                    return(Json(new { error = "coupon and org do not match" }));
                }
            }
            else if (pf.OrgId != c.OrgId)
            {
                return(Json(new { error = "coupon and org do not match" }));
            }
            if (c.Used.HasValue && c.Id.Length == 12)
            {
                return(Json(new { error = "coupon already used" }));
            }
            if (c.Canceled.HasValue)
            {
                return(Json(new { error = "coupon canceled" }));
            }

            var ti = pf.CreateTransaction(DbUtil.Db, Math.Min(c.Amount ?? 0m, pf.AmtToPay ?? 0m));

            if (m != null) // Start this transaction in the chain
            {
                m.HistoryAdd("ApplyCoupon");
                m.TranId = ti.OriginalId;
                m.UpdateDatum();
            }
            var tid = $"Coupon({Util.fmtcoupon(coupon):n2})";

            if (!pf.PayBalance)
            {
                OnlineRegModel.ConfirmDuePaidTransaction(ti, tid, false);
            }

            var msg = $"<i class='red'>Your coupon for {c.Amount:n2} has been applied, your balance is now {ti.Amtdue:n2}</i>.";

            if (ti.Amt < pf.AmtToPay)
            {
                msg += "You still must complete this transaction with a payment";
            }

            if (m != null)
            {
                m.UseCoupon(ti.TransactionId, ti.Amt ?? 0);
            }
            else
            {
                c.UseCoupon(ti.FirstTransactionPeopleId(), ti.Amt ?? 0);
            }
            DbUtil.Db.SubmitChanges();

            if (pf.PayBalance)
            {
                return(Json(new { confirm = $"/onlinereg/ConfirmDuePaid/{ti.Id}?TransactionID=Coupon({Util.fmtcoupon(coupon)})&Amount={ti.Amt}" }));
            }
            pf.AmtToPay -= ti.Amt;
            if (pf.AmtToPay <= 0)
            {
                return(Json(new { confirm = $"/OnlineReg/Confirm/{pf.DatumId}?TransactionId={"Coupon"}" }));
            }
            return(Json(new { tiamt = pf.AmtToPay, amtdue = ti.Amtdue, amt = pf.AmtToPay.ToString2("N2"), msg }));
        }