Example #1
0
        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));
        }
Example #2
0
        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);
                }
            }
        }