// 載入大量名單 public void Example01() { var model = new SendMessageRuleModel(); model.SendTitle = string.Empty; model.SendBody = "I_AM_SendBody"; model.RecipientFromType = RecipientFromType.FileUpload; model.RecipientFromFileUpload = new RecipientFromFileUploadModel { UploadedFileId = 123 }; model.RecipientFromCommonContact = new RecipientFromCommonContactModel { ContactIds = "1,2,3,4,5" }; model.RecipientFromGroupContact = new RecipientFromGroupContactModel { ContactIds = "1,2,3,4,5" }; model.RecipientFromManualInput = new RecipientFromManualInputModel { PhoneNumbers = "886921855554" }; model.SendTimeType = SendTimeType.Immediately; model.SendDeliver = new SendDeliverModel { SendTime = DateTime.UtcNow, }; model.SendCycleEveryDay = new SendCycleEveryDayModel { SendTime = DateTime.UtcNow, StartDate = DateTime.UtcNow, EndDate = DateTime.UtcNow, }; model.SendCycleEveryWeek = new SendCycleEveryWeekModel { SendTime = DateTime.UtcNow, DayOfWeeks = "1111111", StartDate = DateTime.UtcNow, EndDate = DateTime.UtcNow, }; model.SendCycleEveryMonth = new SendCycleEveryMonthModel { SendTime = DateTime.UtcNow, StartDate = DateTime.UtcNow, EndDate = DateTime.UtcNow, }; model.SendCycleEveryYear = new SendCycleEveryYearModel { SendTime = DateTime.UtcNow, StartDate = DateTime.UtcNow, EndDate = DateTime.UtcNow, }; model.SendCustType = SendCustType.OneWay; model.UseParam = false; model.SendMessageType = SendMessageType.SmsMessage; //model.CreatedUser = null; string output = JsonConvert.SerializeObject(model, Formatting.Indented); System.IO.File.WriteAllText(GetFilePath("載入大量名單"), output); }
public static DateTime?GetStartDate(SendMessageRuleModel model) { if (model.SendTimeType == SendTimeType.Cycle) { if (model.SendCycleEveryDay != null) { return(model.SendCycleEveryDay.StartDate); } else if (model.SendCycleEveryWeek != null) { return(model.SendCycleEveryWeek.StartDate); } else if (model.SendCycleEveryMonth != null) { return(model.SendCycleEveryMonth.StartDate); } else if (model.SendCycleEveryYear != null) { return(model.SendCycleEveryYear.StartDate); } else { return(null); } } else { return(null); } }
public static SendMessageRuleModel ConvertModel(SendMessageRuleModel model) { model.SendTime = GetSendTime(model); model.StartDate = GetStartDate(model); model.EndDate = GetEndDate(model); model.CycleString = GetCycleString(model); return(model); }
public static DateTime?GetSendTime(SendMessageRuleModel model) { if (model.SendTimeType == SendTimeType.Deliver) { var rule = AutoMapper.Mapper.Map <SendMessageRuleModel, SendMessageRule>(model); return(rule.GetSendTime()); } else { return(null); } }
public static string GetCycleString(SendMessageRuleModel model) { DateTime utcNow = DateTime.UtcNow; if (model.SendTimeType == SendTimeType.Cycle) { if (model.SendCycleEveryDay != null) { DateTime cycleDate = Converter.ToLocalTime( model.SendCycleEveryDay.SendTime, model.SendCycleEveryDay.ClientTimezoneOffset); return(string.Format("每天的{0}點{1}分", cycleDate.ToString("HH"), cycleDate.ToString("mm"))); } else if (model.SendCycleEveryWeek != null) { DateTime cycleDate = Converter.ToLocalTime( model.SendCycleEveryWeek.SendTime, model.SendCycleEveryWeek.ClientTimezoneOffset); List <DayOfWeek> dayOfWeeks = Converter.ToLocalDayOfWeeks( model.SendCycleEveryWeek.SendTime, model.SendCycleEveryWeek.GetDayOfWeeks(), model.SendCycleEveryWeek.ClientTimezoneOffset); // http://254698001.blog.51cto.com/2521548/711940 //return string.Format("每周({0})的{1}", // // 取得 DayOfWeek 的中文名稱(C#) // // http://zip.nvp.com.tw/forum.php?mod=viewthread&tid=1150 // string.Join("、", dayOfWeeks.Select(p => System.Globalization.DateTimeFormatInfo.CurrentInfo.DayNames[(int)p])), // cycleDate.ToString("HH:mm")); return(string.Format("{0}的{1}點{2}分", // 取得 DayOfWeek 的中文名稱(C#) // http://zip.nvp.com.tw/forum.php?mod=viewthread&tid=1150 string.Join("、", dayOfWeeks.Select(p => GetDayOfWeekString(p))), cycleDate.ToString("HH"), cycleDate.ToString("mm"))); } else if (model.SendCycleEveryMonth != null) { DateTime cycleDate = Converter.ToLocalTime( model.SendCycleEveryMonth.SendTime, model.SendCycleEveryMonth.ClientTimezoneOffset); return(string.Format("每月的{0}號{1}點{2}分", cycleDate.ToString("dd"), cycleDate.ToString("HH"), cycleDate.ToString("mm"))); } else if (model.SendCycleEveryYear != null) { DateTime cycleDate = Converter.ToLocalTime( model.SendCycleEveryYear.SendTime, model.SendCycleEveryYear.ClientTimezoneOffset); return(string.Format("每年的{0}月{1}號{2}點{3}分", cycleDate.ToString("MM"), cycleDate.ToString("dd"), cycleDate.ToString("HH"), cycleDate.ToString("mm"))); } else { return(string.Empty); } } else { return(string.Empty); } }
public HttpResponseMessage Post([FromBody] SendSMSModel sendSMSModel) //public HttpResponseMessage Post([FromBody] SendSMSModel sendSMSModel) { try { this.logService.Debug("BasicAuthApi::SendSMSController,Post({0})", JsonConvert.SerializeObject(sendSMSModel)); DateTime?sendTime = sendSMSModel.sendTime; string subject = sendSMSModel.subject; string content = sendSMSModel.content; string[] mobiles = sendSMSModel.mobiles; HttpResponseMessage returnVal = null; using (TransactionScope scope = context.CreateTransactionScope()) { bool isImmediately = !sendTime.HasValue; var model = new SendMessageRuleModel(); model.SendTitle = subject; model.SendBody = content; model.RecipientFromType = RecipientFromType.ManualInput; model.RecipientFromManualInput = new RecipientFromManualInputModel { PhoneNumbers = string.Join(",", mobiles) }; model.SendTimeType = isImmediately ? SendTimeType.Immediately : SendTimeType.Deliver; model.SendDeliver = isImmediately ? null : new SendDeliverModel { SendTime = sendTime.Value, ClientTimezoneOffset = ClientTimezoneOffset, }; model.SendCycleEveryDay = null; model.SendCycleEveryWeek = null; model.SendCycleEveryMonth = null; model.SendCycleEveryYear = null; model.SendCustType = SendCustType.OneWay; model.UseParam = false; model.SendMessageType = SendMessageType.SmsMessage; model.TotalReceiverCount = 0; model.TotalMessageCost = 0; model.RemainingSmsBalance = 0; model.CreatedTime = DateTime.UtcNow; model.UpdateClientTimezoneOffset(ClientTimezoneOffset); var rules = this.sendMessageRuleService.CreateSendMessageRuleFromWeb(CurrentUser, model); var result = rules.Select(p => new { balance = p.RemainingSmsBalance, // 發送後剩餘點數 smsCount = p.TotalReceiverCount, // 發送通數 price = p.TotalMessageCost, // 本次發送扣除點數 bulkId = p.Id, // 發送識別碼 }); returnVal = this.Request.CreateResponse(HttpStatusCode.OK, result); scope.Complete(); } return(returnVal); } catch (Exception ex) { this.logService.Error(ex); return(this.Request.CreateResponse(HttpStatusCode.InternalServerError, new { ErrorMessage = ex.Message, })); } }
public HttpResponseMessage Post([FromBody] SendParamSMSModel sendParamSMSModel) //public HttpResponseMessage Post([FromBody] SendParamSMSModel sendParamSMSModel) { try { this.logService.Debug("BasicAuthApi::SendParamSMSController,Post({0})", JsonConvert.SerializeObject(sendParamSMSModel)); DateTime?sendTime = sendParamSMSModel.sendTime; string subject = sendParamSMSModel.subject; string content = sendParamSMSModel.content; List <UploadedMessageReceiverModel> messageReceivers = sendParamSMSModel.messageReceivers; HttpResponseMessage returnVal = null; var ErrorMessages = new List <string>(); using (TransactionScope scope = context.CreateTransactionScope()) { bool isImmediately = !sendTime.HasValue; // Simulate SaveUploadedFile var entityUploadedFile = new UploadedFile(); entityUploadedFile.FileName = "FakeFileName"; entityUploadedFile.FilePath = "FakeFilePath"; entityUploadedFile.UploadedFileType = UploadedFileType.SendParamMessage; entityUploadedFile.CreatedUser = CurrentUser; entityUploadedFile.CreatedTime = DateTime.UtcNow; entityUploadedFile = AsyncHelper.RunSync(() => context.InsertAsync(entityUploadedFile)); // Simulate Insert UploadedMessageReceivers var blacklists = context.Set <Blacklist>().Where(p => p.CreatedUserId == CurrentUserId).ToList(); for (int i = 0; i < messageReceivers.Count; i++) { var _model = messageReceivers[i]; if (string.IsNullOrEmpty(_model.Mobile)) { continue; } var entity = new UploadedMessageReceiver(); entity.RowNo = i + 1; entity.Name = _model.Name; entity.Mobile = _model.Mobile; entity.Email = _model.Email; if (_model.SendTime.HasValue) { entity.SendTime = Converter.ToUniversalTime(_model.SendTime.Value, ClientTimezoneOffset); } else { entity.SendTime = null; } entity.ClientTimezoneOffset = ClientTimezoneOffset; entity.UseParam = true; entity.Param1 = _model.Param1; entity.Param2 = _model.Param2; entity.Param3 = _model.Param3; entity.Param4 = _model.Param4; entity.Param5 = _model.Param5; entity.CreatedUserId = CurrentUserId; entity.CreatedTime = entityUploadedFile.CreatedTime; entity.UploadedFile = entityUploadedFile; entity.UploadedSessionId = entityUploadedFile.Id; var error = string.Empty; var isValid = this.validationService.Validate(entity, blacklists, out error); if (!isValid) { ErrorMessages.Add(string.Format("{0}: {1}", entity.Mobile, error)); } // 目前就算驗證不過也沒關係,仍然可以存檔 entity = AsyncHelper.RunSync(() => context.InsertAsync(entity)); } var model = new SendMessageRuleModel(); model.SendTitle = subject; model.SendBody = content; model.RecipientFromType = RecipientFromType.FileUpload; model.RecipientFromFileUpload = new RecipientFromFileUploadModel { UploadedFileId = entityUploadedFile.Id, AddSelfToMessageReceiverList = false, }; model.SendTimeType = isImmediately ? SendTimeType.Immediately : SendTimeType.Deliver; model.SendDeliver = isImmediately ? null : new SendDeliverModel { SendTime = sendTime.Value, ClientTimezoneOffset = ClientTimezoneOffset, }; model.SendCycleEveryDay = null; model.SendCycleEveryWeek = null; model.SendCycleEveryMonth = null; model.SendCycleEveryYear = null; model.SendCustType = SendCustType.OneWay; model.UseParam = true; model.SendMessageType = SendMessageType.SmsMessage; model.TotalReceiverCount = 0; model.TotalMessageCost = 0; model.RemainingSmsBalance = 0; model.CreatedTime = DateTime.UtcNow; model.UpdateClientTimezoneOffset(ClientTimezoneOffset); var rules = this.sendMessageRuleService.CreateSendMessageRuleFromWeb(CurrentUser, model); var result = rules.Select(p => new { balance = p.RemainingSmsBalance, // 發送後剩餘點數 smsCount = p.TotalReceiverCount, // 發送通數 price = p.TotalMessageCost, // 本次發送扣除點數 bulkId = p.Id, // 發送識別碼 }); returnVal = this.Request.CreateResponse(HttpStatusCode.OK, new { result = result, errors = ErrorMessages, }); scope.Complete(); } return(returnVal); } catch (Exception ex) { this.logService.Error(ex); return(this.Request.CreateResponse(HttpStatusCode.InternalServerError, new { ErrorMessage = ex.Message, })); } }