public static void SaveInfoSmsError(string configuration, SmsInfoInputViewModel infoInput, string message) { DbContext _context = new MySqlContext(new MySqlConnectionFactory(configuration)); List <SmsLogs> lstSmsLog = new List <SmsLogs>(); foreach (var resp in infoInput.lstMedicalHealthcareHistories) { SmsLogs smsLog = new SmsLogs(); smsLog.PhoneNumber = resp.PhoneNumber; smsLog.Message = ""; smsLog.ResultMessage = message; smsLog.Status = 0; smsLog.HealthFacilitiesId = (infoInput.healthFacilitiesId != null ? infoInput.healthFacilitiesId.Value : 0); smsLog.SmsTemplateId = 0; smsLog.SmsPackagesDistributeId = 0; smsLog.SentDate = DateTime.Now; smsLog.LogType = 1; lstSmsLog.Add(smsLog); } _context.InsertRange(lstSmsLog); }
public IActionResult InfoSms([FromBody] SmsInfoInputViewModel infoInput) { int YearNow = DateTime.Now.Year; int MonthNow = DateTime.Now.Month; //danh sach goi sms su dung var packages = _context.Query <SmsPackagesDistribute>() .Where(pd => pd.HealthFacilitiesId == infoInput.healthFacilitiesId && ((pd.YearStart < YearNow && pd.YearEnd == YearNow && pd.MonthEnd <= MonthNow) || (pd.YearStart <YearNow && pd.YearEnd> YearNow) || (pd.YearStart == YearNow && pd.YearEnd == YearNow && pd.MonthEnd >= MonthNow && pd.MonthStart <= MonthNow) || (pd.YearStart == YearNow && pd.YearEnd > YearNow && pd.MonthStart <= MonthNow)) && pd.IsDelete == false && pd.IsActive == true) .Select(u => new PackageDistributeViewModel(u, _connectionString)).ToList(); if (packages.Count == 0) { SaveInfoSmsError(_connectionString, infoInput, "Không thể gửi tin do không sử dụng gói sms nào"); if (infoInput.type == 4) { return(Json(new ActionResultDto { Result = "" })); } else { return(StatusCode(406, _excep.Throw(406, "Không thể gửi tin do số lượng tin nhắn vượt quá gói SMS hiện tại. Mời bạn mua thêm gói SMS"))); } } long totalSms = 0; int totalSmsSend = infoInput.lstMedicalHealthcareHistories.Count; foreach (var s in packages) { if (s.SmsPackageUsed != null) { totalSms += s.SmsPackageUsed.Quantityused; } } if (totalSms < totalSmsSend) { SaveInfoSmsError(_connectionString, infoInput, "Không thể gửi tin do số lượng tin nhắn vượt quá gói SMS hiện tại"); if (infoInput.type == 4) { return(Json(new ActionResultDto { Result = "" })); } else { return(StatusCode(406, _excep.Throw(406, "Không thể gửi tin do số lượng tin nhắn vượt quá gói SMS hiện tại. Mời bạn mua thêm gói SMS"))); } } //Xu ly tin nhan string code = ""; string content = ""; int templateId = 0; string templateCode = ""; int indexM = 0; int indexUsed = 0; switch (infoInput.type) { case 1: code = "A01.SMSTAIKHAM"; break; case 2: code = "A02.SMSSINHNHAT"; break; case 4: code = "A06.SMSDATKHAM"; break; } if (string.IsNullOrEmpty(infoInput.content)) { var config = _context.Query <HealthFacilitiesConfigs>().Where(hp => hp.Code == code && hp.HealthFacilitiesId == infoInput.healthFacilitiesId).FirstOrDefault(); //templateId = config != null ? config.Values : 0; templateCode = config != null ? config.Values : ""; var sms = _context.Query <SmsTemplate>().Where(t => t.SmsTemplateCode == config.Values).FirstOrDefault(); templateId = sms != null ? sms.Id : 0; //var template = _context.Query<SmsTemplate>().Where(t => t.Id == templateId).FirstOrDefault(); var template = _context.Query <SmsTemplate>().Where(t => t.SmsTemplateCode == templateCode).FirstOrDefault(); content = template != null ? template.SmsContent : ""; } else { templateId = infoInput.smsTemplateId.Value; templateCode = infoInput.SmsTemplateCode; content = infoInput.content; } //danh sach sms content List <SmsContent> lstContent = new List <SmsContent>(); foreach (var m in infoInput.lstMedicalHealthcareHistories) { indexM++; if (packages[indexUsed].SmsPackageUsed != null && indexM > packages[indexUsed].SmsPackageUsed.Quantityused) { indexM = 0; indexUsed++; } SmsContent scontent = new SmsContent(); scontent.SmsBrand = packages[indexUsed].SmsBrand; scontent.Message = RepalaceContentSms(content, m, packages[indexUsed].HealthFacilitiesName); scontent.PhoneNumber = m.PhoneNumber; scontent.HealthFacilitiesId = infoInput.healthFacilitiesId.Value; scontent.SmsTemplateId = templateId; scontent.SmsTemplateCode = templateCode; scontent.SmsPackagesDistributeId = packages[indexUsed].Id; scontent.SmsPackageUsedId = packages[indexUsed].SmsPackageUsed != null ? packages[indexUsed].SmsPackageUsed.SmsPackageUsedId : 0; scontent.PatientHistoriesId = m.PatientHistoriesId; scontent.PatientId = m.PatientId; scontent.objectType = infoInput.objectType; lstContent.Add(scontent); } var sendSMS = Utils.SendListSMS(lstContent, infoInput.type); var infoSms = SMS.SaveInfoSMS(_connectionString, sendSMS, infoInput.type); return(Json(new ActionResultDto { Result = infoSms })); }