Beispiel #1
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());
            }
        }
Beispiel #2
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());
            }
        }