Beispiel #1
0
        public ActionResult Existing(int id)
        {
            if (!TempData.ContainsKey("PeopleId"))
            {
                return(Message("not logged in"));
            }
            var pid = (int?)TempData["PeopleId"];

            if (!pid.HasValue || pid == 0)
            {
                return(Message("not logged in"));
            }
            var m = OnlineRegModel.GetRegistrationFromDatum(id);

            if (m == null)
            {
                return(Message("no Existing registration available"));
            }
            if (m.UserPeopleId != m.Datum.UserPeopleId)
            {
                return(Message("incorrect user"));
            }
            TempData["PeopleId"] = pid;
            return(View("Continue/Existing", m));
        }
Beispiel #2
0
        public ActionResult Confirm_Post(int?id, string transactionId, string termsSignature, decimal?amount)
        {
            if (!id.HasValue)
            {
                return(View("Other/Unknown"));
            }

            var m = OnlineRegModel.GetRegistrationFromDatum(id ?? 0, CurrentDatabase);

            if (m != null)
            {
                m.TermsSignature = Util.PickFirst(termsSignature, null);
            }
            if (m == null || m.Completed)
            {
                if (m == null)
                {
                    DbUtil.LogActivity("OnlineReg NoPendingConfirmation");
                }
                else
                {
                    m.Log("NoPendingConfirmation");
                }

                return(Content("no pending confirmation found"));
            }
            if (!Util.HasValue(transactionId))
            {
                m.Log("NoTransactionId");
                return(Content("error no transaction"));
            }
            if (m.List.Count == 0)
            {
                m.Log("NoRegistrants");
                return(Content("no registrants found"));
            }
            try
            {
                OnlineRegModel.LogOutOfOnlineReg();
                RequestManager.SessionProvider.Clear();
                var view = m.ConfirmTransaction(transactionId);
                m.UpdateDatum(completed: true);
                SetHeaders(m);
                if (view == ConfirmEnum.ConfirmAccount)
                {
                    m.Log("ConfirmAccount");
                    return(View("Continue/ConfirmAccount", m));
                }
                m.Log("Confirm");
                return(View("Confirm", m));
            }
            catch (Exception ex)
            {
                m.Log("Error " + ex.Message);
                ErrorSignal.FromCurrentContext().Raise(ex);
                Util.TempError = ex.Message;
                return(Redirect("/Error"));
            }
        }
Beispiel #3
0
        public ActionResult PayWithCoupon(int id, string Coupon)
        {
            if (!Coupon.HasValue())
            {
                return(Json(new { error = "empty coupon" }));
            }

            var m = OnlineRegModel.GetRegistrationFromDatum(id, CurrentDatabase);

            m.ParseSettings();
            var coupon      = Coupon.ToUpper().Replace(" ", "");
            var admincoupon = CurrentDatabase.Setting("AdminCoupon", "ifj4ijweoij").ToUpper().Replace(" ", "");

            if (coupon == admincoupon)
            {
                return(Json(new { confirm = $"/onlinereg/Confirm/{id}?TransactionID=Coupon(Admin)" }));
            }

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

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

            if (m.Orgid != c.OrgId)
            {
                return(Json(new { error = "coupon org not match" }));
            }

            if (DateTime.Now.Subtract(c.Created).TotalHours > 24)
            {
                return(Json(new { error = "coupon expired" }));
            }

            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" }));
            }

            return(Json(new
            {
                confirm = $"/onlinereg/confirm/{id}?TransactionID=Coupon({Util.fmtcoupon(coupon)})"
            }));
        }
Beispiel #4
0
        public ActionResult Continue(int id)
        {
            var m = OnlineRegModel.GetRegistrationFromDatum(id);

            if (m == null)
            {
                return(Message("no Existing registration available"));
            }
            var n = m.List.Count - 1;

            m.HistoryAdd("continue");
            m.UpdateDatum();
            SetHeaders(m);
            return(View("Index", m));
        }
        public ActionResult Continue(int id)
        {
            var m = OnlineRegModel.GetRegistrationFromDatum(id);

            if (m == null)
            {
                return(Content("no existing registration available"));
            }
            var n = m.List.Count - 1;

            m.List[n].ValidateModelForOther(ModelState, n);
            m.History.Add("continue");
            m.UpdateDatum();
            return(View("Index", m));
        }
Beispiel #6
0
        public ActionResult StartOver(int id)
        {
            var pid = (int?)TempData["PeopleId"];

            if (!pid.HasValue || pid == 0)
            {
                return(Message("not logged in"));
            }
            var m = OnlineRegModel.GetRegistrationFromDatum(id);

            if (m == null)
            {
                return(Message("no Existing registration available"));
            }
            m.StartOver();
            return(Redirect(m.URL));
        }
Beispiel #7
0
        public ActionResult StartOver(int id)
        {
            var pid = (int)TempData["er"];

            if (pid == 0)
            {
                return(Message("not logged in"));
            }
            var m = OnlineRegModel.GetRegistrationFromDatum(id);

            if (m == null)
            {
                return(Message("no existing registration available"));
            }
            m.HistoryAdd("startover");
            m.UpdateDatum(abandoned: true);
            return(Redirect(m.URL));
        }
Beispiel #8
0
        public ActionResult Continue(int id)
        {
            var m = OnlineRegModel.GetRegistrationFromDatum(id, CurrentDatabase);

            if (m == null)
            {
                return(Message("no Existing registration available"));
            }
            var n = m.List.Count - 1;

            m.HistoryAdd("continue");
            m.UpdateDatum();
            SetHeaders(m);
            if (m.RegistrantComplete)
            {
                return(Redirect("/OnlineReg/CompleteRegistration/" + id));
            }
            return(View("Index", m));
        }
Beispiel #9
0
        public ActionResult Existing(int id)
        {
            var pid = (int)TempData["er"];

            if (pid == 0)
            {
                return(Message("not logged in"));
            }
            var m = OnlineRegModel.GetRegistrationFromDatum(id);

            if (m == null)
            {
                return(Message("no existing registration available"));
            }
            if (m.UserPeopleId != m.Datum.UserPeopleId)
            {
                return(Message("incorrect user"));
            }
            TempData["er"] = pid;
            return(View(m));
        }
Beispiel #10
0
        public ActionResult Existing(int id)
        {
            var pid = Util.TempPeopleId;

            if (!pid.HasValue || pid == 0)
            {
                return(Message("not logged in"));
            }
            var m = OnlineRegModel.GetRegistrationFromDatum(id, CurrentDatabase);

            if (m == null)
            {
                return(Message("no Existing registration available"));
            }
            if (m.UserPeopleId != m.Datum.UserPeopleId)
            {
                return(Message("incorrect user"));
            }
            Util.TempPeopleId = pid;
            return(View("Continue/Existing", m));
        }
Beispiel #11
0
        public ActionResult Confirm(int?id, string transactionId, decimal?amount)
        {
            if (!id.HasValue)
            {
                return(View("Unknown"));
            }
            if (!transactionId.HasValue())
            {
                return(Content("error no transaction"));
            }

            var m = OnlineRegModel.GetRegistrationFromDatum(id ?? 0);

            if (m == null || m.Completed)
            {
                return(Content("no pending confirmation found"));
            }

            if (m.List.Count == 0)
            {
                return(Content("no registrants found"));
            }
            try
            {
                var view = ConfirmTransaction(m, transactionId);
                m.UpdateDatum(completed: true);
                SetHeaders(m);
                if (view == ConfirmEnum.ConfirmAccount)
                {
                    return(View("ConfirmAccount", m));
                }
                return(View("Confirm", m));
            }
            catch (Exception ex)
            {
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                TempData["error"] = ex.Message;
                return(Redirect("/Error"));
            }
        }
Beispiel #12
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 }));
        }