public void SetEmailPreference(EmailPreference preference) { if (this.EmailPreference != preference.ToFriendlyString()) { this.EmailPreference = preference.ToFriendlyString(); } }
public void sortMailingListTest() { //Arrange string[] lines = new string[2]; lines[0] = "5bc49355-94e3-4dc7-a79f-0da4306760f3|true|true|true"; lines[1] = "482b077d-a8c4-4385-9e6a-3e8fe0c88b8b|true|false|false"; EmailPreference myPreference = new EmailPreference(); myPreference.UserID = System.Guid.Parse("5bc49355-94e3-4dc7-a79f-0da4306760f3"); myPreference.IsUnsubscribed = true; myPreference.AllowMarketingEmails = true; myPreference.AllowMarketingSMS = true; EmailPreference mySecondPreference = new EmailPreference(); mySecondPreference.UserID = System.Guid.Parse("482b077d-a8c4-4385-9e6a-3e8fe0c88b8b"); mySecondPreference.IsUnsubscribed = true; mySecondPreference.AllowMarketingEmails = false; mySecondPreference.AllowMarketingSMS = false; List <EmailPreference> mailingList = new List <EmailPreference>(); mailingList.Add(myPreference); mailingList.Add(mySecondPreference); //Act List <EmailPreference> sortedList = MailPreferenceHelper.sortMailingList(mailingList); //Assert Assert.That(sortedList.IndexOf(mySecondPreference).Equals(0)); }
/// <summary> /// Executes the specified context. /// </summary> /// <param name="context">The context.</param> public virtual void Execute(IJobExecutionContext context) { var rockContext = new RockContext(); var personService = new PersonService(rockContext); var duplicateEmails = personService.Queryable() .GroupBy(p => p.Email) .Where(p => p.Count() >= 2) .Select(p => p.Key) .ToList(); var duplicateEmailPeople = personService.Queryable().Where(p => duplicateEmails.Contains(p.Email)).ToList(); foreach (var duplicateEmail in duplicateEmails) { var people = duplicateEmailPeople.Where(p => p.Email == duplicateEmail); EmailPreference maxPreference = people.Max(p => p.EmailPreference); if (people.Any(p => p.EmailPreference != maxPreference)) { foreach (var person in people.ToList()) { person.EmailPreference = maxPreference; } } } rockContext.SaveChanges(); }
public async Task <IActionResult> Preferences(string id, [Bind("LocalUserID,CaseCreation,CaseAssignment,GroupAssignment,CommentCreation,AttachmentCreation,CaseProcessed,CasesCreatedByUser,CasesAssignedToUser,CasesAssignedToUsersGroups")] EmailPreference pref) { //pref.LocalUserID = User.Identity.Name; if (id != pref.LocalUserID) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(pref); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EmailPreferenceExists(pref.LocalUserID)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Details", "LocalUsers", new { id = User.Identity.Name })); } return(View(pref)); }
public async Task <IActionResult> Create([Bind("LocalUserID,FirstName,LastName,EmailID")] LocalUser localUser) { if (ModelState.IsValid) { _context.Add(localUser); EmailPreference e_pref = new EmailPreference { LocalUserID = localUser.LocalUserID, CaseCreation = true, CaseAssignment = true, GroupAssignment = true, CommentCreation = true, AttachmentCreation = true, CaseProcessed = true, CasesCreatedByUser = true, CasesAssignedToUser = false, CasesAssignedToUsersGroups = false }; _context.Add(e_pref); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(localUser)); }
public static string ToFriendlyString(this EmailPreference me) { switch (me) { case EmailPreference.GMAIL: return("gmail"); default: return(""); } }
public async Task UpdateEmailPreferenceAsync(int accountId, EmailPreference emailPreference) { await _sqlService .ExecuteAsync ( _dickinsonBrosDB.ConnectionString, UPDATE_EMAIL_PREFERENCES, new { AccountId = accountId, EmailPreference = emailPreference }, commandType : CommandType.StoredProcedure ); }
/// <summary> /// Allows for the creation of a mailing list /// </summary> /// <param name="lines"></param> /// <returns></returns> public static List <EmailPreference> createMailingList(string[] lines) { var mailingList = new List <EmailPreference>(); for (int j = 1; j < lines.Length; j++) { var col = lines[j].Split('|'); for (int i = 0; i < col.Length; i += 4) { var record = new EmailPreference { UserID = System.Guid.Parse(col[i]), IsUnsubscribed = bool.Parse(col[i + 1]), AllowMarketingEmails = bool.Parse(col[i + 2]), AllowMarketingSMS = bool.Parse(col[i + 3]) }; mailingList.Add(record); } } return(mailingList); }
/// <summary> /// Handles the Click event of the btnSubmit control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnSubmit_Click(object sender, EventArgs e) { var rockContext = new RockContext(); nbUnsubscribeSuccessMessage.Visible = false; nbEmailPreferenceSuccessMessage.Visible = false; if (rbUnsubscribe.Checked && rbUnsubscribe.Visible) { bool unsubscribed = UnsubscribeFromLists(); if (unsubscribed) { Guid?workflowGuid = GetAttributeValue(AttributeKey.UnsubscribeWorkflow).AsGuidOrNull(); WorkflowTypeCache workflowType = null; var workflowService = new WorkflowService(rockContext); if (workflowGuid != null) { workflowType = WorkflowTypeCache.Get(workflowGuid.Value); } // Start workflow for this person if (workflowType != null) { Dictionary <string, string> attributes = new Dictionary <string, string>(); if (cblUnsubscribeFromLists.SelectedValuesAsInt.Any()) { attributes.Add("CommunicationListIds", cblUnsubscribeFromLists.SelectedValues.ToList().AsDelimited(",")); StartWorkflow(workflowService, workflowType, attributes, string.Format("{0}", _person.FullName), _person); } } } return; } if (rbUpdateEmailAddress.Checked) { // Though the chance for empty email address is very minimal as client side validation is in place. if (string.IsNullOrEmpty(tbEmail.Text)) { nbEmailPreferenceSuccessMessage.NotificationBoxType = NotificationBoxType.Danger; nbEmailPreferenceSuccessMessage.Text = "Email is required."; } else { UpdateEmail(); } return; } if (_person != null) { var personService = new PersonService(rockContext); var person = personService.Get(_person.Id); if (person != null) { EmailPreference emailPreference = EmailPreference.EmailAllowed; if (rbEmailPreferenceNoMassEmails.Checked) { emailPreference = EmailPreference.NoMassEmails; } if (rbEmailPreferenceDoNotEmail.Checked || rbNotInvolved.Checked) { emailPreference = EmailPreference.DoNotEmail; } person.EmailPreference = emailPreference; if (rbNotInvolved.Checked) { var inactiveReasonDefinedValue = DefinedValueCache.Get(ddlInactiveReason.SelectedValue.AsInteger()); var selfInactivatedDefinedValue = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.PERSON_REVIEW_REASON_SELF_INACTIVATED); // If the inactive reason note is the same as the current review reason note, update it also. string inactiveReasonNote = (person.InactiveReasonNote ?? string.Empty) == (person.ReviewReasonNote ?? string.Empty) ? tbInactiveNote.Text : person.InactiveReasonNote; // See if inactivating just one person or the whole family if (!cbInactFamily.Checked) { personService.InactivatePerson(person, inactiveReasonDefinedValue, inactiveReasonNote, selfInactivatedDefinedValue, tbInactiveNote.Text); } else { // Update each person var inactivatePersonList = personService.GetFamilyMembers(_person.Id, true).Select(m => m.Person); foreach (var inactivatePerson in inactivatePersonList) { personService.InactivatePerson(inactivatePerson, inactiveReasonDefinedValue, inactiveReasonNote, selfInactivatedDefinedValue, tbInactiveNote.Text); } } } else { var newRecordStatus = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_ACTIVE); if (newRecordStatus != null) { person.RecordStatusValueId = newRecordStatus.Id; } person.RecordStatusReasonValueId = null; } rockContext.SaveChanges(); nbEmailPreferenceSuccessMessage.Visible = true; } } }
/// <summary> /// Handles the Click event of the btnSubmit control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnSubmit_Click(object sender, EventArgs e) { nbUnsubscribeSuccessMessage.Visible = false; nbEmailPreferenceSuccessMessage.Visible = false; if (rbUnsubscribe.Checked && rbUnsubscribe.Visible) { UnsubscribeFromLists(); return; } if (rbUpdateEmailAddress.Checked) { // Though the chance for empty email address is very minimal as client side validation is in place. if (string.IsNullOrEmpty(tbEmail.Text)) { nbEmailPreferenceSuccessMessage.NotificationBoxType = NotificationBoxType.Danger; nbEmailPreferenceSuccessMessage.Text = "Email is required."; } else { UpdateEmail(); } return; } if (_person != null) { var rockContext = new RockContext(); var service = new PersonService(rockContext); var person = service.Get(_person.Id); if (person != null) { EmailPreference emailPreference = EmailPreference.EmailAllowed; if (rbEmailPreferenceNoMassEmails.Checked) { emailPreference = EmailPreference.NoMassEmails; } if (rbEmailPreferenceDoNotEmail.Checked || rbNotInvolved.Checked) { emailPreference = EmailPreference.DoNotEmail; } person.EmailPreference = emailPreference; if (rbNotInvolved.Checked) { var newRecordStatus = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_INACTIVE); if (newRecordStatus != null) { person.RecordStatusValueId = newRecordStatus.Id; } var newInactiveReason = DefinedValueCache.Get(ddlInactiveReason.SelectedValue.AsInteger()); if (newInactiveReason != null) { person.RecordStatusReasonValueId = newInactiveReason.Id; } var newReviewReason = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.PERSON_REVIEW_REASON_SELF_INACTIVATED); if (newReviewReason != null) { person.ReviewReasonValueId = newReviewReason.Id; } // If the inactive reason note is the same as the current review reason note, update it also. if ((person.InactiveReasonNote ?? string.Empty) == (person.ReviewReasonNote ?? string.Empty)) { person.InactiveReasonNote = tbInactiveNote.Text; } person.ReviewReasonNote = tbInactiveNote.Text; } else { var newRecordStatus = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_ACTIVE); if (newRecordStatus != null) { person.RecordStatusValueId = newRecordStatus.Id; } person.RecordStatusReasonValueId = null; } rockContext.SaveChanges(); nbEmailPreferenceSuccessMessage.Visible = true; return; } } }
/// <summary> /// Handles the Click event of the btnSubmit control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnSubmit_Click(object sender, EventArgs e) { if (_person != null) { var changes = new List <string>(); var rockContext = new RockContext(); var service = new PersonService(rockContext); var person = service.Get(_person.Id); if (person != null) { EmailPreference emailPreference = EmailPreference.EmailAllowed; switch (rblEmailPreference.SelectedValue) { case "1": { emailPreference = EmailPreference.NoMassEmails; break; } case "2": case "3": { emailPreference = EmailPreference.DoNotEmail; break; } } History.EvaluateChange(changes, "Email Preference", person.EmailPreference, emailPreference); person.EmailPreference = emailPreference; if (rblEmailPreference.SelectedValue == "3") { var newRecordStatus = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_INACTIVE); if (newRecordStatus != null) { History.EvaluateChange(changes, "Record Status", DefinedValueCache.GetName(person.RecordStatusValueId), newRecordStatus.Value); person.RecordStatusValueId = newRecordStatus.Id; } var newInactiveReason = DefinedValueCache.Read(ddlInactiveReason.SelectedValue.AsInteger()); if (newInactiveReason != null) { History.EvaluateChange(changes, "Record Status Reason", DefinedValueCache.GetName(person.RecordStatusReasonValueId), newInactiveReason.Value); person.RecordStatusReasonValueId = newInactiveReason.Id; } var newReviewReason = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_REVIEW_REASON_SELF_INACTIVATED); if (newReviewReason != null) { History.EvaluateChange(changes, "Review Reason", DefinedValueCache.GetName(person.ReviewReasonValueId), newReviewReason.Value); person.ReviewReasonValueId = newReviewReason.Id; } // If the inactive reason note is the same as the current review reason note, update it also. if ((person.InactiveReasonNote ?? string.Empty) == (person.ReviewReasonNote ?? string.Empty)) { History.EvaluateChange(changes, "Inactive Reason Note", person.InactiveReasonNote, tbInactiveNote.Text); person.InactiveReasonNote = tbInactiveNote.Text; } History.EvaluateChange(changes, "Review Reason Note", person.ReviewReasonNote, tbInactiveNote.Text); person.ReviewReasonNote = tbInactiveNote.Text; } else { var newRecordStatus = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_ACTIVE); if (newRecordStatus != null) { History.EvaluateChange(changes, "Record Status", DefinedValueCache.GetName(person.RecordStatusValueId), newRecordStatus.Value); person.RecordStatusValueId = newRecordStatus.Id; } History.EvaluateChange(changes, "Record Status Reason", DefinedValueCache.GetName(person.RecordStatusReasonValueId), string.Empty); person.RecordStatusReasonValueId = null; } HistoryService.AddChanges( rockContext, typeof(Person), Rock.SystemGuid.Category.HISTORY_PERSON_DEMOGRAPHIC_CHANGES.AsGuid(), person.Id, changes, CurrentPersonAliasId); rockContext.SaveChanges(); nbMessage.Visible = true; return; } } }
public async Task UpdateEmailPreferenceAsync(int accountId, EmailPreference emailPreference) { await _accountDBService.UpdateEmailPreferenceAsync(accountId, emailPreference); }
public async Task <UpdateEmailPreferenceWithTokenResult> UpdateEmailPreferenceWithTokenAsync(string emailPreferenceToken, EmailPreference emailPreference) { var updateEmailPreferenceWithTokenResult = await _accountDBService.UpdateEmailPreferenceWithTokenAsync(emailPreferenceToken, emailPreference); if (!updateEmailPreferenceWithTokenResult.VaildToken) { return(UpdateEmailPreferenceWithTokenResult.InvaildToken); } return(UpdateEmailPreferenceWithTokenResult.Successful); }
public async Task <UpdateEmailPreferenceWithTokenDBResult> UpdateEmailPreferenceWithTokenAsync(string emailPreferenceToken, EmailPreference emailPreference) { return(await _sqlService .QueryFirstAsync <UpdateEmailPreferenceWithTokenDBResult> ( _dickinsonBrosDB.ConnectionString, UPDATE_EMAIL_PREFERENCES_WITH_TOKEN, new { emailPreferenceToken, emailPreference }, commandType : CommandType.StoredProcedure )); }
public async Task <IActionResult> Index() { var ADemail = User.Identity.Name; //Console.WriteLine(ADemail); var LocalUserEmail = _context.LocalUser .FromSqlRaw("SELECT * FROM dbo.LocalUser where LocalUserID={0}", ADemail) .ToList(); var c = LocalUserEmail.Count; if (c == 0) { //Console.WriteLine("Creating Local User"); Graph::GraphServiceClient graphClient = GetGraphServiceClient(new[] { Constants.ScopeUserRead }); var me = await graphClient.Me.Request().GetAsync() as Microsoft.Graph.User; var properties = me.GetType().GetProperties(); IDictionary <string, string> LocalUserAttributes = new Dictionary <string, string>(); foreach (var child in properties) { object value = child.GetValue(me); string stringRepresentation; if (value is string) { stringRepresentation = value?.ToString(); } else { stringRepresentation = ""; } if (child.Name == "OnPremisesSamAccountName") { LocalUserAttributes.Add("NetID", stringRepresentation); } else if (child.Name == "GivenName") { LocalUserAttributes.Add("FirstName", stringRepresentation); } else if (child.Name == "Surname") { LocalUserAttributes.Add("LastName", stringRepresentation); } else if (child.Name == "Mail") { LocalUserAttributes.Add("EmailID", stringRepresentation); } } //ViewData["Me"] = me; var CreateUser = new LocalUser { LocalUserID = LocalUserAttributes["EmailID"], FirstName = LocalUserAttributes["FirstName"], LastName = LocalUserAttributes["LastName"], EmailID = LocalUserAttributes["NetID"] }; _context.Add(CreateUser); EmailPreference e_pref = new EmailPreference { LocalUserID = CreateUser.LocalUserID, CaseCreation = true, CaseAssignment = true, GroupAssignment = true, CommentCreation = true, AttachmentCreation = true, CaseProcessed = true, CasesCreatedByUser = true, CasesAssignedToUser = false, CasesAssignedToUsersGroups = false }; _context.Add(e_pref); await _context.SaveChangesAsync(); /* * Console.WriteLine("Created"); * Console.WriteLine(LocalUserAttributes["NetID"]); * Console.WriteLine(LocalUserAttributes["FirstName"]); * Console.WriteLine(LocalUserAttributes["LastName"]); * Console.WriteLine(LocalUserAttributes["EmailID"]); */ } else { //Console.WriteLine("User Already Exists!"); } // Populate or Check validity of User's group membership var UsersLGroups = _context.UserGroup .Where(m => m.LocalUserID == ADemail) .ToList(); HashSet <string> UsersLocalGroups = new HashSet <string>(); foreach (var g in UsersLGroups) { UsersLocalGroups.Add(g.LocalGroupID); } HashSet <string> UsersRetrievedGroups = new HashSet <string>(); foreach (var claim in User.Claims) { if (claim.Type == "groups") { UsersRetrievedGroups.Add(claim.Value); } } HashSet <string> AllLocalGroups = new HashSet <string>(); var AllGroups = _context.LocalGroup.ToList(); foreach (var g in AllGroups) { AllLocalGroups.Add(g.LocalGroupID); } HashSet <string> GroupsToBeAdded = new HashSet <string>(); HashSet <string> GroupsToBeRemoved = new HashSet <string>(); // Check for every groups that is associated with our application (Resolve) foreach (var group in AllLocalGroups) { if (UsersRetrievedGroups.Contains(group)) { if (UsersLocalGroups.Contains(group)) { } else { GroupsToBeAdded.Add(group); } } else { if (UsersLocalGroups.Contains(group)) { GroupsToBeRemoved.Add(group); } else { } } } foreach (var g in GroupsToBeAdded) { var test = new UserGroup { LocalGroupID = g, LocalUserID = ADemail }; _context.Add(test); } foreach (var g in GroupsToBeRemoved) { var test = _context.UserGroup.Single(b => b.LocalUserID == ADemail && b.LocalGroupID == g); _context.Remove(test); } await _context.SaveChangesAsync(); // Cases created by the User(or on behalf of user), assigned to the User, and assigned to the groups to which the User belongs to var UCases = await _context.LocalUser // Created by the User .Include(s => s.Cases.Where(p => p.Processed == 0)) .ThenInclude(w => w.CaseType) // Including Approvers .Include(s => s.Cases.Where(p => p.Processed == 0)) .ThenInclude(w => w.Approvers) .ThenInclude(w => w.LocalUser) // Created on behalf of the User .Include(s => s.OnBehalves.Where(p => p.Case.Processed == 0)) .ThenInclude(s => s.Case) .ThenInclude(s => s.CaseType) // Including Approvers .Include(s => s.OnBehalves.Where(p => p.Case.Processed == 0)) .ThenInclude(s => s.Case) .ThenInclude(s => s.Approvers) .ThenInclude(w => w.LocalUser) // Assigned to the User .Include(q => q.CasesforApproval.Where(p => p.Case.Processed == 0 && p.Approved == 0)) .ThenInclude(q => q.Case) .ThenInclude(q => q.CaseType) // Including Case Creator .Include(q => q.CasesforApproval.Where(p => p.Case.Processed == 0 && p.Approved == 0)) .ThenInclude(q => q.Case) .ThenInclude(q => q.LocalUser) // Including Approvers .Include(q => q.CasesforApproval.Where(p => p.Case.Processed == 0 && p.Approved == 0)) .ThenInclude(q => q.Case) .ThenInclude(q => q.Approvers) .ThenInclude(w => w.LocalUser) // Assigned to the Groups to which the user belongs to .Include(e => e.UserGroups) .ThenInclude(e => e.LocalGroup) .ThenInclude(e => e.GroupCases.Where(p => p.Case.Processed == 0)) .ThenInclude(e => e.Case) .ThenInclude(e => e.CaseType) // Including Case Creator .Include(e => e.UserGroups) .ThenInclude(e => e.LocalGroup) .ThenInclude(e => e.GroupCases.Where(p => p.Case.Processed == 0)) .ThenInclude(e => e.Case) .ThenInclude(e => e.LocalUser) // Including Approvers .Include(e => e.UserGroups) .ThenInclude(e => e.LocalGroup) .ThenInclude(e => e.GroupCases.Where(p => p.Case.Processed == 0)) .ThenInclude(e => e.Case) .ThenInclude(e => e.Approvers) .ThenInclude(w => w.LocalUser) .Include(e => e.EmailPreference) .FirstOrDefaultAsync(m => m.LocalUserID == ADemail); int group_case_count = 0; foreach (var item in UCases.UserGroups) { foreach (var item2 in item.LocalGroup.GroupCases) { group_case_count += 1; } } ViewData["group_case_count"] = group_case_count; return(View(UCases)); }
public int Save(EmailPreference _object) { int _returnValue = base.Save <EmailPreference>("spAddEditEmailPreference", _object); return(_returnValue); }