示例#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"));
        }
示例#2
0
 public void UpdateDatum(bool completed = false, bool abandoned = false)
 {
     if (DatumId.HasValue)
     {
         Datum = DbUtil.Db.RegistrationDatas.Single(dd => dd.Id == DatumId);
     }
     else
     {
         Datum = new RegistrationDatum
         {
             OrganizationId = masterorgid ?? orgid,
             UserPeopleId   = UserPeopleId,
             Stamp          = Util.Now
         };
         DbUtil.Db.RegistrationDatas.InsertOnSubmit(Datum);
         DbUtil.Db.SubmitChanges();
         DatumId = Datum.Id;
     }
     Datum.Data = Util.Serialize <OnlineRegModel>(this);
     if (completed)
     {
         Datum.Completed = true;
     }
     if (abandoned)
     {
         Datum.Abandoned = true;
     }
     DbUtil.Db.SubmitChanges();
 }
示例#3
0
        private async Task <ActionResult> RegistrationProcess(string paymentToken, string rf)
        {
            var rf1     = rf.Split('-');
            var datumId = Int32.Parse(rf1[0]);
            var amtDue  = Decimal.Parse(rf1[1]);

            OnlineRegModel    m     = new OnlineRegModel(CurrentDatabase);
            RegistrationDatum datum = CurrentDatabase.RegistrationDatas.SingleOrDefault(d => d.Id == datumId);

            if (datum == null)
            {
                throw new Exception("Datum not found");
            }

            m = Util.DeSerialize <OnlineRegModel>(datum.Data);
            m.CurrentDatabase = CurrentDatabase;
            PaymentForm pf = PaymentForm.CreatePaymentForm(m);

            var     merchantHandle = GetMerchantHandle(pf.OrgId.Value);
            Payment payment        = await _pushpayPayment.GetPayment(paymentToken, merchantHandle);

            if (_resolver.TransactionAlreadyImported(payment))
            {
                ViewBag.Message = "Payment already processed";
                return(View("~/Views/Shared/PageError.cshtml"));
            }

            m.transactionId = CreateTransaction(payment, pf, amtDue, m.Transaction);
            m.UpdateDatum();

            return(Redirect($"/OnlineReg/ProcessExternalPayment/dat_{datumId}"));
        }
示例#4
0
        //[Route("~/Pushpay/Registration/{DatumId:int}")]
        public async Task <ActionResult> Registration(PaymentForm pf)
        {
            OnlineRegModel    m     = new OnlineRegModel(CurrentDatabase);
            RegistrationDatum datum = CurrentDatabase.RegistrationDatas.SingleOrDefault(d => d.Id == pf.DatumId);

            if (datum == null)
            {
                ViewBag.Message = "Something went wrong";
                CurrentDatabase.LogActivity($"No datum found with id: {pf.DatumId}");
                return(View("~/Views/Shared/PageError.cshtml"));
            }

            decimal?Amount = pf.AmtToPay;
            var     mobile = CurrentDatabase.People.SingleOrDefault(p => p.PeopleId == m.UserPeopleId)?.CellPhone;
            var     org    = CurrentDatabase.Organizations.SingleOrDefault(o => o.OrganizationId == pf.OrgId);

            if (org == null)
            {
                ViewBag.Message = "Something went wrong";
                CurrentDatabase.LogActivity($"No org found with id: {pf.OrgId}");
                return(View("~/Views/Shared/PageError.cshtml"));
            }

            var fundName = await _resolver.GetOrgFund(CurrentDatabase.CreateRegistrationSettings(pf.OrgId.Value).PushpayFundName);

            var merchantHandle = GetMerchantHandle(pf.OrgId.Value);

            return(Redirect($"{_givingLink}{merchantHandle}?ru={_ru}&sr=re_{_state}_{pf.DatumId}-{pf.Amtdue}&rcv=false&r=no&up={mobile}&a={Amount}&fnd={fundName}&al=true&fndv=lock"));
        }
示例#5
0
        private async Task <ActionResult> RegistrationProcess(string paymentToken, int datumId)
        {
            OnlineRegModel    m     = new OnlineRegModel();
            RegistrationDatum datum = CurrentDatabase.RegistrationDatas.SingleOrDefault(d => d.Id == datumId);

            m = Util.DeSerialize <OnlineRegModel>(datum.Data);
            PaymentForm pf = PaymentForm.CreatePaymentForm(m);

            Payment payment = await _pushpayPayment.GetPayment(paymentToken);

            m.transactionId = CreateTransaction(payment, pf);

            m.UpdateDatum();
            return(Redirect($"/OnlineReg/ProcessExternalPayment/dat_{datumId}"));
        }
示例#6
0
        public void UpdateDatum(bool completed = false, bool abandoned = false)
        {
            if (DatumId.HasValue)
            {
                Datum = CurrentDatabase.RegistrationDatas.Single(dd => dd.Id == DatumId);
                Datum.UserPeopleId = UserPeopleId;
            }
            else
            {
                // Don't create a new Datum if there is no data yet.
                if (List.Count == 0)
                {
                    return;
                }

                var p = FirstRegistrant;
                if (List.Count > 0 && !p.FirstName.HasValue() && !p.LastName.HasValue() && p.EmailAddress.HasValue())
                {
                    return;
                }

                Datum = new RegistrationDatum
                {
                    OrganizationId = masterorgid ?? _orgid,
                    UserPeopleId   = UserPeopleId,
                    Stamp          = Util.Now
                };
                CurrentDatabase.RegistrationDatas.InsertOnSubmit(Datum);
                CurrentDatabase.SubmitChanges();
                DatumId = Datum.Id;
            }
            Datum.Data = Util.Serialize <OnlineRegModel>(this);
            if (completed)
            {
                Datum.Completed = true;
            }

            if (abandoned)
            {
                Datum.Abandoned = true;
            }
            CurrentDatabase.SubmitChanges();
        }
示例#7
0
        public ActionResult ProcessExternalPayment(string reference)
        {
            PaymentForm pf = new PaymentForm()
            {
                extTransactionId = 0
            };

            if (reference.Substring(0, 3) == "dat")
            {
                RegistrationDatum datum = CurrentDatabase.RegistrationDatas.SingleOrDefault(d => d.Id == Int32.Parse(reference.Substring(4)));
                OnlineRegModel    m     = Util.DeSerialize <OnlineRegModel>(datum.Data);
                pf = PaymentForm.CreatePaymentForm(m);
            }
            if (reference.Substring(0, 3) == "tra")
            {
                pf.extTransactionId = Int32.Parse(reference.Substring(4));
            }

            return(ProcessPayment(pf));
        }
示例#8
0
        public ActionResult Registration(int DatumId)
        {
            OnlineRegModel    m      = new OnlineRegModel();
            decimal?          Amount = 0;
            string            mobile = string.Empty;
            RegistrationDatum datum  = CurrentDatabase.RegistrationDatas.SingleOrDefault(d => d.Id == DatumId);

            if (datum != null)
            {
                m = Util.DeSerialize <OnlineRegModel>(datum.Data);
                var pf = PaymentForm.CreatePaymentForm(m);
                //Needs to redirect in case cupons are enable.
                Amount = pf.AmtToPay;
                mobile = CurrentDatabase.People.SingleOrDefault(p => p.PeopleId == m.UserPeopleId)?.CellPhone;
            }
            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}&al=true&fndv=lock"));
        }