//[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")); }
public ActionResult QuestionsUpdate(int id) { var m = CurrentDatabase.CreateRegistrationSettings(id); DbUtil.LogActivity($"Update SettingsQuestions {m.org.OrganizationName}"); m.AskItems.Clear(); m.TimeSlots.list.Clear(); try { if (!TryUpdateModel(m)) { var q = from e in ModelState.Values where e.Errors.Count > 0 select e.Errors[0].ErrorMessage; throw new Exception(q.First()); } var s = m.ToString(); m = CurrentDatabase.CreateRegistrationSettings(s, id); m.org.UpdateRegSetting(m); CurrentDatabase.SubmitChanges(); CheckDuplicates(id); if (!m.org.NotifyIds.HasValue()) { ModelState.AddModelError("Form", needNotify); } return(PartialView("Registration/Questions", m)); } catch (Exception ex) { ModelState.AddModelError("Form", ex.Message); return(Content("error:" + ex.Message)); } }
public async Task <ActionResult> PayAmtDue(int transactionId, decimal amtdue, int OrgId) { var fundName = await _resolver.GetOrgFund(CurrentDatabase.CreateRegistrationSettings(OrgId).PushpayFundName); var merchantHandle = GetMerchantHandle(OrgId); return(Redirect($"{_givingLink}{merchantHandle}?ru={_ru}&sr=pd_{_state}_{transactionId}&rcv=false&r=no&a={amtdue}&fnd={fundName}&al=true&fndv=lock")); }
public void Update() { this.CopyPropertiesTo(Org, typeof(OrgAttribute)); RegSettings.OrgFees.Clear(); this.CopyPropertiesTo(RegSettings, typeof(RegAttribute)); var os = CurrentDatabase.CreateRegistrationSettings(RegSettings.ToString(), Id); Org.UpdateRegSetting(os); CurrentDatabase.SubmitChanges(); }
private string GetMerchantHandle(int orgId) { var merchantHandle = CurrentDatabase.CreateRegistrationSettings(orgId).PushpayMerchantName; if (string.IsNullOrEmpty(merchantHandle)) { return(_defaultMerchantHandle); } return(merchantHandle); }
public ActionResult Index(int id) { var org = CurrentDatabase.LoadOrganizationById(id); ViewData["OrganizationId"] = id; ViewData["orgname"] = org.OrganizationName; var regsetting = org.RegSettingXml; var os = CurrentDatabase.CreateRegistrationSettings(regsetting, id); regsetting = os.ToString(); ViewData["text"] = regsetting; return(View()); }
private void SetHeaders(int id) { Settings setting = null; var org = CurrentDatabase.LoadOrganizationById(id); if (org != null) { SetHeaders2(id); return; } var shell = SetAlternativeManagedGivingShell(); if (!shell.HasValue() && (settings == null || !settings.ContainsKey(id))) { setting = CurrentDatabase.CreateRegistrationSettings(id); shell = DbUtil.Content(CurrentDatabase, setting.Shell, null); } if (!shell.HasValue() && settings != null && settings.ContainsKey(id)) { shell = DbUtil.Content(CurrentDatabase, settings[id].Shell, null); } if (!shell.HasValue()) { shell = DbUtil.Content(CurrentDatabase, "ShellDiv-" + id, DbUtil.Content(CurrentDatabase, "ShellDefault", "")); } var s = shell; if (s.HasValue()) { var re = new Regex(@"(.*<!--FORM START-->\s*).*(<!--FORM END-->.*)", RegexOptions.Singleline); var t = re.Match(s).Groups[1].Value.Replace("<!--FORM CSS-->", ViewExtensions2.jQueryUICss() + "\r\n<link href=\"/Content/styles/onlinereg.css?v=8\" rel=\"stylesheet\" type=\"text/css\" />\r\n"); ViewBag.hasshell = true; var b = re.Match(s).Groups[2].Value; ViewBag.bottom = b; } else { ViewBag.hasshell = false; ViewBag.header = DbUtil.Content(CurrentDatabase, "OnlineRegHeader-" + id, DbUtil.Content(CurrentDatabase, "OnlineRegHeader", "")); ViewBag.top = DbUtil.Content(CurrentDatabase, "OnlineRegTop-" + id, DbUtil.Content(CurrentDatabase, "OnlineRegTop", "")); ViewBag.bottom = DbUtil.Content(CurrentDatabase, "OnlineRegBottom-" + id, DbUtil.Content(CurrentDatabase, "OnlineRegBottom", "")); } }
public void RegMessagesXml(Stream stream, Settings.Messages messages) { var q = FetchOrgs(); var w = new CmsData.API.APIWriter(stream); w.Start("OrgSearch"); foreach (var o in q) { var os = CurrentDatabase.CreateRegistrationSettings(o.OrganizationId); os.WriteXmlMessages(w.writer, messages); } w.End(); w.writer.Flush(); }
public void RegSettingsXml(Stream stream) { var q = FetchOrgs(); var w = new CmsData.API.APIWriter(stream); w.Start("OrgSearch"); foreach (var o in q) { var os = CurrentDatabase.CreateRegistrationSettings(o.OrganizationId); Util.Serialize(os, w.writer); } w.End(); w.writer.Flush(); }
public void ParseSettings() { var list = new Dictionary <int, Settings>(); if (masterorgid.HasValue) { foreach (var o in UserSelectClasses(masterorg)) { list[o.OrganizationId] = CurrentDatabase.CreateRegistrationSettings(o.OrganizationId); } list[masterorg.OrganizationId] = CurrentDatabase.CreateRegistrationSettings(masterorg.OrganizationId); } else if (_orgid == null) { return; } else if (org != null) { list[_orgid.Value] = CurrentDatabase.CreateRegistrationSettings(_orgid.Value); } HttpContextFactory.Current.Items["RegSettings"] = list; if (org == null || !org.AddToSmallGroupScript.HasValue()) { return; } var script = CurrentDatabase.Content(org.AddToSmallGroupScript); if (script == null || !script.Body.HasValue()) { return; } Log("Script:" + org.AddToSmallGroupScript); try { var pe = new PythonModel(CurrentDatabase.Host, "RegisterEvent", script.Body); HttpContextFactory.Current.Items["PythonEvents"] = pe; } catch (Exception ex) { Log("PythonError"); org.AddToExtraText("Python.errors", ex.Message); throw; } }
public ActionResult Update(int id, string text) { var org = CurrentDatabase.LoadOrganizationById(id); try { var os = CurrentDatabase.CreateRegistrationSettings(text, id); org.UpdateRegSetting(os); CurrentDatabase.SubmitChanges(); } catch (Exception ex) { Util.TempError = ex.Message; } return(Redirect("/RegSettings/" + id)); }
private void SetHeaders2(int id) { var org = CurrentDatabase.LoadOrganizationById(id); var shell = GetAlternativeManagedGivingShell(org.OrganizationId); if (!shell.HasValue() && (settings == null || !settings.ContainsKey(id)) && org != null) { var setting = CurrentDatabase.CreateRegistrationSettings(id); shell = CurrentDatabase.ContentOfTypeHtml(setting.ShellBs)?.Body; } if (!shell.HasValue() && settings != null && settings.ContainsKey(id)) { shell = CurrentDatabase.ContentOfTypeHtml(settings[id].ShellBs)?.Body; } if (!shell.HasValue()) { shell = CurrentDatabase.ContentOfTypeHtml("ShellDefaultBs")?.Body; if (!shell.HasValue()) { shell = CurrentDatabase.ContentOfTypeHtml("DefaultShellBs")?.Body; } } if (shell != null && shell.HasValue()) { shell = shell.Replace("{title}", ViewBag.Title); var re = new Regex(@"(.*<!--FORM START-->\s*).*(<!--FORM END-->.*)", RegexOptions.Singleline); var t = re.Match(shell).Groups[1].Value.Replace("<!--FORM CSS-->", ViewExtensions2.Bootstrap3Css()); ViewBag.hasshell = true; ViewBag.top = t; var b = re.Match(shell).Groups[2].Value; ViewBag.bottom = b; } else { ViewBag.hasshell = false; } }
public ActionResult QuestionsEdit(int id) { return(PartialView("Registration/QuestionsEdit", CurrentDatabase.CreateRegistrationSettings(id))); }
public ActionResult QuestionsHelpToggle(int id) { CurrentDatabase.ToggleUserPreference("ShowQuestionsHelp"); return(PartialView("Registration/Questions", CurrentDatabase.CreateRegistrationSettings(id))); }
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 CurrentDatabase.People where pp.PeopleId == li.pid let org = CurrentDatabase.Organizations.SingleOrDefault(oo => oo.OrganizationId == li.oid) let om = CurrentDatabase.OrganizationMembers.SingleOrDefault(oo => oo.OrganizationId == li.oid && oo.PeopleId == li.pid) select new { p = pp, org, om }).Single(); if (q.org == null && CurrentDatabase.Host == "trialdb") { var oid = li.oid + Util.TrialDbOffset; q = (from pp in CurrentDatabase.People where pp.PeopleId == li.pid let org = CurrentDatabase.Organizations.SingleOrDefault(oo => oo.OrganizationId == oid) let om = CurrentDatabase.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(CurrentDatabase)) { 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 = CurrentDatabase.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(CurrentDatabase, li.pid.Value, li.oid.Value) ?? OrganizationMember.InsertOrgMembers(CurrentDatabase, li.oid.Value, li.pid.Value, MemberTypeCode.Member, Util.Now, null, false); if (q.org.AddToSmallGroupScript.HasValue()) { var script = CurrentDatabase.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(CurrentDatabase, smallgroup); li.ot.Used = true; CurrentDatabase.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(CurrentDatabase, q.p, q.org.DivisionName, q.org.OrganizationId, q.org.OrganizationName, q.org.Location, msg); msg = msg.Replace("{details}", smallgroup); var NotifyIds = CurrentDatabase.StaffPeopleForOrg(q.org.OrganizationId); try { CurrentDatabase.Email(NotifyIds[0].FromEmail, q.p, subject, msg); // send confirmation } catch (Exception ex) { CurrentDatabase.Email(q.p.FromEmail, NotifyIds, q.org.OrganizationName, "There was a problem sending confirmation from org: " + ex.Message); } CurrentDatabase.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 CurrentDatabase.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 CurrentDatabase.People where pp.PeopleId == li.pid let meeting = CurrentDatabase.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(CurrentDatabase, li.pid.Value, q.meeting.OrganizationId) ?? OrganizationMember.InsertOrgMembers(CurrentDatabase, q.meeting.OrganizationId, li.pid.Value, MemberTypeCode.Member, DateTime.Now, null, false); if (smallgroup.HasValue()) { omb.AddToGroup(CurrentDatabase, smallgroup); } li.ot.Used = true; CurrentDatabase.SubmitChanges(); Attend.MarkRegistered(CurrentDatabase, li.pid.Value, meetingid, regrets ? AttendCommitmentCode.Regrets : AttendCommitmentCode.Attending); DbUtil.LogActivity($"{rsvplinkSTR}{confirmSTR}: {regrets}", q.org.OrganizationId, li.pid); var setting = CurrentDatabase.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(CurrentDatabase, 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 = CurrentDatabase.StaffPeopleForOrg(q.org.OrganizationId); CurrentDatabase.Email(NotifyIds[0].FromEmail, q.p, subject, msg); // send confirmation CurrentDatabase.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)); }