public ActionResult SendDeaconsNotification(NotificationViewModel viewModel) { if (ModelState.IsValid) { var appUsers = unitOfWork.AppUserRepository.FindUsersByRole(enums.AppUserRole.Deacon); // If url is not empty and link text is, use title as link text. string linkText = !string.IsNullOrEmpty(viewModel.Url) && string.IsNullOrEmpty(viewModel.LinkText) ? viewModel.Title : viewModel.LinkText; foreach (var appUser in appUsers) { if (appUser.UserName != User.Identity.Name) { NotifyHelper.SendUserNotification(appUser.UserName, viewModel.Title, viewModel.Message, viewModel.Url, linkText, viewModel.NotifyType); } } string title = "Bulk Notifications Sent"; string message = "Your notification to all deacons have been sent."; NotificationType notifyType = NotificationType.Info; NotifyHelper.SendUserNotification(User.Identity.Name, title, message, type: notifyType); } return(View("Index", viewModel)); }
private void NotifyOfPassAlongContact(string username, string deaconName) { string title = "Review Contact Record"; string message = $"Please review this contact record from {deaconName}."; string url = Url.Action("PassAlongContacts", "PassAlong"); string linkText = "Review Contacts"; NotifyHelper.SendUserNotification(username, title, message, url, linkText, PushNotifications.NotificationType.Info); }
public async Task <ActionResult> Edit(EditMemberViewModel viewModel) { if (ModelState.IsValid) { // All member edits should send change request to CR manager // Only send change request if admin or member's deacon if (AuthHelper.IsMemberDeacon(User.Identity.Name, viewModel.Id) || AuthHelper.HasAdminAccess(User.Identity.Name)) { var ccgMemberSelected = unitOfWork.MemberRepository.FindMemberById(viewModel.Id); // concat ccg name with deacon names _ccgService.SetCCGViewName(ccgMemberSelected.CCG); // user logged in var user = unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name); // map edit view model to change request obj. var changeRequest = Mapper.Map <ChangeRequest>(viewModel); changeRequest.CRDate = DateTime.Now; changeRequest.CcgMemberId = viewModel.CcgMemberId; changeRequest.DeaconId = user.Id; // store change request in database unitOfWork.ChangeRequestRepository.Add(changeRequest); await SendCRManagersMessageAsync(user.FullName); string title = "Change Request Sent"; string message = "Your change request has been submitted."; NotifyHelper.SendUserNotification(user.UserName, title, message, type: NotificationType.Success); ViewBag.Message = message; } else { return(View("EditDenied")); } } ViewBag.CCGs = new SelectList(unitOfWork.CCGRepository.FindAll(), "Id", "CcgName", viewModel.CcgId); return(Redirect(viewModel.ReturnUrl)); }
private void NotifyOfPrayerRequest(string deaconName) { string title = "New Prayer Request"; string message = $"Deacon {deaconName} has submitted a new prayer request."; string url = Url.Action("Index", "PrayerRequest", new { getAll = true }); string linkText = "Prayer Requests"; var appUsers = unitOfWork.AppUserRepository.FindAll(); foreach (var appUser in appUsers) { if (appUser.UserName != User.Identity.Name) { NotifyHelper.SendUserNotification(appUser.UserName, title, message, url, linkText, PushNotifications.NotificationType.Info); } } }
/// <summary> /// Sends change request managers a text message and notification. /// </summary> /// <param name="crManagers">The change request managers.</param> private async Task SendCRManagersMessageAsync(string appUserName) { string title = "New Change Request"; string message = $"Deacon {appUserName} has submitted a new change request."; string url = Url.Action("Index", "ChangeRequests"); string linkText = "Change Requests"; // user(s) assigned to handle change requests var crManagers = unitOfWork.AppUserRepository.FindUsers(u => u.ChangeRequestManager).ToList(); var smsClient = new TwillioWrapperClient(); smsClient.Init(); foreach (var cr in crManagers) { NotifyHelper.SendUserNotification(cr.UserName, title, message, url, linkText, type: NotificationType.Info); var smsMessage = new SmsMessage { Message = message, ToNumber = string.IsNullOrEmpty(cr.CellNumber) ? cr.PhoneNumber : cr.CellNumber }; try { // Send SMS message await smsClient.SendSmsAsync(smsMessage); } catch (Exception ex) { // log caught exception with Elmah ErrorSignal.FromCurrentContext().Raise(ex); } } }