Example #1
0
        public ActionResult SaveProgress(OnlineRegModel m)
        {
            m.HistoryAdd("saveprogress");
            if (m.UserPeopleId == null)
                m.UserPeopleId = Util.UserPeopleId;
            m.UpdateDatum();
            var p = m.UserPeopleId.HasValue ? DbUtil.Db.LoadPersonById(m.UserPeopleId.Value) : m.List[0].person;

            if (p == null)
                return Content("We have not found your record yet, cannot save progress, sorry");
            if (m.masterorgid == null && m.Orgid == null)
                return Content("Registration is not far enough along to save, sorry.");

            var msg = DbUtil.Db.ContentHtml("ContinueRegistrationLink", @"
            <p>Hi {first},</p>
            <p>Here is the link to continue your registration:</p>
            Resume [registration for {orgname}]
            ").Replace("{orgname}", m.Header);
            var linktext = Regex.Match(msg, @"(\[(.*)\])", RegexOptions.Singleline).Groups[2].Value;
            var registerlink = EmailReplacements.CreateRegisterLink(m.masterorgid ?? m.Orgid, linktext);
            msg = Regex.Replace(msg, @"(\[.*\])", registerlink, RegexOptions.Singleline);

            var notifyids = DbUtil.Db.NotifyIds((m.masterorg ?? m.org).NotifyIds);
            DbUtil.Db.Email(notifyids[0].FromEmail, p, $"Continue your registration for {m.Header}", msg);

            /* We use Content as an ActionResult instead of Message because we want plain text sent back
             * This is an HttpPost ajax call and will have a SiteLayout wrapping this.
             */
            return Content(@"
            We have saved your progress. An email with a link to finish this registration will come to you shortly.
            <input type='hidden' id='SavedProgress' value='true'/>
            ");
        }
Example #2
0
 private string RouteExistingRegistration(OnlineRegModel m, int? pid = null)
 {
     var existingRegistration = m.GetExistingRegistration(pid ?? Util.UserPeopleId ?? 0);
     if (existingRegistration == null)
         return null;
     m.Log("Existing");
     TempData["PeopleId"] = existingRegistration.UserPeopleId;
     return "/OnlineReg/Existing/" + existingRegistration.DatumId;
 }
Example #3
0
        public void UpdateSubscriptions()
        {
            var q = from o in OnlineRegModel.UserSelectClasses(masterorg)
                    let om = o.OrganizationMembers.SingleOrDefault(mm => mm.PeopleId == pid)
                             where om != null
                             select om;
            var current = q.ToList();

            if (Subscribe == null)
            {
                Subscribe = new int[] {}
            }
            ;

            var drops = from om in current
                        join id in Subscribe on om.OrganizationId equals id into j
                        from id in j.DefaultIfEmpty()
                        where id == 0
                        select om;

            var joins = from id in Subscribe
                        join om in current on id equals om.OrganizationId into j
                        from om in j.DefaultIfEmpty()
                        where om == null
                        select id;

            foreach (var om in drops)
            {
                om.Drop(DbUtil.Db);
                DbUtil.Db.SubmitChanges();
            }
            foreach (var id in joins)
            {
                OrganizationMember.InsertOrgMembers(DbUtil.Db,
                                                    id, pid, MemberTypeCode.Member, DateTime.Now, null, false);
                DbUtil.Db.SubmitChanges();
                //DbUtil.Db.UpdateMainFellowship(id);
            }
        }
Example #4
0
 private string RouteManageGivingSubscriptionsPledgeVolunteer(OnlineRegModel m)
 {
     if (m.RegisterLinkMaster())
     {
         if (m.registerLinkType.StartsWith("registerlink") || m.registerLinkType == "masterlink" || User.Identity.IsAuthenticated)
         {
             TempData["token"] = m.registertag;
             TempData["PeopleId"] = m.UserPeopleId ?? Util.UserPeopleId;
         }
         return $"/OnlineReg/RegisterLinkMaster/{m.Orgid}";
     }
     TempData["PeopleId"] = m.UserPeopleId ?? Util.UserPeopleId;
     if (m.ManagingSubscriptions())
         return $"/OnlineReg/ManageSubscriptions/{m.masterorgid}";
     if (m.ManageGiving())
         return $"/OnlineReg/ManageGiving/{m.Orgid}";
     if (m.OnlinePledge())
         return $"/OnlineReg/ManagePledge/{m.Orgid}";
     if (m.ChoosingSlots())
         return $"/OnlineReg/ManageVolunteer/{m.Orgid}";
     TempData.Remove("PeopleId");
     return null;
 }
Example #5
0
        public static Transaction CreateTransaction(CMSDataContext db, Transaction t, decimal?amount)
        {
            var amtdue = t.Amtdue - (amount ?? 0);
            var ti     = new Transaction
            {
                Name               = t.Name,
                First              = t.First,
                MiddleInitial      = t.MiddleInitial,
                Last               = t.Last,
                Suffix             = t.Suffix,
                Donate             = t.Donate,
                Amtdue             = amtdue,
                Amt                = amount,
                Emails             = Util.FirstAddress(t.Emails).Address,
                Testing            = t.Testing,
                Description        = t.Description,
                OrgId              = t.OrgId,
                Url                = t.Url,
                Address            = t.Address,
                TransactionGateway = OnlineRegModel.GetTransactionGateway()?.GatewayAccountName,
                City               = t.City,
                State              = t.State,
                Zip                = t.Zip,
                DatumId            = t.DatumId,
                Phone              = t.Phone,
                OriginalId         = t.OriginalId ?? t.Id,
                Financeonly        = t.Financeonly,
                TransactionDate    = Util.Now,
                PaymentType        = t.PaymentType,
                LastFourCC         = t.LastFourCC,
                LastFourACH        = t.LastFourACH
            };

            db.Transactions.InsertOnSubmit(ti);
            db.SubmitChanges();
            return(ti);
        }
Example #6
0
        public static PaymentForm CreatePaymentForm(OnlineRegModel m)
        {
            var r = m.GetTransactionInfo();

            if (r == null)
            {
                return(null);
            }

            var pf = new PaymentForm
            {
                FormId             = Guid.NewGuid(),
                AmtToPay           = m.PayAmount() + (m.donation ?? 0),
                AskDonation        = m.AskDonation(),
                AllowCoupon        = !m.OnlineGiving(),
                PayBalance         = false,
                Amtdue             = m.TotalAmount() + (m.donation ?? 0),
                Donate             = m.donation,
                Description        = m.DescriptionForPayment,
                Email              = r.Email,
                First              = r.First,
                MiddleInitial      = r.Middle,
                Last               = r.Last,
                Suffix             = r.Suffix,
                IsLoggedIn         = m.UserPeopleId.HasValue,
                OrgId              = m.List[0].orgid,
                URL                = m.URL,
                testing            = m.testing ?? false,
                Terms              = m.Terms,
                Address            = r.Address,
                Address2           = r.Address2,
                City               = r.City,
                State              = r.State,
                Country            = r.Country,
                Zip                = r.Zip,
                Phone              = r.Phone,
                SupportMissionTrip = m.SupportMissionTrip,
                extTransactionId   = m.transactionId,
                ProcessType        = m.ProcessType,
#if DEBUG2
                CreditCard = "4111111111111111",
                CVV        = "123",
                Expires    = "1017",
                Routing    = "056008849",
                Account    = "12345678901234",
#endif
            };

            if (r.payinfo.PeopleId == m.UserPeopleId) // Is this the logged in user?
            {
                pf.CreditCard  = r.payinfo.MaskedCard;
                pf.Account     = r.payinfo.MaskedAccount;
                pf.Routing     = r.payinfo.Routing;
                pf.Expires     = r.payinfo.Expires;
                pf.SavePayInfo =
                    (r.payinfo.MaskedAccount != null && r.payinfo.MaskedAccount.StartsWith("X")) ||
                    (r.payinfo.MaskedCard != null && r.payinfo.MaskedCard.StartsWith("X"));
                pf.Type = r.payinfo.PreferredPaymentType;

                // if no preferred payment type pick credit card or ach if we have anything.
                if (string.IsNullOrWhiteSpace(pf.Type))
                {
                    pf.Type = !string.IsNullOrWhiteSpace(pf.CreditCard) ? PaymentType.CreditCard : null;
                }

                if (string.IsNullOrWhiteSpace(pf.Type))
                {
                    pf.Type = !string.IsNullOrWhiteSpace(pf.Account) ? PaymentType.Ach : null;
                }
            }

            ClearMaskedNumbers(pf, r.payinfo);

            pf.AllowSaveProgress    = m.AllowSaveProgress();
            pf.NoCreditCardsAllowed = m.NoCreditCardsAllowed();
            if (m.OnlineGiving())
            {
#if DEBUG
                pf.NoCreditCardsAllowed = false;
#else
                pf.NoCreditCardsAllowed = DbUtil.Db.Setting("NoCreditCardGiving", "false").ToBool();
#endif
                pf.IsGiving    = true;
                pf.FinanceOnly = true;
                pf.Type        = r.payinfo.PreferredGivingType;
            }
            else if (m.ManageGiving() || m.OnlinePledge())
            {
                pf.FinanceOnly = true;
            }
            if (pf.NoCreditCardsAllowed)
            {
                pf.Type = PaymentType.Ach; // bank account only
            }
            else if (pf.NoEChecksAllowed)
            {
                pf.Type = PaymentType.CreditCard; // credit card only
            }

            pf.Type    = pf.NoEChecksAllowed ? PaymentType.CreditCard : pf.Type;
            pf.DatumId = m.DatumId ?? 0;
            return(pf);
        }
Example #7
0
        private ActionResult RouteRegistration(OnlineRegModel m, int pid, bool? showfamily)
        {
            if(pid == 0)
                return View(m);
#if DEBUG
            m.DebugCleanUp();
#endif

            var link = RouteExistingRegistration(m, pid);
            if (link.HasValue())
                return Redirect(link);

            OnlineRegPersonModel p = null;
            if (showfamily != true)
            {
                // No need to pick family, so prepare first registrant ready to answer questions
                p = m.LoadExistingPerson(pid, 0);
                p.ValidateModelForFind(ModelState, 0);
                if (m.masterorg == null)
                {
                    if (m.List.Count == 0)
                        m.List.Add(p);
                    else
                        m.List[0] = p;
                }
            }
            if (!ModelState.IsValid)
            {
                m.Log("CannotProceed");
                return View(m);
            }

            link = RouteManageGivingSubscriptionsPledgeVolunteer(m);
            if(link.HasValue())
                if (m.ManageGiving()) // use Direct ActionResult instead of redirect
                    return ManageGiving(m.Orgid.ToString(), m.testing);
                else if (m.RegisterLinkMaster())
                    return Redirect(link);
                else
                    return Redirect(link);

            // check for forcing show family, master org, or not found
            if (showfamily == true || p.org == null || p.Found != true)
                return View(m);

            // ready to answer questions, make sure registration is ok to go
            m.Log("Authorized");
            if (!m.SupportMissionTrip)
                p.IsFilled = p.org.RegLimitCount(DbUtil.Db) >= p.org.Limit;
            if (p.IsFilled)
            {
                m.Log("Closed");
                ModelState.AddModelError(m.GetNameFor(mm => mm.List[0].Found), "Sorry, but registration is closed.");
            }

            p.FillPriorInfo();
            p.SetSpecialFee();

            m.HistoryAdd($"index, pid={pid}, !showfamily, p.org, found=true");
            return View(m);
        }
Example #8
0
        public Transaction CreateTransaction(CMSDataContext Db, decimal? amount = null, OnlineRegModel m = null)
        {
            if (!amount.HasValue)
                amount = AmtToPay;
            decimal? amtdue = null;
            if (Amtdue > 0)
                amtdue = Amtdue - (amount ?? 0);
            var ti = new Transaction
            {
                First = First,
                MiddleInitial = MiddleInitial.Truncate(1) ?? "",
                Last = Last,
                Suffix = Suffix,
                Donate = Donate,
                Regfees = AmtToPay,
                Amt = amount,
                Amtdue = amtdue,
                Emails = Email,
                Testing = testing,
                Description = Description,
                OrgId = OrgId,
                Url = URL,
                TransactionGateway = OnlineRegModel.GetTransactionGateway(),
                Address = Address.Truncate(50),
                Address2 = Address2.Truncate(50),
                City = City,
                State = State,
                Country = Country,
                Zip = Zip,
                DatumId = DatumId,
                Phone = Phone.Truncate(20),
                OriginalId = OriginalId,
                Financeonly = FinanceOnly,
                TransactionDate = DateTime.Now,
                PaymentType = Type,
                LastFourCC = Type == PaymentType.CreditCard ? CreditCard.Last(4) : null,
                LastFourACH = Type == PaymentType.Ach ? Account.Last(4) : null
            };

            Db.Transactions.InsertOnSubmit(ti);
            Db.SubmitChanges();
            if (OriginalId == null) // first transaction
                ti.OriginalId = ti.Id;
            return ti;
        }
Example #9
0
 public static string GetDescriptionForPayment(int? id)
 {
     try
     {
         var m = new OnlineRegModel(null, id, false, null, null, null);
         return m.DescriptionForPayment;
     }
     catch (Exception)
     {
         return null;
     }
 }
Example #10
0
 public OnlineRegPersonModel()
 {
     YesNoQuestion = new Dictionary<string, bool?>();
     FundItem = new Dictionary<int, decimal?>();
     Parent = HttpContext.Current.Items["OnlineRegModel"] as OnlineRegModel;
 }
Example #11
0
 public ActionResult AutoSaveProgress(OnlineRegModel m)
 {
     try { m.UpdateDatum(); }
     catch { }
     return Content(m.DatumId.ToString());
 }
Example #12
0
        public static PaymentForm CreatePaymentForm(OnlineRegModel m)
        {
            var r = m.GetTransactionInfo();
            if (r == null)
                return null;

            var pf = new PaymentForm
            {
                FormId = Guid.NewGuid(),
                AmtToPay = m.PayAmount() + (m.donation ?? 0),
                AskDonation = m.AskDonation(),
                AllowCoupon = !m.OnlineGiving(),
                PayBalance = false,
                Amtdue = m.TotalAmount() + (m.donation ?? 0),
                Donate = m.donation,
                Description = m.DescriptionForPayment,
                Email = r.Email,
                First = r.First,
                MiddleInitial = r.Middle,
                Last = r.Last,
                Suffix = r.Suffix,
                IsLoggedIn = m.UserPeopleId.HasValue,
                OrgId = m.List[0].orgid,
                URL = m.URL,
                testing = m.testing ?? false,
                Terms = m.Terms,
                Address = r.Address,
                Address2 = r.Address2,
                City = r.City,
                State = r.State,
                Country = r.Country,
                Zip = r.Zip,
                Phone = r.Phone
#if DEBUG2
                 CreditCard = "4111111111111111",
                 CVV = "123",
                 Expires = "1017",
                 Routing = "056008849",
                 Account = "12345678901234"
#endif
            };
            if (r.payinfo.PeopleId == m.UserPeopleId) // Is this the logged in user?
            {
                pf.CreditCard = r.payinfo.MaskedCard;
                pf.Account = r.payinfo.MaskedAccount;
                pf.Routing = r.payinfo.Routing;
                pf.Expires = r.payinfo.Expires;
                pf.SavePayInfo =
                    (r.payinfo.MaskedAccount != null && r.payinfo.MaskedAccount.StartsWith("X"))
                    || (r.payinfo.MaskedCard != null && r.payinfo.MaskedCard.StartsWith("X"));
                pf.Type = r.payinfo.PreferredPaymentType;
            }

            ClearMaskedNumbers(pf, r.payinfo);

            pf.AllowSaveProgress = m.AllowSaveProgress();
            pf.NoCreditCardsAllowed = m.NoCreditCardsAllowed();
            if (m.OnlineGiving())
            {
#if DEBUG
                pf.NoCreditCardsAllowed = false;
#else
                pf.NoCreditCardsAllowed = DbUtil.Db.Setting("NoCreditCardGiving", "false").ToBool();
#endif
                pf.IsGiving = true;
                pf.FinanceOnly = true;
                pf.Type = r.payinfo.PreferredGivingType;
            }
            else if (m.ManageGiving() || m.OnlinePledge())
            {
                pf.FinanceOnly = true;
            }
            if (pf.NoCreditCardsAllowed)
                pf.Type = PaymentType.Ach; // bank account only
            else if (pf.NoEChecksAllowed)
                pf.Type = PaymentType.CreditCard; // credit card only
            pf.Type = pf.NoEChecksAllowed ? PaymentType.CreditCard : pf.Type;
            pf.DatumId = m.DatumId ?? 0;
            return pf;
        }
Example #13
0
        public ActionResult RegisterLinkMaster(int id)
        {
            var pid = TempData["PeopleId"] as int?;
            ViewBag.Token = TempData["token"];

            var m = new OnlineRegModel {Orgid = id};
            if (User.Identity.IsAuthenticated)
                return View(otherRegisterlinkmaster, m);

            if (pid == null)
                return Message("Must start with a registerlink");

            SetHeaders(id.ToInt());
            return View(otherRegisterlinkmaster, m);
        }
Example #14
0
        public Transaction ProcessPaymentTransaction(OnlineRegModel m)
        {
            var ti = (m?.Transaction != null)
                ? CreateTransaction(CurrentDatabase, m.Transaction, AmtToPay)
                : CreateTransaction(CurrentDatabase);

            int?pid = null;

            if (m != null)
            {
                m.ParseSettings();

                pid = m.UserPeopleId;
                if (m.TranId == null)
                {
                    m.TranId = ti.Id;
                }
            }

            if (!pid.HasValue)
            {
                var pds = CurrentDatabase.FindPerson(First, Last, null, Email, Phone);
                if (pds.Count() == 1)
                {
                    pid = pds.Single().PeopleId.Value;
                }
            }

            TransactionResponse tinfo;
            var processType = m?.ProcessType ?? PaymentProcessTypes.OnlineRegistration;
            var gw          = CurrentDatabase.Gateway(testing, null, processType);

            if (SavePayInfo)
            {
                tinfo = gw.PayWithVault(pid ?? 0, AmtToPay ?? 0, Description, ti.Id, Type);
            }
            else
            {
                tinfo = Type == PaymentType.Ach
                    ? PayWithCheck(gw, pid, ti)
                    : PayWithCreditCard(gw, pid, ti);
            }

            ti.TransactionId = tinfo.TransactionId;

            ti.Testing = CheckIfIsGatewayTesting(ti.Testing.GetValueOrDefault(), processType);

            if (ti.Testing.GetValueOrDefault() && !ti.TransactionId.Contains("(testing)"))
            {
                ti.TransactionId += "(testing)";
            }

            ti.Approved         = tinfo.Approved;
            transactionApproved = tinfo.Approved;

            if (!ti.Approved.GetValueOrDefault())
            {
                ti.Amtdue += ti.Amt;
                if (m != null && m.OnlineGiving())
                {
                    ti.Amtdue = 0;
                }
            }

            ti.Message         = tinfo.Message;
            ti.AuthCode        = tinfo.AuthCode;
            ti.TransactionDate = Util.Now;

            CurrentDatabase.SubmitChanges();
            return(ti);
        }
Example #15
0
        private ActionResult RouteSpecialLogin(OnlineRegModel m)
        {
            if (Util.UserPeopleId == null)
                throw new Exception("Util.UserPeopleId is null on login");

            var link = RouteExistingRegistration(m);
            if(link.HasValue())
                return Redirect(link);

            m.CreateAnonymousList();
            m.UserPeopleId = Util.UserPeopleId;

            if (m.OnlineGiving())
            {
                m.Log("Login OnlineGiving");
                return RegisterFamilyMember(Util.UserPeopleId.Value, m);
            }

            link = RouteManageGivingSubscriptionsPledgeVolunteer(m);
            if (link.HasValue())
                return Content(link); // this will be used for a redirect in javascript

            return null;
        }
Example #16
0
        public Transaction CreateTransaction(CMSDataContext Db, decimal?amount = null, OnlineRegModel m = null)
        {
            if (!amount.HasValue)
            {
                amount = AmtToPay;
            }
            decimal?amtdue = null;

            if (Amtdue > 0)
            {
                amtdue = Amtdue - (amount ?? 0);
            }
            var ti = new Transaction
            {
                First              = First,
                MiddleInitial      = MiddleInitial.Truncate(1) ?? "",
                Last               = Last,
                Suffix             = Suffix,
                Donate             = Donate,
                Regfees            = AmtToPay,
                Amt                = amount,
                Amtdue             = amtdue,
                Emails             = Email,
                Testing            = testing,
                Description        = Description,
                OrgId              = OrgId,
                Url                = URL,
                TransactionGateway = OnlineRegModel.GetTransactionGateway(),
                Address            = Address.Truncate(50),
                Address2           = Address2.Truncate(50),
                City               = City,
                State              = State,
                Country            = Country,
                Zip                = Zip,
                DatumId            = DatumId,
                Phone              = Phone.Truncate(20),
                OriginalId         = OriginalId,
                Financeonly        = FinanceOnly,
                TransactionDate    = DateTime.Now,
                PaymentType        = Type,
                LastFourCC         = Type == PaymentType.CreditCard ? CreditCard.Last(4) : null,
                LastFourACH        = Type == PaymentType.Ach ? Account.Last(4) : null
            };

            Db.Transactions.InsertOnSubmit(ti);
            Db.SubmitChanges();
            if (OriginalId == null) // first transaction
            {
                ti.OriginalId = ti.Id;
            }
            return(ti);
        }
Example #17
0
        public Transaction ProcessPaymentTransaction(OnlineRegModel m)
        {
            var ti = (m?.Transaction != null)
                ? CreateTransaction(DbUtil.Db, m.Transaction, AmtToPay)
                : CreateTransaction(DbUtil.Db);

            int? pid = null;
            if (m != null)
            {
                m.ParseSettings();

                pid = m.UserPeopleId;
                if (m.TranId == null)
                    m.TranId = ti.Id;
            }

            if (!pid.HasValue)
            {
                var pds = DbUtil.Db.FindPerson(First, Last, null, Email, Phone);
                if (pds.Count() == 1)
                    pid = pds.Single().PeopleId.Value;
            }

            TransactionResponse tinfo;
            var gw = DbUtil.Db.Gateway(testing);

            if (SavePayInfo)
                tinfo = gw.PayWithVault(pid ?? 0, AmtToPay ?? 0, Description, ti.Id, Type);
            else
            {
                tinfo = Type == PaymentType.Ach
                    ? PayWithCheck(gw, pid, ti)
                    : PayWithCreditCard(gw, pid, ti);
            }

            ti.TransactionId = tinfo.TransactionId;

            if (ti.Testing.GetValueOrDefault() && !ti.TransactionId.Contains("(testing)"))
                ti.TransactionId += "(testing)";

            ti.Approved = tinfo.Approved;

            if (!ti.Approved.GetValueOrDefault())
            {
                ti.Amtdue += ti.Amt;
                if (m != null && m.OnlineGiving())
                    ti.Amtdue = 0;
            }

            ti.Message = tinfo.Message;
            ti.AuthCode = tinfo.AuthCode;
            ti.TransactionDate = DateTime.Now;

            DbUtil.Db.SubmitChanges();
            return ti;
        }
Example #18
0
        public RouteModel ProcessPayment(ModelStateDictionary modelState, OnlineRegModel m)
        {
            PreventNegatives();
            PreventZero(modelState);
            if (!modelState.IsValid)
                return RouteModel.ProcessPayment();

            try
            {
                ValidatePaymentForm(modelState);
                if (!modelState.IsValid)
                    return RouteModel.ProcessPayment();

                if (m?.UserPeopleId != null && m.UserPeopleId > 0)
                    CheckStoreInVault(modelState, m.UserPeopleId.Value);
                if (!modelState.IsValid)
                    return RouteModel.ProcessPayment();

                var ti = ProcessPaymentTransaction(m);

                if (ti.Approved == false)
                {
                    modelState.AddModelError("form", ti.Message);
                    return RouteModel.ProcessPayment();
                }

                HttpContext.Current.Session["FormId"] = FormId;
                if (m != null)
                {
                    m.DatumId = DatumId; // todo: not sure this is necessary
                    return m.FinishRegistration(ti);
                }

                OnlineRegModel.ConfirmDuePaidTransaction(ti, ti.TransactionId, true);

                return RouteModel.AmountDue(AmountDueTrans(DbUtil.Db, ti), ti);
            }
            catch (Exception ex)
            {
                ErrorSignal.FromCurrentContext().Raise(ex);
                modelState.AddModelError("form", ex.Message);
                return RouteModel.ProcessPayment();
            }
        }
Example #19
0
        public RouteModel ProcessPayment(ModelStateDictionary modelState, OnlineRegModel m)
        {
            if (m != null && m.email.HasValue() && !Util.ValidEmail(m.email))
            {
                modelState.AddModelError("form", "Invalid email address");
                return(RouteModel.Invalid("Payment/Process", "Invalid email address"));
            }
            PreventNegatives();
            PreventZero(modelState);
            if (!modelState.IsValid)
            {
                return(RouteModel.ProcessPayment());
            }

            try
            {
                if (!modelState.IsValid)
                {
                    return(RouteModel.ProcessPayment());
                }

                ValidatePaymentForm(modelState);
                if (!modelState.IsValid)
                {
                    return(RouteModel.ProcessPayment());
                }

                if (m?.UserPeopleId != null && m.UserPeopleId > 0)
                {
                    CheckStoreInVault(modelState, m.UserPeopleId.Value);
                }

                if (!modelState.IsValid)
                {
                    return(RouteModel.ProcessPayment());
                }

                var ti = ProcessPaymentTransaction(m);

                if (ti.Approved == false)
                {
                    modelState.AddModelError("form", ti.Message);
                    return(RouteModel.ProcessPayment());
                }

                HttpContextFactory.Current.Session["FormId"] = FormId;
                if (m != null)
                {
                    m.DatumId = DatumId; // todo: not sure this is necessary
                    return(m.FinishRegistration(ti));
                }

                OnlineRegModel.ConfirmDuePaidTransaction(ti, ti.TransactionId, true);

                return(RouteModel.AmountDue(AmountDueTrans(CurrentDatabase, ti), ti));
            }
            catch (Exception ex)
            {
                string errorMessage = ValidateTransactionApproved(transactionApproved, ex.Message);

                errorMessage = ValidateVaultId(ex, modelState);

                modelState.AddModelError("form", errorMessage);
                return(RouteModel.ProcessPayment());
            }
        }
Example #20
0
 public void SetHeaders(OnlineRegModel m2)
 {
     Session["gobackurl"] = m2.URL;
     SetHeaders2(m2.Orgid ?? m2.masterorgid ?? 0);
 }