public ActionResult Results(SearchAddModel m) { CurrentDatabase.SetNoLock(); ModelState.Clear(); m.OnlineRegTypeSearch = Util2.OnlineRegTypeSearchAdd; if (m.ShowLimitedSearch) { if (string.IsNullOrWhiteSpace(m.FirstName)) { ModelState.AddModelError("FirstName", "First name is required"); } if (string.IsNullOrWhiteSpace(m.LastName)) { ModelState.AddModelError("LastName", "Last name is required"); } if (string.IsNullOrWhiteSpace(m.Email)) { ModelState.AddModelError("Email", "Email is required"); } if (!ModelState.IsValid) { return(View("SearchPerson", m)); } } if (m.Count() == 0 && m.ShowLimitedSearch) { NewPerson(0, m); m.PendingList[0].FirstName = m.FirstName; m.PendingList[0].LastName = m.LastName; m.PendingList[0].EmailAddress = m.Email; return(View("NewPerson", m)); } if (m.Count() == 1 && m.ShowLimitedSearch) { m.AddExisting(m.ViewList().First().PeopleId); } return(View(m)); }
public ActionResult Update(int id) { var m = new Models.BundleModel(id, CurrentDatabase); UpdateModel(m); UpdateModel(m.Bundle, "Bundle"); var q = from d in CurrentDatabase.BundleDetails where d.BundleHeaderId == m.Bundle.BundleHeaderId select d.Contribution; var dt = q.Select(cc => cc.ContributionDate).FirstOrDefault(); if (m.Bundle.ContributionDateChanged && q.All(cc => cc.ContributionDate == dt)) { foreach (var c in q) { c.ContributionDate = m.Bundle.ContributionDate; } } var fid = q.Select(cc => cc.FundId).FirstOrDefault(); if (m.Bundle.FundIdChanged && q.All(cc => cc.FundId == fid)) { foreach (var c in q) { c.FundId = m.Bundle.FundId ?? 1; } } var postingdt = Util.Now; if (m.Bundle.BundleStatusIdChanged && m.Bundle.BundleStatusId == BundleStatusCode.Closed) { foreach (var d in m.Bundle.BundleDetails) { d.Contribution.PostingDate = postingdt; } } CurrentDatabase.SubmitChanges(); if (User.IsInRole("FinanceDataEntry")) { return(Redirect("/Bundles")); } m.BundleId = id; // refresh values return(View("Display", m)); }
public ActionResult TotalsByFundCustomExport(string id, TotalsByFundModel model) { var content = CurrentDatabase.ContentOfTypeSql(id); if (content == null) { return(SimpleContent("no content")); } var connection = CurrentDatabase.ReadonlyConnection(); connection.Open(); var queryParameters = model.GetDynamicParameters(); var s = id.SpaceCamelCase(); return(connection.ExecuteReader(content, queryParameters, commandTimeout: 1200).ToExcel(s + ".xlsx", fromSql: true)); }
public IEnumerable <SelectListItem> Organizations() { var orgType = CurrentDatabase.Setting("UX-ContactedOrgType", null); var list = CurrentDatabase.Organizations .Where(x => string.IsNullOrEmpty(orgType) || orgType == x.OrganizationType.Description) .OrderBy(r => r.OrganizationName).ToList().Select(x => new SelectListItem { Value = x.OrganizationId.ToString(), Text = x.OrganizationName, Selected = x.OrganizationId == OrganizationId }).ToList(); list.Insert(0, new SelectListItem { Value = "0", Text = "(none)", Selected = true }); return(list); }
public ActionResult MakeLeaderOfTargetGroup(OrgGroupsModel m) { var a = m.List.ToArray(); var q2 = from om in m.OrgMembers() where a.Contains(om.PeopleId) select om; if (m.groupid != null) { foreach (var om in q2) { om.MakeLeaderOfGroup(CurrentDatabase, m.groupid.GetValueOrDefault()); } } CurrentDatabase.SubmitChanges(); return(View("Rows", m)); }
public ActionResult RenameGroup(OrgGroupsModel m) { if (!m.GroupName.HasValue() || m.groupid == 0) { return(Content("error: no group name")); } var group = CurrentDatabase.MemberTags.SingleOrDefault(d => d.Id == m.groupid); if (group != null) { group.Name = m.GroupName; } CurrentDatabase.SubmitChanges(); m.GroupName = null; return(Redirect("/OrgGroups/Management/" + m.orgid)); }
public ActionResult NewExtraValue(int id, string field, string value, bool multiline) { var m = new MeetingModel(id, CurrentDatabase); try { var mev = new MeetingExtra { MeetingId = id, Field = field, Data = value, DataType = multiline ? "text" : null }; CurrentDatabase.MeetingExtras.InsertOnSubmit(mev); CurrentDatabase.SubmitChanges(); } catch (Exception ex) { return(Content("error: " + ex.Message)); } return(View("ExtrasGrid", m.meeting)); }
public ActionResult Update(int id, string text) { var org = CurrentDatabase.LoadOrganizationById(id); try { var os = CurrentDatabase.CreateRegistrationSettings(text, id); org.UpdateRegSetting(os); } catch (Exception ex) { TempData["error"] = ex.Message; TempData["regsetting"] = text; return(Redirect("/RegSettings/" + id)); } CurrentDatabase.SubmitChanges(); return(Redirect("/RegSettings/" + id)); }
public ActionResult Delete(string id) { var role = CurrentDatabase.Roles.SingleOrDefault(m => m.RoleId == id.ToInt()); if (role == null) { return(new EmptyResult()); } if (role.UserRoles.Any()) { return(Content("users have that role, not deleted")); } CurrentDatabase.Roles.DeleteOnSubmit(role); CurrentDatabase.SubmitChanges(); return(new EmptyResult()); }
public ActionResult SharedTags() { var t = CurrentDatabase.FetchOrCreateTag(Util.SessionId, Util.UserPeopleId, DbUtil.TagTypeId_AddSelected); CurrentDatabase.TagPeople.DeleteAllOnSubmit(t.PersonTags); CurrentDatabase.SubmitChanges(); var tag = CurrentDatabase.TagCurrent(); foreach (var ts in tag.TagShares) { t.PersonTags.Add(new TagPerson { PeopleId = ts.PeopleId }); } CurrentDatabase.SubmitChanges(); return(Redirect("/SearchUsers")); }
public ActionResult Delete(int id) { var widget = CurrentDatabase.DashboardWidgets.SingleOrDefault(w => w.Id == id); if (widget == null) { return(new EmptyResult()); } if (widget.System) { return(Content("This widget can't be deleted. Try disabling it instead.")); } CurrentDatabase.DashboardWidgetRoles.DeleteAllOnSubmit(widget.DashboardWidgetRoles); CurrentDatabase.DashboardWidgets.DeleteOnSubmit(widget); CurrentDatabase.SubmitChanges(); return(Content("success")); }
public ActionResult Delete2(Guid id, string field, string value) { var list = CurrentDatabase.PeopleQuery(id).Select(pp => pp.PeopleId).ToList(); foreach (var pid in list) { var ev = Person.GetExtraValue(CurrentDatabase, pid, field, value); if (ev == null) { continue; } CurrentDatabase.PeopleExtras.DeleteOnSubmit(ev); CurrentDatabase.SubmitChanges(); //DbDispose(); } return(Content("done")); }
public ActionResult Create(int?id) { if (!id.HasValue) { return(Content("need an integer id")); } if (!CurrentDatabase.MemberTypes.Any(mt => mt.Id == id)) { var m = new MemberType { Id = id.Value }; CurrentDatabase.MemberTypes.InsertOnSubmit(m); CurrentDatabase.SubmitChanges(); } return(Redirect($"/MemberType/#{id}")); }
private void InitExportToolbar(OrganizationModel m) { ViewBag.oid = m.Id; ViewBag.queryid = m.QueryId; ViewBag.TagAction = "/Org/TagAll/" + m.QueryId; ViewBag.UnTagAction = "/Org/UnTagAll/" + m.QueryId; ViewBag.AddContact = "/Org/AddContact/" + m.QueryId; ViewBag.AddTasks = "/Org/AddTasks/" + m.QueryId; ViewBag.OrganizationContext = true; if (!CurrentDatabase.Organizations.Any(oo => oo.ParentOrgId == m.Id)) { return; } ViewBag.ParentOrgContext = true; ViewBag.leadersqid = CurrentDatabase.QueryLeadersUnderCurrentOrg().QueryId; ViewBag.membersqid = CurrentDatabase.QueryMembersUnderCurrentOrg().QueryId; }
public ActionResult MakeNewDiv(int id, string name) { var d = new Division { Name = name, ProgId = id }; d.ProgDivs.Add(new ProgDiv { ProgId = id }); CurrentDatabase.Divisions.InsertOnSubmit(d); CurrentDatabase.SubmitChanges(); var m = new OrgSearchModel(CurrentDatabase) { ProgramId = id, TagDiv = d.Id }; return(View("DivisionIds", m)); }
public ActionResult Create(string id) { if (!Regex.IsMatch(id, @"\A[A-z0-9-]*\z")) { return(Message("Invalid characters in setting id")); } if (!CurrentDatabase.Settings.Any(s => s.Id == id)) { var m = new Setting { Id = id }; CurrentDatabase.Settings.InsertOnSubmit(m); CurrentDatabase.SubmitChanges(); CurrentDatabase.SetSetting(id, null); } return(Redirect($"/Settings/#{id}")); }
public ActionResult People(OrgPeopleModel m) { if (m.FilterIndividuals) { if (m.NameFilter.HasValue()) { m.FilterIndividuals = false; } else if (CurrentDatabase.OrgFilterCheckedCount(m.QueryId) == 0) { m.FilterIndividuals = false; } } ViewBag.OrgMemberContext = true; ViewBag.orgname = Session["ActiveOrganization"]; return(PartialView(m)); }
public ActionResult Index(string id) { if (!id.HasValue()) { ViewData["MeetingCategories"] = CurrentDatabase.Setting("AttendanceUseMeetingCategory", false); return(View("list")); } if (!User.IsInRole("Admin") && string.Compare(id, "funds", ignoreCase: true) != 0) { return(Content("must be admin")); } ViewData["type"] = id; ViewData["description"] = Regex.Replace(id, "([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))", "$1 "); var q = CurrentDatabase.ExecuteQuery <Row>("select * from lookup." + id); // hide the add button on appropriate views. switch (id) { case "AddressType": case "EnvelopeOption": case "OrganizationStatus": case "BundleStatusTypes": case "ContributionStatus": ViewData["HideAdd"] = true; break; case "Gender": if (!CurrentDatabase.Setting("AllowNewGenders")) { ViewData["HideAdd"] = true; } break; case "OrganizationType": ViewData["LinkValue"] = "/Involvement/Index"; ViewData["LinkText"] = "Involvement Tab Editor"; break; } return(View(q)); }
public ActionResult ForgotUsername(string email) { TryLoadAlternateShell(); if (Request.HttpMethod.ToUpper() == "GET") { return(View()); } if (!Util.ValidEmail(email)) { ModelState.AddModelError("email", "valid email required"); } if (!ModelState.IsValid) { return(View()); } email = email?.Trim(); var q = from u in CurrentDatabase.Users where u.Person.EmailAddress == email || u.Person.EmailAddress2 == email where email != "" && email != null select u; foreach (var user in q) { var message = CurrentDatabase.ContentHtml("ForgotUsername", Resource1.AccountController_ForgotUsername); message = message.Replace("{name}", user.Name); message = message.Replace("{username}", user.Username); CurrentDatabase.EmailRedacted(CmsData.DbUtil.AdminMail, user.Person, "touchpoint forgot username", message); CurrentDatabase.SubmitChanges(); CurrentDatabase.EmailRedacted(CmsData.DbUtil.AdminMail, CMSRoleProvider.provider.GetAdmins(), $"touchpoint user: {user.Name} forgot username", "no content"); } if (!q.Any()) { CurrentDatabase.EmailRedacted(CmsData.DbUtil.AdminMail, CMSRoleProvider.provider.GetAdmins(), $"touchpoint unknown email: {email} forgot username", "no content"); } return(RedirectToAction("RequestUsername")); }
public ActionResult Save(string _at, string _rt) { string idAccessToken = "PushpayAccessToken", idRefreshToken = "PushpayRefreshToken"; //var dbContext = Db; //var m = CurrentDatabase.Settings.AsQueryable(); if (!Regex.IsMatch(idAccessToken, @"\A[A-z0-9-]*\z")) { return(View("Invalid characters in setting id")); } if (!CurrentDatabase.Settings.Any(s => s.Id == idAccessToken)) { //Create access token var s = new Setting { Id = idAccessToken, SettingX = _at }; CurrentDatabase.Settings.InsertOnSubmit(s); CurrentDatabase.SubmitChanges(); CurrentDatabase.SetSetting(idAccessToken, _at); } else { // Update access token CurrentDatabase.SetSetting(idAccessToken, _at); CurrentDatabase.SubmitChanges(); DbUtil.LogActivity($"Edit Setting {idAccessToken} to {_at}", userId: Util.UserId); } if (!CurrentDatabase.Settings.Any(s => s.Id == idRefreshToken)) { //Create refresh token var s = new Setting { Id = idRefreshToken, SettingX = _rt }; CurrentDatabase.Settings.InsertOnSubmit(s); CurrentDatabase.SubmitChanges(); CurrentDatabase.SetSetting(idRefreshToken, _rt); } else { // Update refresh token CurrentDatabase.SetSetting(idRefreshToken, _rt); CurrentDatabase.SubmitChanges(); DbUtil.LogActivity($"Edit Setting {idRefreshToken} to {_rt}", userId: Util.UserId); } return(RedirectToAction("Finish")); }
private void SendAllConfirmations(string message) { CurrentDatabase.SetCurrentOrgId(org.OrganizationId); var subject = GetSubject(); var amtpaid = Transaction.Amt ?? 0; var firstPerson = List[0].person; if (user != null) { firstPerson = user; } var notifyIds = GetNotifyIds(); if (subject != "DO NOT SEND") { CurrentDatabase.Email(notifyIds[0].FromEmail, firstPerson, listMailAddress, subject, message, false); Log("SentConfirmations"); } CurrentDatabase.SubmitChanges(); // notify the staff foreach (var p in List) { var messageNotice = UsedAdminsForNotify ? @"<span style='color:red'>THERE ARE NO NOTIFY IDS ON THIS REGISTRATION!!</span><br/> <a href='https://docs.touchpointsoftware.com/OnlineRegistration/MessagesSettings.html'>see documentation</a><br/><br/>" : ""; var detailSection = GetDetailsSection(); if (ValidateEmailRecipientRegistrant(p.person.Name, detailSection)) { CurrentDatabase.Email(Util.PickFirst(p.person.FromEmail, notifyIds[0].FromEmail), notifyIds, Header, $@"{messageNotice}{p.person.Name} has registered for {Header}<br/>{detailSection}<hr>"); Log("SentConfirmationsToStaff"); } else { CurrentDatabase.LogActivity($"Person ({p.person.Name}) is different from the registrant in the email body. " + $"The email was not sent."); } } }
public void UpdateDatum(bool completed = false, bool abandoned = false) { if (DatumId.HasValue) { Datum = CurrentDatabase.RegistrationDatas.Single(dd => dd.Id == DatumId); Datum.UserPeopleId = UserPeopleId; } else { // Don't create a new Datum if there is no data yet. if (List.Count == 0) { return; } var p = FirstRegistrant; if (List.Count > 0 && !p.FirstName.HasValue() && !p.LastName.HasValue() && p.EmailAddress.HasValue()) { return; } Datum = new RegistrationDatum { OrganizationId = masterorgid ?? _orgid, UserPeopleId = UserPeopleId, Stamp = Util.Now }; CurrentDatabase.RegistrationDatas.InsertOnSubmit(Datum); CurrentDatabase.SubmitChanges(); DatumId = Datum.Id; } Datum.Data = Util.Serialize <OnlineRegModel>(this); if (completed) { Datum.Completed = true; } if (abandoned) { Datum.Abandoned = true; } CurrentDatabase.SubmitChanges(); }
private string ExternalLink(string setting) { var url = setting; if (setting.Contains("{token}")) { var expirationWindow = CurrentDatabase.Setting("OTLTokenExpirationMinutes", "5").ToInt(); var otl = new OneTimeLink { Id = Guid.NewGuid(), Querystring = Util.UserPeopleId.ToString(), Expires = DateTime.Now.AddMinutes(expirationWindow) }; CurrentDatabase.OneTimeLinks.InsertOnSubmit(otl); CurrentDatabase.SubmitChanges(); url = url.Replace("{token}", otl.Id.ToCode()); } return(url); }
public ActionResult TransferGiving(int id) { if (!User.InAnyRole("Admin", "Finance")) { return(new HttpUnauthorizedResult()); } var person = CurrentDatabase.People.SingleOrDefault(p => p.PeopleId == id && p.DeceasedDate != null); if (person == null) { return(new HttpNotFoundResult()); } var count = CurrentDatabase.ExecuteCommand("UPDATE dbo.Contribution SET PeopleId={1} WHERE PeopleId={0}", person.PeopleId, person.Family.HeadOfHouseholdId); var message = count == 1 ? $"1 giving record was transferred successfully." : $"{count} giving records were transferred successfully."; return(Json(new { status = "OK", message })); }
public ActionResult ConfirmSubscriptions(ManageSubsModel m) { m.UpdateSubscriptions(); var Staff = CurrentDatabase.StaffPeopleForOrg(m.masterorgid); var msg = CurrentDatabase.ContentHtml("ConfirmSubscriptions", Resource1.ConfirmSubscriptions); var orgname = m.Description(); msg = msg.Replace("{org}", orgname).Replace("{details}", m.Summary); CurrentDatabase.Email(Staff.First().FromEmail, m.person, "Subscription Confirmation", msg); CurrentDatabase.Email(m.person.FromEmail, Staff, "Subscriptions managed", $@"{m.person.Name} managed subscriptions to {m.Description()}<br/>{m.Summary}"); SetHeaders(m.masterorgid); m.Log("Confirm"); return(View("ManageSubscriptions/Confirm", m)); }
public ActionResult Application(int orgid, int peopleid, string content) { #if DEBUG2 var c = System.IO.File.ReadAllText(Server.MapPath("/Application.html")); var replacements = new EmailReplacements(CurrentDatabase, c, null); #else var c = CurrentDatabase.Content(content); if (c == null) { return(Message("no content at " + content)); } var replacements = new EmailReplacements(CurrentDatabase, c.Body, null); #endif var p = CurrentDatabase.LoadPersonById(peopleid); CurrentDatabase.SetCurrentOrgId(orgid); ViewBag.html = replacements.DoReplacements(CurrentDatabase, p); return(View()); }
public ActionResult ResetTips() { CurrentDatabase.ExecuteCommand("DELETE dbo.Preferences WHERE Preference LIKE 'hide-tip-%' AND UserId = {0}", Util.UserId); var d = Session["preferences"] as Dictionary <string, string>; var keys = d.Keys.Where(kk => kk.StartsWith("hide-tip-")).ToList(); foreach (var k in keys) { d.Remove(k); } if (Request.UrlReferrer != null) { return(Redirect(Request.UrlReferrer.ToString())); } return(Redirect("/")); }
private ActionResult ErrorResult(OnlineRegModel m, Exception ex, string errorDisplay) { // ReSharper disable once EmptyGeneralCatchClause try { m.UpdateDatum(); } catch { } var ex2 = new Exception($"{errorDisplay}, {CurrentDatabase.ServerLink("/OnlineReg/RegPeople/") + m.DatumId}", ex); ErrorSignal.FromCurrentContext().Raise(ex2); m.Log(ex2.Message); TempData["error"] = errorDisplay; TempData["stack"] = ex.StackTrace; return(Content("/Error/")); }
public ActionResult RunScript(string name, string parameter = null, string title = null) { var content = CurrentDatabase.ContentOfTypeSql(name); if (content == null) { return(Content("no content")); } var cs = User.IsInRole("Finance") ? Util.ConnectionStringReadOnlyFinance : Util.ConnectionStringReadOnly; var cn = new SqlConnection(cs); cn.Open(); var d = Request.QueryString.AllKeys.ToDictionary(key => key, key => Request.QueryString[key]); var p = new DynamicParameters(); foreach (var kv in d) { p.Add("@" + kv.Key, kv.Value); } string script = ScriptModel.RunScriptSql(parameter, content, p, ViewBag); if (script.StartsWith("Not Authorized")) { return(Message(script)); } ViewBag.Report = name; ViewBag.Name = title ?? $"{name.SpaceCamelCase()} {parameter}"; if (script.Contains("pagebreak")) { ViewBag.report = PythonModel.PageBreakTables(CurrentDatabase, script, p); return(View("RunScriptPageBreaks")); } ViewBag.Url = Request.Url?.PathAndQuery; var rd = cn.ExecuteReader(script, p, commandTimeout: 1200); ViewBag.ExcelUrl = Request.Url?.AbsoluteUri.Replace("RunScript/", "RunScriptExcel/"); return(View(rd)); }
public ActionResult SaveSettings(string data) { if (!Auth()) { return(CheckInMessage.createErrorReturn("Authentication failed, please try again", CheckInMessage.API_ERROR_INVALID_CREDENTIALS)); } CheckInMessage dataIn = CheckInMessage.createFromString(data); CheckInSettingsEntry entry = JsonConvert.DeserializeObject <CheckInSettingsEntry>(dataIn.data); CheckInSetting setting = (from e in CurrentDatabase.CheckInSettings where e.Name == entry.name select e).SingleOrDefault(); CheckInMessage br = new CheckInMessage(); if (setting == null) { setting = new CheckInSetting { Name = entry.name, Settings = entry.settings }; CurrentDatabase.CheckInSettings.InsertOnSubmit(setting); br.data = "Settings saved"; } else { setting.Settings = entry.settings; br.data = "Settings updated"; } CurrentDatabase.SubmitChanges(); br.setNoError(); br.id = setting.Id; br.count = 1; return(br); }