public ActionResult AddAnotherPerson(OnlineRegModel m) { m.HistoryAdd("AddAnotherPerson"); m.ParseSettings(); if (!ModelState.IsValid) { return(FlowList(m, "AddAnotherPerson")); } #if DEBUG2 m.List.Add(new OnlineRegPersonModel { guid = Guid.NewGuid(), divid = m.divid, orgid = m.orgid, masterorgid = m.masterorgid, first = "Bethany", last = "Carroll", //bmon = 1, //bday = 29, //byear = 1987, dob = "1/29/87", email = "*****@*****.**", phone = "9017581862".FmtFone(), LoggedIn = m.UserPeopleId.HasValue, }); #else m.List.Add(new OnlineRegPersonModel { orgid = m.Orgid, masterorgid = m.masterorgid, LoggedIn = m.UserPeopleId.HasValue, }); #endif return(FlowList(m, "AddAnotherPerson")); }
public ActionResult AddAnotherPerson(OnlineRegModel m) { fromMethod = "AddAnotherPerson"; m.HistoryAdd("AddAnotherPerson"); m.ParseSettings(); if (!ModelState.IsValid) return FlowList(m); m.List.Add(new OnlineRegPersonModel { orgid = m.Orgid, masterorgid = m.masterorgid, }); return FlowList(m); }
public ActionResult AddAnotherPerson(OnlineRegModel m) { fromMethod = "AddAnotherPerson"; m.HistoryAdd("AddAnotherPerson"); m.ParseSettings(); if (!ModelState.IsValid) { return(FlowList(m)); } m.List.Add(new OnlineRegPersonModel { orgid = m.Orgid, masterorgid = m.masterorgid, }); return(FlowList(m)); }
public ActionResult AddAnotherPerson(OnlineRegModel m) { fromMethod = "AddAnotherPerson"; m.HistoryAdd("AddAnotherPerson"); m.ParseSettings(); if (!ModelState.IsValid) return FlowList(m); m.List.Add(new OnlineRegPersonModel { orgid = m.Orgid, masterorgid = m.masterorgid, #if DEBUG FirstName = "Delaine", LastName = "Carroll", EmailAddress = "*****@*****.**" #endif }); return FlowList(m); }
public ActionResult AddAnotherPerson(OnlineRegModel m) { fromMethod = "AddAnotherPerson"; m.HistoryAdd("AddAnotherPerson"); m.ParseSettings(); if (!ModelState.IsValid) { return(FlowList(m)); } m.List.Add(new OnlineRegPersonModel { orgid = m.Orgid, masterorgid = m.masterorgid, #if DEBUG FirstName = "Delaine", LastName = "Carroll", EmailAddress = "*****@*****.**" #endif }); return(FlowList(m)); }
public ActionResult AddAnotherPerson(OnlineRegModel m) { var ret = m.CheckExpiredOrCompleted(); if (ret.HasValue()) { return(PageMessage(ret)); } fromMethod = "AddAnotherPerson"; m.HistoryAdd("AddAnotherPerson"); m.ParseSettings(); if (!ModelState.IsValid) { return(FlowList(m)); } m.List.Add(new OnlineRegPersonModel { orgid = m.Orgid, masterorgid = m.masterorgid, }); return(FlowList(m)); }
public ActionResult ApplyCoupon(PaymentForm pf) { OnlineRegModel m = null; if (pf.PayBalance == false) { m = OnlineRegModel.GetRegistrationFromDatum(pf.DatumId); if (m == null) { return(Json(new { error = "coupon not find your registration" })); } m.ParseSettings(); } if (!pf.Coupon.HasValue()) { return(Json(new { error = "empty coupon" })); } var coupon = pf.Coupon.ToUpper().Replace(" ", ""); var admincoupon = DbUtil.Db.Setting("AdminCoupon", "ifj4ijweoij").ToUpper().Replace(" ", ""); if (coupon == admincoupon) { if (pf.PayBalance) { var tic = pf.CreateTransaction(DbUtil.Db, pf.AmtToPay); return(Json(new { confirm = $"/onlinereg/ConfirmDuePaid/{tic.Id}?TransactionID=AdminCoupon&Amount={tic.Amt}" })); } else { return(Json(new { confirm = $"/OnlineReg/Confirm/{pf.DatumId}?TransactionId=AdminCoupon" })); } } var c = DbUtil.Db.Coupons.SingleOrDefault(cp => cp.Id == coupon); if (c == null) { return(Json(new { error = "coupon not found" })); } if (pf.OrgId.HasValue && c.Organization != null && c.Organization.OrgPickList.HasValue()) { var a = c.Organization.OrgPickList.SplitStr(",").Select(ss => ss.ToInt()).ToArray(); if (!a.Contains(pf.OrgId.Value)) { return(Json(new { error = "coupon and org do not match" })); } } else if (pf.OrgId != c.OrgId) { return(Json(new { error = "coupon and org do not match" })); } if (c.Used.HasValue && c.Id.Length == 12) { return(Json(new { error = "coupon already used" })); } if (c.Canceled.HasValue) { return(Json(new { error = "coupon canceled" })); } var ti = pf.CreateTransaction(DbUtil.Db, Math.Min(c.Amount ?? 0m, pf.AmtToPay ?? 0m)); if (m != null) // Start this transaction in the chain { m.HistoryAdd("ApplyCoupon"); m.TranId = ti.OriginalId; m.UpdateDatum(); } var tid = $"Coupon({Util.fmtcoupon(coupon):n2})"; if (!pf.PayBalance) { OnlineRegModel.ConfirmDuePaidTransaction(ti, tid, false); } var msg = $"<i class='red'>Your coupon for {c.Amount:n2} has been applied, your balance is now {ti.Amtdue:n2}</i>."; if (ti.Amt < pf.AmtToPay) { msg += "You still must complete this transaction with a payment"; } if (m != null) { m.UseCoupon(ti.TransactionId, ti.Amt ?? 0); } else { c.UseCoupon(ti.FirstTransactionPeopleId(), ti.Amt ?? 0); } DbUtil.Db.SubmitChanges(); if (pf.PayBalance) { return(Json(new { confirm = $"/onlinereg/ConfirmDuePaid/{ti.Id}?TransactionID=Coupon({Util.fmtcoupon(coupon)})&Amount={ti.Amt}" })); } pf.AmtToPay -= ti.Amt; if (pf.AmtToPay <= 0) { return(Json(new { confirm = $"/OnlineReg/Confirm/{pf.DatumId}?TransactionId={"Coupon"}" })); } return(Json(new { tiamt = pf.AmtToPay, amtdue = ti.Amtdue, amt = pf.AmtToPay.ToString2("N2"), msg })); }
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 ApplyCoupon(PaymentForm pf) { OnlineRegModel m = null; ExtraDatum ed = null; if (pf.PayBalance == false) { ed = DbUtil.Db.ExtraDatas.SingleOrDefault(e => e.Id == pf.DatumId); m = Util.DeSerialize <OnlineRegModel>(ed.Data); m.ParseSettings(); } if (!pf.Coupon.HasValue()) { return(Json(new { error = "empty coupon" })); } string coupon = pf.Coupon.ToUpper().Replace(" ", ""); string admincoupon = DbUtil.Db.Setting("AdminCoupon", "ifj4ijweoij").ToUpper().Replace(" ", ""); if (coupon == admincoupon) { return(Json(new { confirm = "/onlinereg/Confirm/{0}?TransactionID=Coupon(Admin)".Fmt(pf.DatumId) })); } var c = DbUtil.Db.Coupons.SingleOrDefault(cp => cp.Id == coupon); if (c == null) { return(Json(new { error = "coupon not found" })); } if (pf.OrgId.HasValue && c.Organization != null && c.Organization.OrgPickList.HasValue()) { var a = c.Organization.OrgPickList.SplitStr(",").Select(ss => ss.ToInt()).ToArray(); if (!a.Contains(pf.OrgId.Value)) { return(Json(new { error = "coupon and org do not match" })); } } else if (pf.OrgId != c.OrgId) { return(Json(new { error = "coupon and org do not match" })); } if (c.Used.HasValue && c.Id.Length == 12) { return(Json(new { error = "coupon already used" })); } if (c.Canceled.HasValue) { return(Json(new { error = "coupon canceled" })); } var ti = pf.CreateTransaction(DbUtil.Db, c.Amount); if (m != null) // Start this transaction in the chain { m.TranId = ti.OriginalId; ed.Data = Util.Serialize <OnlineRegModel>(m); } var tid = "Coupon({0:n2})".Fmt(Util.fmtcoupon(coupon)); if (!pf.PayBalance) { ConfirmDuePaidTransaction(ti, tid, sendmail: false); } var msg = "<i class='red'>Your coupon for {0:n2} has been applied, your balance is now {1:n2}</i>." .Fmt(c.Amount, ti.Amtdue); if (ti.Amt < pf.AmtToPay) { msg += "You still must complete this transaction with a payment"; } if (m != null) { m.UseCoupon(ti.TransactionId, ti.Amt ?? 0); } else { c.UseCoupon(ti.FirstTransactionPeopleId(), ti.Amt ?? 0); } DbUtil.Db.SubmitChanges(); if (pf.PayBalance) { return(Json(new { confirm = "/onlinereg/ConfirmDuePaid/{0}?TransactionID=Coupon({1})&Amount={2}".Fmt(ti.Id, Util.fmtcoupon(coupon), ti.Amt) })); } pf.AmtToPay -= ti.Amt; if (pf.AmtToPay <= 0) { return(Json(new { confirm = "/OnlineReg/Confirm/{0}?TransactionId={1}".Fmt(pf.DatumId, "Coupon") })); } return(Json(new { tiamt = pf.AmtToPay, amtdue = ti.Amtdue, amt = pf.AmtToPay.ToString2("N2"), msg })); }
private ConfirmEnum ConfirmTransaction(OnlineRegModel m, string TransactionID) { m.ParseSettings(); if (m.List.Count == 0) { throw new Exception(" unexpected, no registrants found in confirmation"); } var ret = ConfirmEnum.Confirm; var managingsubs = m.ManagingSubscriptions(); var choosingslots = m.ChoosingSlots(); var t = m.Transaction; if (t == null && !managingsubs && !choosingslots) { m.History.Add("ConfirmTransaction"); m.UpdateDatum(completed: true); var pf = PaymentForm.CreatePaymentForm(m); t = pf.CreateTransaction(DbUtil.Db); m.TranId = t.Id; } if (t != null) { ViewBag.message = t.Message; } if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.CreateAccount) { m.List[0].CreateAccount(); ret = ConfirmEnum.ConfirmAccount; } else if (m.OnlineGiving()) { var p = m.List[0]; if (p.IsNew) { p.AddPerson(null, p.org.EntryPointId ?? 0); } var staff = DbUtil.Db.StaffPeopleForOrg(p.org.OrganizationId)[0]; var text = p.setting.Body.Replace("{church}", DbUtil.Db.Setting("NameOfChurch", "church"), ignoreCase: true); text = text.Replace("{amt}", (t.Amt ?? 0).ToString("N2")); text = text.Replace("{date}", DateTime.Today.ToShortDateString()); text = text.Replace("{tranid}", t.Id.ToString()); text = text.Replace("{name}", p.person.Name); text = text.Replace("{account}", ""); text = text.Replace("{email}", p.person.EmailAddress); text = text.Replace("{phone}", p.person.HomePhone.FmtFone()); text = text.Replace("{contact}", staff.Name); text = text.Replace("{contactemail}", staff.EmailAddress); text = text.Replace("{contactphone}", p.org.PhoneNumber.FmtFone()); var re = new Regex(@"(?<b>.*?)<!--ITEM\sROW\sSTART-->(?<row>.*?)\s*<!--ITEM\sROW\sEND-->(?<e>.*)", RegexOptions.Singleline | RegexOptions.IgnorePatternWhitespace); var match = re.Match(text); var b = match.Groups["b"].Value; var row = match.Groups["row"].Value.Replace("{funditem}", "{0}").Replace("{itemamt}", "{1:N2}"); var e = match.Groups["e"].Value; var sb = new StringBuilder(b); var desc = "{0}; {1}; {2}".Fmt( p.person.Name, p.person.PrimaryAddress, p.person.PrimaryZip); foreach (var g in p.FundItemsChosen()) { if (g.amt > 0) { sb.AppendFormat(row, g.desc, g.amt); p.person.PostUnattendedContribution(DbUtil.Db, g.amt, g.fundid, desc, tranid: t.Id); } } t.TransactionPeople.Add(new TransactionPerson { PeopleId = p.person.PeopleId, Amt = t.Amt, OrgId = m.Orgid, }); t.Financeonly = true; if (t.Donate > 0) { var fundname = DbUtil.Db.ContributionFunds.Single(ff => ff.FundId == p.setting.DonationFundId).FundName; sb.AppendFormat(row, fundname, t.Donate); t.Fund = p.setting.DonationFund(); p.person.PostUnattendedContribution(DbUtil.Db, t.Donate ?? 0, p.setting.DonationFundId, desc, tranid: t.Id); } sb.Append(e); if (!t.TransactionId.HasValue()) { t.TransactionId = TransactionID; if (m.testing == true && !t.TransactionId.Contains("(testing)")) { t.TransactionId += "(testing)"; } } var contributionemail = (from ex in p.person.PeopleExtras where ex.Field == "ContributionEmail" select ex.Data).SingleOrDefault(); if (contributionemail.HasValue()) { contributionemail = (contributionemail ?? "").Trim(); } if (!Util.ValidEmail(contributionemail)) { contributionemail = p.person.FromEmail; } Util.SendMsg(Util.SysFromEmail, Util.Host, Util.TryGetMailAddress(DbUtil.Db.StaffEmailForOrg(p.org.OrganizationId)), p.setting.Subject, sb.ToString(), Util.EmailAddressListFromString(contributionemail), 0, p.PeopleId); DbUtil.Db.Email(contributionemail, DbUtil.Db.StaffPeopleForOrg(p.org.OrganizationId), "online giving contribution received", "see contribution records for {0} ({1})".Fmt(p.person.Name, p.PeopleId)); if (p.CreatingAccount == true) { p.CreateAccount(); } } else if (managingsubs) { m.ConfirmManageSubscriptions(); ret = ConfirmEnum.ConfirmAccount; } else if (choosingslots) { m.ConfirmPickSlots(); m.URL = null; ViewBag.ManagingVolunteer = true; ViewBag.CreatedAccount = m.List[0].CreatingAccount; ret = ConfirmEnum.ConfirmAccount; } else if (m.OnlinePledge()) { m.SendLinkForPledge(); ViewBag.CreatedAccount = m.List[0].CreatingAccount; ret = ConfirmEnum.ConfirmAccount; } else if (m.ManageGiving()) { m.SendLinkToManageGiving(); ret = ConfirmEnum.ConfirmAccount; } else if (t.TransactionGateway.ToLower() == "serviceu") { t.TransactionId = TransactionID; if (m.testing == true && !t.TransactionId.Contains("(testing)")) { t.TransactionId += "(testing)"; } t.Message = "Transaction Completed"; t.Approved = true; m.EnrollAndConfirm(); if (m.List.Any(pp => pp.PeopleId == null)) { LogOutOfOnlineReg(); throw new Exception("no person"); } m.UseCoupon(t.TransactionId, t.Amt ?? 0); } else { if (!t.TransactionId.HasValue()) { t.TransactionId = TransactionID; if (m.testing == true && !t.TransactionId.Contains("(testing)")) { t.TransactionId += "(testing)"; } } m.EnrollAndConfirm(); if (m.List.Any(pp => pp.PeopleId == null)) { LogOutOfOnlineReg(); throw new Exception("no person"); } m.UseCoupon(t.TransactionId, t.Amt ?? 0); } if (m.IsCreateAccount() || m.ManagingSubscriptions()) { m.email = m.List[0].person.EmailAddress; } else { m.email = m.List[0].EmailAddress; } ViewBag.email = m.email; if (m.masterorgid.HasValue && m.Orgid.HasValue && !m.settings[m.Orgid.Value].Subject.HasValue()) { ViewBag.orgname = m.masterorg.OrganizationName; } else { ViewBag.orgname = m.org != null ? m.org.OrganizationName : m.masterorg.OrganizationName; } LogOutOfOnlineReg(); return(ret); }
private Transaction ProcessPaymentTransaction(OnlineRegModel m, PaymentForm pf) { Transaction ti = null; if (m != null && m.Transaction != null) { ti = PaymentForm.CreateTransaction(DbUtil.Db, m.Transaction, pf.AmtToPay); } else { ti = pf.CreateTransaction(DbUtil.Db); } int?pid = null; if (m != null) { m.ParseSettings(); var terms = Util.PickFirst(m.Terms, ""); if (terms.HasValue()) { ViewData["Terms"] = terms; } pid = m.UserPeopleId; if (m.TranId == null) { m.TranId = ti.Id; } } if (!pid.HasValue) { var pds = DbUtil.Db.FindPerson(pf.First, pf.Last, null, pf.Email, pf.Phone); if (pds.Count() == 1) { pid = pds.Single().PeopleId.Value; } } TransactionResponse tinfo; var gateway = OnlineRegModel.GetTransactionGateway(); if (gateway == "authorizenet") { if (pf.SavePayInfo) { var anet = new AuthorizeNet(DbUtil.Db, pf.testing); tinfo = anet.createCustomerProfileTransactionRequest( pid ?? 0, pf.AmtToPay ?? 0, pf.Description, pf.TranId ?? 0); } else if (pf.Type == "B") { tinfo = OnlineRegModel.PostECheck( pf.Routing, pf.Account, pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.First, pf.Last, pf.Address, pf.City, pf.State, pf.Zip, pf.testing); } else { tinfo = OnlineRegModel.PostTransaction( pf.CreditCard, pf.CCV, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.Email, pf.First, pf.Last, pf.Address, pf.City, pf.State, pf.Zip, pf.testing); } } else if (gateway == "sage") { if (pf.SavePayInfo) { var sage = new SagePayments(DbUtil.Db, pf.testing); tinfo = sage.createVaultTransactionRequest( pid ?? 0, pf.AmtToPay ?? 0, pf.Description, ti.Id, pf.Type); } else if (pf.Type == "B") { tinfo = OnlineRegModel.PostVirtualCheckTransactionSage( pf.Routing, pf.Account, pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.Email, pf.First, pf.MiddleInitial, pf.Last, pf.Suffix, pf.Address, pf.City, pf.State, pf.Zip, pf.Phone, pf.testing); } else { tinfo = OnlineRegModel.PostTransactionSage( pf.CreditCard, pf.CCV, DbUtil.NormalizeExpires(pf.Expires).ToString2("MMyy"), pf.AmtToPay ?? 0, ti.Id, pf.Description, pid ?? 0, pf.Email, pf.First, pf.MiddleInitial, pf.Last, pf.Suffix, pf.Address, pf.City, pf.State, pf.Zip, pf.Phone, pf.testing); } } else { throw new Exception("unknown gateway " + gateway); } ti.TransactionId = tinfo.TransactionId; if (ti.Testing == true && !ti.TransactionId.Contains("(testing)")) { ti.TransactionId += "(testing)"; } ti.Approved = tinfo.Approved; if (ti.Approved == false) { 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); }
private Transaction ProcessPaymentTransaction(OnlineRegModel m, PaymentForm pf) { var ti = (m != null && m.Transaction != null) ? PaymentForm.CreateTransaction(DbUtil.Db, m.Transaction, pf.AmtToPay) : pf.CreateTransaction(DbUtil.Db); int?pid = null; if (m != null) { m.ParseSettings(); var terms = Util.PickFirst(m.Terms, ""); if (terms.HasValue()) { ViewData["Terms"] = terms; } pid = m.UserPeopleId; if (m.TranId == null) { m.TranId = ti.Id; } } if (!pid.HasValue) { var pds = DbUtil.Db.FindPerson(pf.First, pf.Last, null, pf.Email, pf.Phone); if (pds.Count() == 1) { pid = pds.Single().PeopleId.Value; } } TransactionResponse tinfo; var gw = DbUtil.Db.Gateway(pf.testing); if (pf.SavePayInfo) { tinfo = gw.PayWithVault(pid ?? 0, pf.AmtToPay ?? 0, pf.Description, ti.Id, pf.Type); } else { tinfo = pf.Type == PaymentType.Ach ? PayWithCheck(gw, pf, pid, ti) : PayWithCreditCard(gw, pf, 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); }