public ActionResult SubmitNew(int id, OnlineRegModel m) { var p = m.List[id]; p.ValidateModelForNew(ModelState); if (ModelState.IsValid) { if (m.ManagingSubscriptions()) { p.IsNew = true; m.ConfirmManageSubscriptions(); ViewData["ManagingSubscriptions"] = true; ViewData["CreatedAccount"] = m.List[0].CreatingAccount; DbUtil.Db.SubmitChanges(); ViewData["email"] = m.List[0].person.EmailAddress; if (m.masterorgid != null) { ViewData["orgname"] = m.masterorg.OrganizationName; } else { ViewData["orgname"] = m.div.Name; } ViewData["URL"] = m.URL; ViewData["timeout"] = INT_timeout; return(View("ConfirmManageSub")); } if (m.OnlinePledge()) { p.IsNew = true; m.ConfirmManagePledge(); ViewData["CreatedAccount"] = m.List[0].CreatingAccount; DbUtil.Db.SubmitChanges(); ViewData["email"] = m.List[0].person.EmailAddress; ViewData["orgname"] = m.org.OrganizationName; ViewData["URL"] = m.URL; ViewData["timeout"] = INT_timeout; SetHeaders(m); return(View("ConfirmManagePledge")); } if (m.ManageGiving()) { p.IsNew = true; m.ConfirmManageGiving(); ViewData["CreatedAccount"] = m.List[0].CreatingAccount; DbUtil.Db.SubmitChanges(); ViewData["email"] = m.List[0].person.EmailAddress; ViewData["orgname"] = m.org.OrganizationName; ViewData["URL"] = m.URL; ViewData["timeout"] = INT_timeout; SetHeaders(m); return(View("ConfirmManageGiving")); } if (p.org == null && p.ComputesOrganizationByAge()) { ModelState.AddModelError(m.GetNameFor(mm => mm.List[id].Found), "Sorry, cannot find an appropriate age group"); } else if (!p.ManageSubscriptions()) { p.IsFilled = p.org.OrganizationMembers.Count() >= p.org.Limit; if (p.IsFilled) { ModelState.AddModelError(m.GetNameFor(mm => mm.List[id].dob), "Sorry, that age group is filled"); } } p.IsNew = true; } p.IsValidForExisting = ModelState.IsValid == false; if (p.IsNew) { p.FillPriorInfo(); } if (p.org != null && p.ShowDisplay() && p.ComputesOrganizationByAge()) { p.classid = p.org.OrganizationId; } //if (!p.AnyOtherInfo()) // p.OtherOK = ModelState.IsValid; return(FlowList(m, "SubmitNew")); }
private string ConfirmTransaction(OnlineRegModel m, string TransactionID, ExtraDatum ed = null) { m.ParseSettings(); if (m.List.Count == 0) { return("error: unexpected, no registrants found in confirmation"); } string confirm = "Confirm"; var managingsubs = m.ManagingSubscriptions(); var choosingslots = m.ChoosingSlots(); var t = m.Transaction; if (t == null && !managingsubs && !choosingslots) { var pf = PaymentForm.CreatePaymentForm(m); if (ed != null) { pf.DatumId = ed.Id; } t = pf.CreateTransaction(DbUtil.Db); m.TranId = t.Id; if (ed != null) { ed.Data = Util.Serialize <OnlineRegModel>(m); DbUtil.Db.SubmitChanges(); } } if (t != null) { ViewData["message"] = t.Message; } if (m.org != null && m.org.RegistrationTypeId == RegistrationTypeCode.CreateAccount) { m.List[0].CreateAccount(); ViewData["CreatedAccount"] = true; confirm = "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); } } 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.Value, p.setting.DonationFundId, desc); } 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(); m.URL = null; ViewData["ManagingSubscriptions"] = true; ViewData["CreatedAccount"] = m.List[0].CreatingAccount; confirm = "ConfirmAccount"; } else if (choosingslots) { m.ConfirmPickSlots(); m.URL = null; ViewData["ManagingVolunteer"] = true; ViewData["CreatedAccount"] = m.List[0].CreatingAccount; confirm = "ConfirmAccount"; } else if (m.OnlinePledge()) { m.ConfirmManagePledge(); ViewData["ManagingPledge"] = true; ViewData["CreatedAccount"] = m.List[0].CreatingAccount; confirm = "ConfirmAccount"; } else if (m.ManageGiving()) { m.ConfirmManageGiving(); ViewData["ManagingGiving"] = true; ViewData["CreatedAccount"] = m.List[0].CreatingAccount; confirm = "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)) { if ((bool?)Session["OnlineRegLogin"] == true) { FormsAuthentication.SignOut(); Session.Abandon(); } return("error: 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)) { if ((bool?)Session["OnlineRegLogin"] == true) { FormsAuthentication.SignOut(); Session.Abandon(); } return("error: no person"); } m.UseCoupon(t.TransactionId, t.Amt ?? 0); } if (m.IsCreateAccount() || m.ManagingSubscriptions()) { ViewData["email"] = m.List[0].person.EmailAddress; } else { ViewData["email"] = m.List[0].email; } ViewData["orgname"] = m.org != null ? m.org.OrganizationName : m.masterorgid.HasValue ? m.masterorg.OrganizationName : m.div.Name; if ((bool?)Session["OnlineRegLogin"] == true) { FormsAuthentication.SignOut(); Session.Abandon(); } return(confirm); }