public SMSAppTemplate GetSMSAppTemplate(SMSTemplateType smsType) { DateTime dt = DateTime.Now; //统计X年X月,App发送了多少条短信,取发送少于100条的数据 var appSendQtys = _context.SendSMSLogs.Where(x => x.Year == DateTime.Now.Year && x.Month == DateTime.Now.Month) .OrderByDescending(x => x.CreateTime) .GroupBy(x => x.Appid) .Select(x => new { appid = x.Key, sendSmsQty = x.FirstOrDefault() == null?0:x.FirstOrDefault().QuantityAfterSend }); var result = (from T in _context.SMSAppTemplates join A in _context.SMSApp on T.Appid equals A.appid where T.TemplateType == smsType select T).FirstOrDefault(); return(result); }
public void SendSMS(string userPhone, int appraiserOrderId, SMSTemplateType smsType, Dictionary<string, string> replaceDictionary = null) { if (!_config.IsSMSEnabled) throw new SystemException("SMS sending is disabled"); if (string.IsNullOrWhiteSpace(userPhone)) throw new ArgumentNullException("User phone cannot be blank for SMS notification"); string clearedPhoneType = string.Empty; var phoneValidationResult = Messaging.MessageController.PhoneNumberIsValid(userPhone, out clearedPhoneType); if (phoneValidationResult == PhoneNumberValidity.Invalid) throw new ArgumentOutOfRangeException("Incorrect mobile phone format: " + userPhone); SetupAccount(); CheckAccount(); var template = _smsRepository.GetBySMSTemplateType(smsType); var smsBody = new StringBuilder(template.Body); if (replaceDictionary != null) { foreach (var replacePair in replaceDictionary) smsBody.Replace(replacePair.Key, replacePair.Value); } var smsMessage = new SMSMessage(); smsMessage.PhoneNumber = clearedPhoneType; smsMessage.MessageText = smsBody.ToString(); smsMessage.MessageID = appraiserOrderId; MessageQueue batch = new MessageQueue(); batch.Add(smsMessage); string smsTypeString = smsType.ToString(); Logger.WriteInfo(string.Format("Sending {0} sms to {1} ", smsTypeString, userPhone)); var result = Messaging.MessageController.SendMessageBatchSynchronous(batch); if (result.Success) Logger.WriteInfo(string.Format("Sending {0} sms to {1} success", smsTypeString, userPhone)); else { Logger.WriteInfo(string.Format("Sending {0} sms to {1} failed", smsTypeString, userPhone)); if (result.Exception != null) throw new Exception(string.Format("Error occured during ending {0} sms to {1}.", smsTypeString, userPhone), result.Exception); } }
private AppraiserOrder GetAppraiserOrderBySMSType(SMSTemplateType smsType) { switch (smsType) { case SMSTemplateType.NewAppraisalRequested: string publicOrderId = GetParamValue(TaskParamsKey.PublicOrderId); int? userId = SafeConvert.ToInt(GetParamValue(TaskParamsKey.UserId)); if (!userId.HasValue || String.IsNullOrEmpty(publicOrderId)) throw new ArgumentNullException("publicOrderId and userId cannot be null or empty"); return _appraiserOrderRepository.Get(e => e.Order.OrderPublicId == publicOrderId && e.AppraiserUser.User.Id == userId).Single(); case SMSTemplateType.AppraisalCongratulations: case SMSTemplateType.AppraisalResponding: case SMSTemplateType.AssigmentUnavaibleByCriteria: case SMSTemplateType.AssigmentUnavaibleByDueDateOrOtherUser: case SMSTemplateType.ResponseDuplication: var appraiserOrderId = SafeConvert.ToInt(GetParamValue(TaskParamsKey.AppraiserOrderId)); if (!appraiserOrderId.HasValue) throw new ArgumentNullException("appraiserOrderId cannot be null or empty"); return _appraiserOrderRepository.GetById(appraiserOrderId.Value); default: throw new ArgumentOutOfRangeException(); } }
public void SendAppraiserOrderNotificationSMS(SMSTemplateType SMStype, int appraiserOrderId) { var parameters = new Dictionary<TaskParamsKey, string>(); parameters.Add(TaskParamsKey.SMSTemplate, SMStype.ToString()); parameters.Add(TaskParamsKey.AppraiserOrderId, appraiserOrderId.ToString()); _backgroundService.AddTask(TaskTypeEnum.SendAppraiserOrderInvitationSMS, parameters); }