private void SendSingleConfirmationForOrg(OnlineRegPersonModel p) { var ts = TransactionSummary(); DbUtil.Db.SetCurrentOrgId(p.orgid); var emailSubject = GetSubject(p); var message = p.GetMessage(); var details = ""; if (message.Contains("{details}")) { details = p.PrepareSummaryText(DbUtil.Db); message = message.Replace("{details}", details); } var notifyIds = DbUtil.Db.StaffPeopleForOrg(p.org.OrganizationId); var notify = notifyIds[0]; var location = p.org.Location; if (!location.HasValue()) { location = masterorg.Location; } message = APIOrganization.MessageReplacements(DbUtil.Db, p.person, masterorg.OrganizationName, p.org.OrganizationId, p.org.OrganizationName, location, message); if (Transaction.Donate > 0 && p == List[donor ?? 0]) { message = DoDonationModifyMessage(message); } else { message = donationtext.Replace(message, ""); } // send confirmations if (emailSubject != "DO NOT SEND") { DbUtil.Db.Email(notify.FromEmail, p.person, Util.EmailAddressListFromString(p.fromemail), emailSubject, message, false); Log("SentConfirmation"); } // notify the staff DbUtil.Db.Email(Util.PickFirst(p.person.FromEmail, notify.FromEmail), notifyIds, Header, $@"{p.person.Name} has registered for {Header}<br/> Feepaid for this registrant: {p.AmountToPay():C}<br/> Others in this registration session: {p.GetOthersInTransaction(Transaction)}<br/> Total Fee paid for this registration session: {ts?.TotPaid:C}<br/> <pre>{details}</pre>"); }
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 ActionResult VoteLinkSg(string id, string message, bool?confirm, FormCollection formCollection) { var li = new LinkInfo(votelinkSTR, confirmSTR, id); if (li.error.HasValue()) { return(Message(li.error)); } try { var smallgroup = li.a[4]; if (!li.oid.HasValue) { throw new Exception("orgid missing"); } if (!li.pid.HasValue) { throw new Exception("peopleid missing"); } var q = (from pp in DbUtil.Db.People where pp.PeopleId == li.pid let org = DbUtil.Db.Organizations.SingleOrDefault(oo => oo.OrganizationId == li.oid) let om = DbUtil.Db.OrganizationMembers.SingleOrDefault(oo => oo.OrganizationId == li.oid && oo.PeopleId == li.pid) select new { p = pp, org, om }).Single(); if (q.org == null && DbUtil.Db.Host == "trialdb") { var oid = li.oid + Util.TrialDbOffset; q = (from pp in DbUtil.Db.People where pp.PeopleId == li.pid let org = DbUtil.Db.Organizations.SingleOrDefault(oo => oo.OrganizationId == oid) let om = DbUtil.Db.OrganizationMembers.SingleOrDefault(oo => oo.OrganizationId == oid && oo.PeopleId == li.pid) select new { p = pp, org, om }).Single(); } if (q.org == null) { throw new Exception("org missing, bad link"); } if ((q.org.RegistrationTypeId ?? RegistrationTypeCode.None) == RegistrationTypeCode.None) { throw new Exception("votelink is no longer active"); } if (q.om == null && q.org.Limit <= q.org.RegLimitCount(DbUtil.Db)) { throw new Exception("sorry, maximum limit has been reached"); } if (q.om == null && (q.org.RegistrationClosed == true || q.org.OrganizationStatusId == OrgStatusCode.Inactive)) { throw new Exception("sorry, registration has been closed"); } var setting = DbUtil.Db.CreateRegistrationSettings(li.oid.Value); if (IsSmallGroupFilled(setting, li.oid.Value, smallgroup)) { throw new Exception("sorry, maximum limit has been reached for " + smallgroup); } var omb = OrganizationMember.Load(DbUtil.Db, li.pid.Value, li.oid.Value) ?? OrganizationMember.InsertOrgMembers(DbUtil.Db, li.oid.Value, li.pid.Value, MemberTypeCode.Member, Util.Now, null, false); if (q.org.AddToSmallGroupScript.HasValue()) { var script = DbUtil.Db.Content(q.org.AddToSmallGroupScript); if (script != null && script.Body.HasValue()) { try { var pe = new PythonModel(Util.Host, "RegisterEvent", script.Body); pe.instance.AddToSmallGroup(smallgroup, omb); } catch (Exception) { } } } omb.AddToGroup(DbUtil.Db, smallgroup); li.ot.Used = true; DbUtil.Db.SubmitChanges(); DbUtil.LogActivity($"{votelinkSTR}{confirmSTR}: {smallgroup}", li.oid, li.pid); if (confirm == true) { var subject = Util.PickFirst(setting.Subject, "no subject"); var msg = Util.PickFirst(setting.Body, "no message"); msg = APIOrganization.MessageReplacements(DbUtil.Db, q.p, q.org.DivisionName, q.org.OrganizationId, q.org.OrganizationName, q.org.Location, msg); msg = msg.Replace("{details}", smallgroup); var NotifyIds = DbUtil.Db.StaffPeopleForOrg(q.org.OrganizationId); try { DbUtil.Db.Email(NotifyIds[0].FromEmail, q.p, subject, msg); // send confirmation } catch (Exception ex) { DbUtil.Db.Email(q.p.FromEmail, NotifyIds, q.org.OrganizationName, "There was a problem sending confirmation from org: " + ex.Message); } DbUtil.Db.Email(q.p.FromEmail, NotifyIds, q.org.OrganizationName, $"{q.p.Name} has registered for {q.org.OrganizationName}<br>{smallgroup}<br>(from votelink)"); } } catch (Exception ex) { DbUtil.LogActivity($"{votelinkSTR}{confirmSTR}Error: {ex.Message}", li.oid, li.pid); return(Message(ex.Message)); } return(Message(message)); }
public ActionResult RsvpLinkSg(string id, string message, bool?confirm, FormCollection formCollection, bool regrets = false) { var li = new LinkInfo(rsvplinkSTR, landingSTR, id, false); if (li.error.HasValue()) { return(Message(li.error)); } try { if (!li.pid.HasValue) { throw new Exception("missing peopleid"); } var meetingid = li.a[0].ToInt(); var emailid = li.a[2].ToInt(); var smallgroup = li.a[3]; if (meetingid == 0 && li.a[0].EndsWith(".next")) { var orgid = li.a[0].Split('.')[0].ToInt(); var nextmeet = (from mm in DbUtil.Db.Meetings where mm.OrganizationId == orgid where mm.MeetingDate > DateTime.Now orderby mm.MeetingDate select mm).FirstOrDefault(); if (nextmeet == null) { return(Message("no meeting")); } meetingid = nextmeet.MeetingId; } var q = (from pp in DbUtil.Db.People where pp.PeopleId == li.pid let meeting = DbUtil.Db.Meetings.SingleOrDefault(mm => mm.MeetingId == meetingid) let org = meeting.Organization select new { p = pp, org, meeting }).Single(); if (q.org.RegistrationClosed == true || q.org.OrganizationStatusId == OrgStatusCode.Inactive) { throw new Exception("sorry, registration has been closed"); } if (q.org.RegistrationTypeId == RegistrationTypeCode.None) { throw new Exception("rsvp is no longer available"); } if (q.org.Limit <= q.meeting.Attends.Count(aa => aa.Commitment == 1)) { throw new Exception("sorry, maximum limit has been reached"); } var omb = OrganizationMember.Load(DbUtil.Db, li.pid.Value, q.meeting.OrganizationId) ?? OrganizationMember.InsertOrgMembers(DbUtil.Db, q.meeting.OrganizationId, li.pid.Value, MemberTypeCode.Member, DateTime.Now, null, false); if (smallgroup.HasValue()) { omb.AddToGroup(DbUtil.Db, smallgroup); } li.ot.Used = true; DbUtil.Db.SubmitChanges(); Attend.MarkRegistered(DbUtil.Db, li.pid.Value, meetingid, regrets ? AttendCommitmentCode.Regrets : AttendCommitmentCode.Attending); DbUtil.LogActivity($"{rsvplinkSTR}{confirmSTR}: {regrets}", q.org.OrganizationId, li.pid); var setting = DbUtil.Db.CreateRegistrationSettings(q.meeting.OrganizationId); if (confirm == true) { var subject = Util.PickFirst(setting.Subject, "no subject"); var msg = Util.PickFirst(setting.Body, "no message"); msg = APIOrganization.MessageReplacements(DbUtil.Db, q.p, q.org.DivisionName, q.org.OrganizationId, q.org.OrganizationName, q.org.Location, msg); msg = msg.Replace("{details}", q.meeting.MeetingDate.ToString2("f")); var NotifyIds = DbUtil.Db.StaffPeopleForOrg(q.org.OrganizationId); DbUtil.Db.Email(NotifyIds[0].FromEmail, q.p, subject, msg); // send confirmation DbUtil.Db.Email(q.p.FromEmail, NotifyIds, q.org.OrganizationName, $"{q.p.Name} has registered for {q.org.OrganizationName}<br>{q.meeting.MeetingDate.ToString2("f")}"); } } catch (Exception ex) { DbUtil.LogActivity($"{rsvplinkSTR}{confirmSTR}Error: {regrets}", peopleid: li.pid); return(Message(ex.Message)); } return(Message(message)); }