internal void PostTransaction() { var reason = TransactionSummary == null ? "Inital Tran" : "Adjustment"; if (isMissionTrip) { if (TransactionSummary == null) { om.AddToGroup(DbUtil.Db, "Goer"); om.Amount = Amount; } if (AdjustFee == false && Payment > 0) { var gs = new GoerSenderAmount { GoerId = om.PeopleId, SupporterId = om.PeopleId, Amount = Payment, OrgId = om.OrganizationId, Created = DateTime.Now, }; DbUtil.Db.GoerSenderAmounts.InsertOnSubmit(gs); } } om.AddTransaction(DbUtil.Db, reason, Payment ?? 0, Description, Amount, AdjustFee); }
internal void PostTransaction(ModelStateDictionary modelState) { if (TransactionSummary != null && (Payment ?? 0) == 0) { modelState.AddModelError("Payment", "must have non zero value"); } if (TransactionSummary == null && (Amount ?? 0) == 0) { modelState.AddModelError("Amount", "Initial Fee Must be > 0"); } if (!modelState.IsValid) { return; } var reason = TransactionSummary == null ? "Initial Tran" : AdjustFee ? "AdjustFee" : "Adjustment"; if (isMissionTrip) { if (TransactionSummary == null) { om.AddToGroup(DbUtil.Db, "Goer"); om.Amount = Amount; } if (AdjustFee == false && (Payment ?? 0) != 0) { var gs = new GoerSenderAmount { GoerId = om.PeopleId, SupporterId = om.PeopleId, Amount = Payment, OrgId = om.OrganizationId, Created = DateTime.Now, }; DbUtil.Db.GoerSenderAmounts.InsertOnSubmit(gs); } } var descriptionForPayment = OnlineRegModel.GetDescriptionForPayment(OrgId); om.AddTransaction(DbUtil.Db, reason, Payment ?? 0, Description, Amount, AdjustFee, descriptionForPayment); var showcount = ""; if (TransactionSummary != null && TransactionSummary.NumPeople > 1) { showcount = $"({TransactionSummary.NumPeople}) "; } DbUtil.LogActivity($"OrgMem{showcount} {reason}", OrgId, PeopleId); }
private bool DoMissionTripSupporter() { var notifyIds = GetNotifyIds(); var p = List[0]; Transaction.Fund = p.setting.DonationFund(); var goerid = p.Parent.GoerId > 0 ? p.Parent.GoerId : p.MissionTripGoerId; var forgoer = ""; var forgeneral = ""; if (p.MissionTripSupportGoer > 0 && p.orgid.HasValue && p.PeopleId.HasValue) { var gsa = new GoerSenderAmount { Amount = p.MissionTripSupportGoer ?? 0, Created = DateTime.Now, OrgId = p.orgid.Value, SupporterId = p.PeopleId.Value, NoNoticeToGoer = p.MissionTripNoNoticeToGoer }; if (goerid > 0) { gsa.GoerId = goerid; } DbUtil.Db.GoerSenderAmounts.InsertOnSubmit(gsa); if (p.Parent.GoerSupporterId.HasValue) { var gs = DbUtil.Db.GoerSupporters.Single(gg => gg.Id == p.Parent.GoerSupporterId); if (!gs.SupporterId.HasValue) { gs.SupporterId = p.PeopleId; } } if (!Transaction.TransactionId.StartsWith("Coupon")) { p.person.PostUnattendedContribution(DbUtil.Db, p.MissionTripSupportGoer ?? 0, p.setting.DonationFundId, $"SupportMissionTrip: org={p.orgid}; goer={goerid}", tranid: Transaction.Id); Log("GoerSupport"); // send notices if (goerid > 0 && !p.MissionTripNoNoticeToGoer) { var goer = DbUtil.Db.LoadPersonById(goerid.Value); forgoer = $", {p.MissionTripSupportGoer:c} for {goer.Name}"; DbUtil.Db.Email(notifyIds[0].FromEmail, goer, org.OrganizationName + "-donation", $"{p.MissionTripSupportGoer ?? 0:C} donation received from {Transaction.FullName(Transaction)}{forgoer}"); } } } if (p.MissionTripSupportGeneral > 0 && p.orgid.HasValue && p.PeopleId.HasValue) { DbUtil.Db.GoerSenderAmounts.InsertOnSubmit( new GoerSenderAmount { Amount = p.MissionTripSupportGeneral ?? 0, Created = DateTime.Now, OrgId = p.orgid.Value, SupporterId = p.PeopleId.Value }); forgeneral = $", ({p.MissionTripSupportGeneral ?? 0:c}) for trip"; if (!Transaction.TransactionId.StartsWith("Coupon")) { p.person.PostUnattendedContribution(DbUtil.Db, p.MissionTripSupportGeneral ?? 0, p.setting.DonationFundId, "SupportMissionTrip: org=" + p.orgid, tranid: Transaction.Id); Log("TripSupport"); } } var notifyids = DbUtil.Db.NotifyIds(org.GiftNotifyIds); DbUtil.Db.Email(notifyIds[0].FromEmail, notifyids, org.OrganizationName + "-donation", $"${Transaction.Amt:N2} donation received from {Transaction.FullName(Transaction)}{forgoer}{forgeneral}"); var orgsettings = settings[org.OrganizationId]; var senderSubject = orgsettings.SenderSubject ?? "NO SUBJECT SET"; var senderBody = orgsettings.SenderBody ?? "NO SENDEREMAIL MESSAGE HAS BEEN SET"; senderBody = APIOrganization.MessageReplacements(DbUtil.Db, p.person, org.DivisionName, org.OrganizationId, org.OrganizationName, org.Location, senderBody); senderBody = senderBody.Replace("{phone}", org.PhoneNumber.FmtFone7()); senderBody = senderBody.Replace("{paid}", Transaction.Amt.ToString2("c")); //Transaction.Description = "Mission Trip Giving"; DbUtil.Db.Email(notifyids[0].FromEmail, p.person, listMailAddress, senderSubject, senderBody, false); DbUtil.Db.SubmitChanges(); return(true); }
public void EnrollAndConfirm() { if (masterorgid.HasValue) { EnrollAndConfirm2(); return; } var Db = DbUtil.Db; var ti = Transaction; // make a list of email addresses var elist = new List <MailAddress>(); if (UserPeopleId.HasValue) { if (user.SendEmailAddress1 ?? true) { Util.AddGoodAddress(elist, user.FromEmail); } if (user.SendEmailAddress2 ?? false) { Util.AddGoodAddress(elist, user.FromEmail2); } } if (registertag.HasValue()) { var guid = registertag.ToGuid(); var ot = DbUtil.Db.OneTimeLinks.SingleOrDefault(oo => oo.Id == guid.Value); ot.Used = true; } var participants = new StringBuilder(); for (var i = 0; i < List.Count; i++) { var p = List[i]; if (p.IsNew) { Person uperson = null; switch (p.whatfamily) { case 1: uperson = Db.LoadPersonById(UserPeopleId.Value); break; case 2: if (i > 0) { uperson = List[i - 1].person; } break; } p.AddPerson(uperson, p.org.EntryPointId ?? 0); } Util.AddGoodAddress(elist, p.fromemail); participants.Append(p.ToString()); } var p0 = List[0].person; if (this.user != null) { p0 = user; } //var emails = string.Join(",", elist.ToArray()); string paylink = string.Empty; var amtpaid = ti.Amt ?? 0; var amtdue = ti.Amtdue; var pids2 = new List <TransactionPerson>(); foreach (var p in List) { if (p.PeopleId == null) { return; } if (pids2.Any(pp => pp.PeopleId == p.PeopleId)) { continue; } pids2.Add(new TransactionPerson { PeopleId = p.PeopleId.Value, Amt = p.TotalAmount(), OrgId = Orgid, }); } if (SupportMissionTrip && GoerId == _list[0].PeopleId) { // reload transaction because it is not in this context var om = Db.OrganizationMembers.SingleOrDefault(mm => mm.PeopleId == GoerId && mm.OrganizationId == Orgid); if (om != null && om.TranId.HasValue) { ti.OriginalId = om.TranId; } } else { ti.OriginalTrans.TransactionPeople.AddRange(pids2); } ti.Emails = Util.EmailAddressListToString(elist); ti.Participants = participants.ToString(); ti.TransactionDate = DateTime.Now; if (org.IsMissionTrip == true) { paylink = DbUtil.Db.ServerLink("/OnlineReg/{0}?goerid={1}".Fmt(Orgid, p0.PeopleId)); } else { var estr = HttpUtility.UrlEncode(Util.Encrypt(ti.OriginalId.ToString())); paylink = DbUtil.Db.ServerLink("/OnlineReg/PayAmtDue?q=" + estr); } var pids = pids2.Select(pp => pp.PeopleId); for (var i = 0; i < List.Count; i++) { var p = List[i]; var q = from pp in Db.People where pids.Contains(pp.PeopleId) where pp.PeopleId != p.PeopleId select pp.Name; var others = string.Join(",", q.ToArray()); var om = p.Enroll(ti, paylink, testing, others); om.RegisterEmail = p.EmailAddress; if (om.TranId == null) { om.TranId = ti.OriginalId; } int grouptojoin = p.setting.GroupToJoin.ToInt(); if (grouptojoin > 0) { OrganizationMember.InsertOrgMembers(Db, grouptojoin, p.PeopleId.Value, MemberTypeCode.Member, DateTime.Now, null, false); DbUtil.Db.UpdateMainFellowship(grouptojoin); } OnlineRegPersonModel.CheckNotifyDiffEmails(p.person, Db.StaffEmailForOrg(p.org.OrganizationId), p.fromemail, p.org.OrganizationName, p.org.PhoneNumber); if (p.IsCreateAccount()) { p.CreateAccount(); } } Db.SubmitChanges(); var details = new StringBuilder("<table cellpadding='4'>"); if (ti.Amt > 0) { details.AppendFormat(@" <tr><td colspan='2'> <table cellpadding='4'> <tr><td>Total Paid</td><td>Total Due</td></tr> <tr><td align='right'>{0:c}</td><td align='right'>{1:c}</td></tr> </table> </td> </tr> ", amtpaid, amtdue); } for (var i = 0; i < List.Count; i++) { var p = List[i]; details.AppendFormat(@" <tr><td colspan='2'><hr/></td></tr> <tr><th valign='top'>{0}</th><td> {1} </td></tr>", i + 1, p.PrepareSummaryText(ti)); } details.Append("\n</table>\n"); var DivisionName = org.DivisionName; var os = settings[Orgid.Value]; var EmailSubject = Util.PickFirst(os.Subject, "no subject"); var EmailMessage = Util.PickFirst(os.Body, "no body"); bool usedAdmins; var NotifyIds = Db.StaffPeopleForOrg(org.OrganizationId, out usedAdmins); var Location = org.Location; var subject = Util.PickFirst(EmailSubject, "no subject"); var message = Util.PickFirst(EmailMessage, "no message"); message = CmsData.API.APIOrganization.MessageReplacements(DbUtil.Db, p0, DivisionName, org.OrganizationName, Location, message); subject = subject.Replace("{org}", Header); message = message.Replace("{phone}", org.PhoneNumber.FmtFone7()) .Replace("{tickets}", List[0].ntickets.ToString()) .Replace("{details}", details.ToString()) .Replace("{paid}", amtpaid.ToString("c")) .Replace("{sessiontotal}", amtpaid.ToString("c")) .Replace("{participants}", details.ToString()); if (amtdue > 0) { message = message.Replace("{paylink}", "<a href='{0}'>Click this link to make a payment on your balance of {1:C}</a>.".Fmt(paylink, amtdue)); } else { message = message.Replace("{paylink}", "You have a zero balance."); } if (SupportMissionTrip && TotalAmount() > 0) { var p = List[0]; ti.Fund = p.setting.DonationFund(); var goerid = p.Parent.GoerId ?? p.MissionTripGoerId; if (p.MissionTripSupportGoer > 0) { var gsa = new GoerSenderAmount { Amount = p.MissionTripSupportGoer.Value, Created = DateTime.Now, OrgId = p.orgid.Value, SupporterId = p.PeopleId.Value, NoNoticeToGoer = p.MissionTripNoNoticeToGoer, }; if (goerid > 0) { gsa.GoerId = goerid; } DbUtil.Db.GoerSenderAmounts.InsertOnSubmit(gsa); if (p.Parent.GoerSupporterId.HasValue) { var gs = DbUtil.Db.GoerSupporters.Single(gg => gg.Id == p.Parent.GoerSupporterId); if (!gs.SupporterId.HasValue) { gs.SupporterId = p.PeopleId; } } if (!ti.TransactionId.StartsWith("Coupon")) { p.person.PostUnattendedContribution(DbUtil.Db, p.MissionTripSupportGoer.Value, p.setting.DonationFundId, "SupportMissionTrip: org={0}; goer={1}".Fmt(p.orgid, goerid), tranid: ti.Id); // send notices if (goerid > 0 && !p.MissionTripNoNoticeToGoer) { var goer = DbUtil.Db.LoadPersonById(goerid.Value); Db.Email(NotifyIds[0].FromEmail, goer, org.OrganizationName + "-donation", "{0:C} donation received from {1}".Fmt(p.MissionTripSupportGoer.Value, Transaction.FullName(ti))); } } } if (p.MissionTripSupportGeneral > 0) { DbUtil.Db.GoerSenderAmounts.InsertOnSubmit( new GoerSenderAmount { Amount = p.MissionTripSupportGeneral.Value, Created = DateTime.Now, OrgId = p.orgid.Value, SupporterId = p.PeopleId.Value }); if (!ti.TransactionId.StartsWith("Coupon")) { p.person.PostUnattendedContribution(DbUtil.Db, p.MissionTripSupportGeneral.Value, p.setting.DonationFundId, "SupportMissionTrip: org={0}".Fmt(p.orgid), tranid: ti.Id); } } var notifyids = Db.NotifyIds(org.OrganizationId, org.GiftNotifyIds); Db.Email(NotifyIds[0].FromEmail, notifyids, org.OrganizationName + "-donation", "${0:N2} donation received from {1}".Fmt(ti.Amt, Transaction.FullName(ti))); var senderSubject = os.SenderSubject ?? "NO SUBJECT SET"; var senderBody = os.SenderBody ?? "NO SENDEREMAIL MESSAGE HAS BEEN SET"; senderBody = CmsData.API.APIOrganization.MessageReplacements(DbUtil.Db, p.person, DivisionName, org.OrganizationName, Location, senderBody); senderBody = senderBody.Replace("{phone}", org.PhoneNumber.FmtFone7()); senderBody = senderBody.Replace("{paid}", ti.Amt.ToString2("c")); ti.Description = "Mission Trip Giving"; Db.Email(notifyids[0].FromEmail, p.person, elist, senderSubject, senderBody, false); Db.SubmitChanges(); return; } if (!SupportMissionTrip && org != null && org.IsMissionTrip == true && ti.Amt > 0) { var p = List[0]; ti.Fund = p.setting.DonationFund(); DbUtil.Db.GoerSenderAmounts.InsertOnSubmit( new GoerSenderAmount { Amount = ti.Amt, GoerId = p.PeopleId, Created = DateTime.Now, OrgId = p.orgid.Value, SupporterId = p.PeopleId.Value }); if (!ti.TransactionId.StartsWith("Coupon")) { p.person.PostUnattendedContribution(DbUtil.Db, ti.Amt.Value, p.setting.DonationFundId, "MissionTrip: org={0}; goer={1}".Fmt(p.orgid, p.PeopleId), tranid: ti.Id); ti.Description = "Mission Trip Giving"; } } else if (ti.Donate > 0) { var p = List[donor.Value]; ti.Fund = p.setting.DonationFund(); var desc = "{0}; {1}; {2}, {3} {4}".Fmt( p.person.Name, p.person.PrimaryAddress, p.person.PrimaryCity, p.person.PrimaryState, p.person.PrimaryZip); if (!ti.TransactionId.StartsWith("Coupon")) { p.person.PostUnattendedContribution(DbUtil.Db, ti.Donate.Value, p.setting.DonationFundId, desc, tranid: ti.Id); } var ma = donationtext.Match(message); if (ma.Success) { var v = ma.Groups["text"].Value; message = donationtext.Replace(message, v); } message = message.Replace("{donation}", ti.Donate.ToString2("N2")); // send donation confirmations Db.Email(NotifyIds[0].FromEmail, NotifyIds, subject + "-donation", "${0:N2} donation received from {1}".Fmt(ti.Donate, Transaction.FullName(ti))); } else { message = donationtext.Replace(message, ""); } Db.CurrentOrgId = Orgid; // send confirmations if (subject != "DO NOT SEND") { Db.Email(NotifyIds[0].FromEmail, p0, elist, subject, message, false); } Db.SubmitChanges(); // notify the staff var n = 0; foreach (var p in List) { var tt = pids2.Single(vv => vv.PeopleId == p.PeopleId); Db.Email(Util.PickFirst(p.person.FromEmail, NotifyIds[0].FromEmail), NotifyIds, Header, @"{7}{0} has registered for {1}<br/> Total Fee for this registrant: {2:C}<br/> Total Fee for this registration: {3:C}<br/> Total Fee paid today: {4:C}<br/> AmountDue: {5:C}<br/> <pre>{6}</pre>".Fmt(p.person.Name, Header, p.TotalAmount(), TotalAmount(), amtpaid, amtdue, // Amount Due p.PrepareSummaryText(ti), usedAdmins ? @"<span style='color:red'>THERE ARE NO NOTIFY IDS ON THIS REGISTRATION!!</span><br/> <a href='http://docs.bvcms.com/OnlineRegistration/MessagesSettings.html'>see documentation</a><br/><br/>" : "")); } }