private async Task <ActionResult> SendSingleTextMessage(TextMessageViewModel viewModel, TwillioWrapperClient smsClient, string fromNumber) { var smsMessage = new SmsMessage { Message = viewModel.TextMessageContact.Message, FromNumber = fromNumber }; // set 'to' number if (!string.IsNullOrEmpty(viewModel.TestToNumber)) { smsMessage.ToNumber = viewModel.TestToNumber; } else if (!string.IsNullOrEmpty(viewModel.TextMessageContact.ToPhoneNumber)) { smsMessage.ToNumber = viewModel.TextMessageContact.ToPhoneNumber; } try { // Send SMS message IResponse response = await smsClient.SendSmsAsync(smsMessage); if (IsResponseOk(response)) { viewModel.StatusNotification = GetStatusNotification(TextMessageStatus.SingleTextDelivered, viewModel.TextMessageContact.MemberFullName); viewModel.TextMessageContact.DateSent = DateTime.Now; // Store contact record StoreTextMessage(viewModel.TextMessageContact); } else { viewModel.StatusNotification = GetStatusNotification(TextMessageStatus.SingleTextNotDelivered, viewModel.TextMessageContact.MemberFullName); } } catch (Exception ex) { // log caught exception with Elmah ErrorSignal.FromCurrentContext().Raise(ex); viewModel.StatusNotification = GetStatusNotification(TextMessageStatus.SingleTextNotDelivered, viewModel.TextMessageContact.MemberFullName); } if (viewModel.StatusNotification != null) { viewModel.HasStatusNotification = true; } return(View(viewModel)); }
public async Task SendBulkSMSToAllDeacons(string message) { string fromNumber = GetFromNumber(); var deacons = _unitOfWork.AppUserRepository.FindUsersByRole(enums.AppUserRole.Deacon); var smsClient = new TwillioWrapperClient(); smsClient.Init(); foreach (var deacon in deacons) { var smsMessage = new SmsMessage { ToNumber = deacon.PhoneNumber, FromNumber = fromNumber, Message = message }; // Send SMS message var response = await smsClient.SendSmsAsync(smsMessage); } }
/// <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); } } }
private async Task <ActionResult> SendBulkTextMessages(TextMessageViewModel viewModel, TwillioWrapperClient smsClient, string fromNumber) { bool isGoodResponse = true; foreach (var member in viewModel.Members) { var ccgMember = unitOfWork.MemberRepository.FindMemberById(member.MemberId); string toNumber = string.Empty; // check if cell number exists first if (!string.IsNullOrEmpty(ccgMember.CellPhoneNumber)) { toNumber = ccgMember.CellPhoneNumber; } else { toNumber = ccgMember.PhoneNumber; } // use test number is exists if (!string.IsNullOrEmpty(viewModel.TestToNumber)) { toNumber = viewModel.TestToNumber; } var smsMessage = new SmsMessage { ToNumber = toNumber, FromNumber = fromNumber, Message = viewModel.TextMessageContact.Message, }; try { // Send SMS message IResponse response = await smsClient.SendSmsAsync(smsMessage); if (IsResponseOk(response)) { viewModel.TextMessageContact.DateSent = DateTime.Now; // Store contact record viewModel.TextMessageContact.MemberId = member.MemberId; StoreTextMessage(viewModel.TextMessageContact); } else { isGoodResponse = false; } } catch (Exception ex) { // log caught exception with Elmah ErrorSignal.FromCurrentContext().Raise(ex); isGoodResponse = false; } } // Send notification to user with bulk text message status. // If any text fails user gets a not delivered message. if (isGoodResponse) { viewModel.StatusNotification = GetStatusNotification(TextMessageStatus.BulkTextsDelivered, viewModel.TextMessageContact.MemberFullName); } else { viewModel.StatusNotification = GetStatusNotification(TextMessageStatus.BulkTextsNotDelivered, viewModel.TextMessageContact.MemberFullName); } if (viewModel.StatusNotification != null) { viewModel.HasStatusNotification = true; } return(View(viewModel)); }