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