コード例 #1
0
ファイル: SMSHelper.cs プロジェクト: zanderzhg/RC.ADS.WebAPP
        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);
        }
コード例 #2
0
ファイル: SmsManager.cs プロジェクト: evkap/DVS
		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);
			}
		}
コード例 #3
0
		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();
			}
		}
コード例 #4
0
ファイル: TaskManager.cs プロジェクト: evkap/DVS
		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);
		}