Beispiel #1
0
        public async Task <ActionResult> Registration(int DatumId)
        {
            OnlineRegModel    m        = new OnlineRegModel(CurrentDatabase);
            decimal?          Amount   = 0;
            string            mobile   = string.Empty;
            string            fundName = string.Empty;
            RegistrationDatum datum    = CurrentDatabase.RegistrationDatas.SingleOrDefault(d => d.Id == DatumId);

            if (datum != null)
            {
                m        = Util.DeSerialize <OnlineRegModel>(datum.Data);
                Amount   = m.PayAmount() + (m.donation ?? 0);
                mobile   = CurrentDatabase.People.SingleOrDefault(p => p.PeopleId == m.UserPeopleId)?.CellPhone;
                fundName = await _resolver.GetOrgFund(m.List.FirstOrDefault().setting.PushpayFundName);

                //Needs to redirect in case cupons are enable.
            }
            else
            {
                ViewBag.Message = "Something went wrong";
                CurrentDatabase.LogActivity($"No datum founded with id: {DatumId}");
                return(View("~/Views/Shared/PageError.cshtml"));
            }
            return(Redirect($"{_givingLink}?ru={_merchantHandle}&sr=dat_{DatumId}&rcv=false&r=no&up={mobile}&a={Amount}&fnd={fundName}&al=true&fndv=lock"));
        }
Beispiel #2
0
        public ActionResult CompleteRegistration(OnlineRegModel m)
        {
            if (m.AskDonation() && !m.donor.HasValue && m.donation > 0)
            {
                SetHeaders(m);
                ModelState.AddModelError("donation",
                                         "Please indicate a donor or clear the donation amount");
                return(View("AskDonation", m));
            }

            if (m.List.Count == 0)
            {
                return(Content("Can't find any registrants"));
            }

            RemmoveLastRegistrantIfEmpty(m);

            var d = new ExtraDatum {
                Stamp = Util.Now
            };

            d.Data = Util.Serialize <OnlineRegModel>(m);
            DbUtil.Db.ExtraDatas.InsertOnSubmit(d);
            DbUtil.Db.SubmitChanges();
            DbUtil.LogActivity("Online Registration: {0} ({1})".Fmt(m.Header, d.Id));

            if (m.PayAmount() == 0 && (m.donation ?? 0) == 0 && !m.Terms.HasValue())
            {
                return(RedirectToAction("Confirm",
                                        new
                {
                    id = d.Id,
                    TransactionID = "zero due",
                }));
            }

            var terms = Util.PickFirst(m.Terms, "");

            if (terms.HasValue())
            {
                ViewData["Terms"] = terms;
            }

            SetHeaders(m);
            if (m.PayAmount() == 0 && m.Terms.HasValue())
            {
                return(View("Terms", new PaymentModel
                {
                    Terms = m.Terms,
                    _URL = m.URL,
                    _timeout = INT_timeout,
                    PostbackURL = Util.ServerLink("/OnlineReg/Confirm/" + d.Id),
                }));
            }

            ViewBag.timeout = INT_timeout;
            ViewBag.Url     = m.URL;

            var om =
                DbUtil.Db.OrganizationMembers.SingleOrDefault(
                    mm => mm.OrganizationId == m.orgid && mm.PeopleId == m.List[0].PeopleId);

            m.ParseSettings();

            if (om != null && m.settings[m.orgid.Value].AllowReRegister == false)
            {
                return(Content("You are already registered it appears"));
            }

            var pf = PaymentForm.CreatePaymentForm(m);

            pf.DatumId = d.Id;
            pf.FormId  = Guid.NewGuid();
            if (OnlineRegModel.GetTransactionGateway() == "serviceu")
            {
                return(View("Payment", pf));
            }
            return(View("ProcessPayment", pf));
        }
        public ActionResult CompleteRegistration(OnlineRegModel m)
        {
            m.History.Add("CompleteRegistration");

            if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.SpecialJavascript)
            {
                SpecialRegModel.ParseResults(m.Orgid ?? 0, m.List[0].PeopleId ?? 0, Request.Form);
                return(View("SpecialRegistrationResults"));
            }

            if (m.AskDonation() && !m.donor.HasValue && m.donation > 0)
            {
                SetHeaders(m);
                ModelState.AddModelError("donation",
                                         "Please indicate a donor or clear the donation amount");
                return(View("AskDonation", m));
            }

            if (m.List.Count == 0)
            {
                return(Content("Can't find any registrants"));
            }

            RemoveLastRegistrantIfEmpty(m);

            m.UpdateDatum();
            DbUtil.LogActivity("Online Registration: {0} ({1})".Fmt(m.Header, m.DatumId));

            if (m.PayAmount() == 0 && (m.donation ?? 0) == 0 && !m.Terms.HasValue())
            {
                return(RedirectToAction("Confirm",
                                        new
                {
                    id = m.DatumId,
                    TransactionID = "zero due",
                }));
            }

            var terms = Util.PickFirst(m.Terms, "");

            if (terms.HasValue())
            {
                ViewData["Terms"] = terms;
            }

            SetHeaders(m);
            if (m.PayAmount() == 0 && m.Terms.HasValue())
            {
                return(View("Terms", new PaymentModel
                {
                    Terms = m.Terms,
                    _URL = m.URL,
                    PostbackURL = DbUtil.Db.ServerLink("/OnlineReg/Confirm/" + m.DatumId),
                    _timeout = m.TimeOut
                }));
            }

            var om =
                DbUtil.Db.OrganizationMembers.SingleOrDefault(
                    mm => mm.OrganizationId == m.Orgid && mm.PeopleId == m.List[0].PeopleId);

            m.ParseSettings();

            if (om != null && m.settings[om.OrganizationId].AllowReRegister == false && !m.SupportMissionTrip)
            {
                return(Content("You are already registered it appears"));
            }

            var pf = PaymentForm.CreatePaymentForm(m);

            if (OnlineRegModel.GetTransactionGateway() == "serviceu")
            {
                return(View("Payment/ServiceU", pf));
            }
            ModelState.Clear();
            return(View("Payment/Process", pf));
        }
        public ActionResult Index(int?id, bool?testing, string email, bool?login, string registertag, bool?showfamily, int?goerid, int?gsid, string source, int?pledgeFund)
        {
            Response.NoCache();

            var m             = new OnlineRegModel(Request, CurrentDatabase, id, testing, email, login, source);
            var isMissionTrip = (m.org?.IsMissionTrip).GetValueOrDefault();

            if (isMissionTrip)
            {
                m.ProcessType = PaymentProcessTypes.OnlineRegistration;
            }
            else
            {
                AssignPaymentProcessType(ref m);
            }

            if (pledgeFund != null)
            {
                m.pledgeFundId = pledgeFund.Value;
            }

            SetHeaders(m);

            int?GatewayId       = MultipleGatewayUtils.GatewayId(CurrentDatabase, m.ProcessType);
            var gatewayRequired = (m.PayAmount() > 0 || m.ProcessType == PaymentProcessTypes.OneTimeGiving || m.ProcessType == PaymentProcessTypes.RecurringGiving);

            if (GatewayId.IsNull() && gatewayRequired)
            {
                return(View("OnePageGiving/NotConfigured"));
            }

            if ((int)GatewayTypes.Pushpay == GatewayId && string.IsNullOrEmpty(MultipleGatewayUtils.Setting(CurrentDatabase, "PushpayMerchant", "", (int)m.ProcessType)))
            {
                ViewBag.Header       = m.Header;
                ViewBag.Instructions = m.Instructions;
                return(View("OnePageGiving/NotConfigured"));
            }

            if (m.ManageGiving())
            {
                Session[$"Campus-{m.Orgid}"] =
                    m.Campus            = Request.QueryString["campus"];
                Session["DefaultFunds"] = Request.QueryString["funds"];
                m.DefaultFunds          = Session["DefaultFunds"]?.ToString();
            }

            if (isMissionTrip)
            {
                if (gsid != null || goerid != null)
                {
                    m.PrepareMissionTrip(gsid, goerid);
                }
            }

            var pid = m.CheckRegisterLink(registertag);

            if (m.NotActive())
            {
                return(View("OnePageGiving/NotActive", m));
            }
            if (m.MissionTripSelfSupportPaylink.HasValue() && m.GoerId > 0)
            {
                return(Redirect(m.MissionTripSelfSupportPaylink));
            }

            return(RouteRegistration(m, pid, showfamily));
        }