Compare commits
3 Commits
master
...
Feature/Sm
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1ac73f9689 | ||
|
|
fe8e94f121 | ||
|
|
c493718452 |
@@ -1,5 +1,6 @@
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Application;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Hubs;
|
namespace CompanyManagment.App.Contracts.Hubs;
|
||||||
@@ -7,6 +8,20 @@ namespace CompanyManagment.App.Contracts.Hubs;
|
|||||||
|
|
||||||
public class SendSmsHub : Hub
|
public class SendSmsHub : Hub
|
||||||
{
|
{
|
||||||
|
private readonly IAuthHelper _authHelper;
|
||||||
|
|
||||||
|
public SendSmsHub(IAuthHelper authHelper)
|
||||||
|
{
|
||||||
|
_authHelper = authHelper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task OnConnectedAsync()
|
||||||
|
{
|
||||||
|
var accountId = _authHelper.CurrentAccountId();
|
||||||
|
var connectionId = Context.ConnectionId;
|
||||||
|
await send(accountId);
|
||||||
|
await base.OnConnectedAsync();
|
||||||
|
}
|
||||||
|
|
||||||
public async Task send(long id)
|
public async Task send(long id)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -136,11 +136,33 @@ public class SmsSettingApplication : ISmsSettingApplication
|
|||||||
public async Task<OperationResult> InstantSendReminderSms(List<SmsListData> command)
|
public async Task<OperationResult> InstantSendReminderSms(List<SmsListData> command)
|
||||||
{
|
{
|
||||||
var op = new OperationResult();
|
var op = new OperationResult();
|
||||||
|
List<string> devModeNumberList = [];
|
||||||
if (_hostEnvironment.IsDevelopment())
|
if (_hostEnvironment.IsDevelopment())
|
||||||
{
|
{
|
||||||
|
int taker = 0;
|
||||||
return op.Failed(" در محیط توسعه امکان ارسال وجود ندارد ");
|
switch (command.Count)
|
||||||
|
{
|
||||||
|
case >= 3:
|
||||||
|
taker = 3;
|
||||||
|
break;
|
||||||
|
case > 0:
|
||||||
|
case < 3:
|
||||||
|
taker = command.Count;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
taker = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (taker > 0)
|
||||||
|
{
|
||||||
|
devModeNumberList = ["09114221321", "09116967898", "09116067106"];
|
||||||
|
command = command.Take(taker).ToList();
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
command[i].PhoneNumber = devModeNumberList[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
string typeOfSms = "یادآور بدهی ماهانه";
|
string typeOfSms = "یادآور بدهی ماهانه";
|
||||||
string sendMessStart = "شروع یادآور آنی";
|
string sendMessStart = "شروع یادآور آنی";
|
||||||
@@ -163,10 +185,32 @@ public class SmsSettingApplication : ISmsSettingApplication
|
|||||||
{
|
{
|
||||||
var op = new OperationResult();
|
var op = new OperationResult();
|
||||||
|
|
||||||
|
List<string> devModeNumberList = [];
|
||||||
if (_hostEnvironment.IsDevelopment())
|
if (_hostEnvironment.IsDevelopment())
|
||||||
{
|
{
|
||||||
|
int taker = 0;
|
||||||
return op.Failed(" در محیط توسعه امکان ارسال وجود ندارد ");
|
switch (command.Count)
|
||||||
|
{
|
||||||
|
case >= 3:
|
||||||
|
taker = 3;
|
||||||
|
break;
|
||||||
|
case > 0:
|
||||||
|
case < 3:
|
||||||
|
taker = command.Count;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
taker = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (taker > 0)
|
||||||
|
{
|
||||||
|
devModeNumberList = ["09114221321", "09116967898", "09116067106"];
|
||||||
|
command = command.Take(taker).ToList();
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
command[i].PhoneNumber = devModeNumberList[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
string typeOfSms = "اعلام مسدودی طرف حساب";
|
string typeOfSms = "اعلام مسدودی طرف حساب";
|
||||||
@@ -289,16 +333,7 @@ public class SmsSettingApplication : ISmsSettingApplication
|
|||||||
{
|
{
|
||||||
|
|
||||||
var op = new OperationResult();
|
var op = new OperationResult();
|
||||||
if (_hostEnvironment.IsDevelopment())
|
|
||||||
{
|
|
||||||
var str = "";
|
|
||||||
foreach (var item in phoneNumbers)
|
|
||||||
{
|
|
||||||
str += $" {item}, ";
|
|
||||||
}
|
|
||||||
return op.Failed(" در محیط توسعه امکان ارسال وجود ندارد " + " لیست ارسال شما " + str);
|
|
||||||
|
|
||||||
}
|
|
||||||
if (typeOfSmsSetting == TypeOfSmsSetting.InstitutionContractDebtReminder)
|
if (typeOfSmsSetting == TypeOfSmsSetting.InstitutionContractDebtReminder)
|
||||||
{
|
{
|
||||||
if (phoneNumbers.Any())
|
if (phoneNumbers.Any())
|
||||||
|
|||||||
@@ -31,8 +31,9 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
private readonly ISmsResultRepository _smsResultRepository;
|
private readonly ISmsResultRepository _smsResultRepository;
|
||||||
private readonly IHubContext<SendSmsHub> _hubContext;
|
private readonly IHubContext<SendSmsHub> _hubContext;
|
||||||
private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
|
private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
|
||||||
|
private readonly IAuthHelper _authHelper;
|
||||||
|
|
||||||
public InstitutionContractSmsServiceRepository(CompanyContext context, ISmsService smsService, ILogger<InstitutionContractSmsServiceRepository> logger, ISmsResultRepository smsResultRepository, IHubContext<SendSmsHub> hubContext, IPersonalContractingPartyRepository personalContractingPartyRepository) : base(context)
|
public InstitutionContractSmsServiceRepository(CompanyContext context, ISmsService smsService, ILogger<InstitutionContractSmsServiceRepository> logger, ISmsResultRepository smsResultRepository, IHubContext<SendSmsHub> hubContext, IPersonalContractingPartyRepository personalContractingPartyRepository, IAuthHelper authHelper) : base(context)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_smsService = smsService;
|
_smsService = smsService;
|
||||||
@@ -40,6 +41,7 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
_smsResultRepository = smsResultRepository;
|
_smsResultRepository = smsResultRepository;
|
||||||
_hubContext = hubContext;
|
_hubContext = hubContext;
|
||||||
_personalContractingPartyRepository = personalContractingPartyRepository;
|
_personalContractingPartyRepository = personalContractingPartyRepository;
|
||||||
|
_authHelper = authHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
//هشدار - اقدام قضائی
|
//هشدار - اقدام قضائی
|
||||||
@@ -937,15 +939,31 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
public async Task SendBlockSmsToContractingParties(List<BlockSmsListData> smsListData, string typeOfSms,
|
public async Task SendBlockSmsToContractingParties(List<BlockSmsListData> smsListData, string typeOfSms,
|
||||||
string sendMessStart, string sendMessEnd)
|
string sendMessStart, string sendMessEnd)
|
||||||
{
|
{
|
||||||
|
var currentAccountId = _authHelper.CurrentAccountId();
|
||||||
|
var signalR = _hubContext.Clients.Group(SendSmsHub.GetGroupName(currentAccountId));
|
||||||
if (smsListData.Any())
|
if (smsListData.Any())
|
||||||
{
|
{
|
||||||
await _smsService.Alarm("09114221321", sendMessStart);
|
try
|
||||||
Thread.Sleep(1000);
|
{
|
||||||
await _smsService.Alarm("09111485044", sendMessStart);
|
var sendingStart = await _smsService.Alarm("09114221321", sendMessStart);
|
||||||
Thread.Sleep(1000);
|
Thread.Sleep(1000);
|
||||||
|
|
||||||
|
if (!sendingStart)
|
||||||
|
{
|
||||||
|
await signalR.SendAsync("sendToApi", "failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
await signalR.SendAsync("sendToApi", "failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
int successProcess = 1;
|
int successProcess = 1;
|
||||||
int countList = smsListData.Count;
|
int countList = smsListData.Count;
|
||||||
|
List<string> failedNumberList = [];
|
||||||
|
int successSend = 0;
|
||||||
|
int failedSend = 0;
|
||||||
foreach (var item in smsListData)
|
foreach (var item in smsListData)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -960,6 +978,7 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
item.PartyName, item.PhoneNumber, item.ContractingPartyId, item.InstitutionContractId);
|
item.PartyName, item.PhoneNumber, item.ContractingPartyId, item.InstitutionContractId);
|
||||||
await _smsResultRepository.CreateAsync(createSmsResult);
|
await _smsResultRepository.CreateAsync(createSmsResult);
|
||||||
await _smsResultRepository.SaveChangesAsync();
|
await _smsResultRepository.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -971,28 +990,31 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
item.PartyName, item.PhoneNumber, item.ContractingPartyId, item.InstitutionContractId);
|
item.PartyName, item.PhoneNumber, item.ContractingPartyId, item.InstitutionContractId);
|
||||||
await _smsResultRepository.CreateAsync(createSmsResult);
|
await _smsResultRepository.CreateAsync(createSmsResult);
|
||||||
await _smsResultRepository.SaveChangesAsync();
|
await _smsResultRepository.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
successSend += 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
string name = item.PartyName.Length > 18 ? item.PartyName.Substring(0, 18) : item.PartyName;
|
string name = item.PartyName.Length > 18 ? item.PartyName.Substring(0, 18) : item.PartyName;
|
||||||
string errMess = $"{name}-خطا";
|
string errMess = $"{name}-خطا";
|
||||||
|
failedNumberList.Add(item.PhoneNumber);
|
||||||
|
failedSend += 1;
|
||||||
await _smsService.Alarm("09114221321", errMess);
|
await _smsService.Alarm("09114221321", errMess);
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(600);
|
Thread.Sleep(600);
|
||||||
var percent = (successProcess / (double)countList) * 100;
|
var percent = (successProcess / (double)countList) * 100;
|
||||||
await _hubContext.Clients.Group(SendSmsHub.GetGroupName(10))
|
await signalR.SendAsync("showStatus", countList, failedSend, successSend,(int)percent, failedNumberList);
|
||||||
.SendAsync("showStatus", (int)percent);
|
|
||||||
|
|
||||||
successProcess += 1;
|
successProcess += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
await _smsService.Alarm("09114221321", sendMessEnd);
|
await _smsService.Alarm("09114221321", sendMessEnd);
|
||||||
Thread.Sleep(1000);
|
|
||||||
await _smsService.Alarm("09111485044", sendMessEnd);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2099,28 +2121,32 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
|
|
||||||
#region SendSMSFromList
|
#region SendSMSFromList
|
||||||
|
|
||||||
|
var currentAccountId = _authHelper.CurrentAccountId();
|
||||||
|
var signalR = _hubContext.Clients.Group(SendSmsHub.GetGroupName(currentAccountId));
|
||||||
if (smsListData.Any())
|
if (smsListData.Any())
|
||||||
{
|
{
|
||||||
//await _smsService.Alarm("09114221321", sendMessStart);
|
try
|
||||||
//Thread.Sleep(1000);
|
{
|
||||||
//await _smsService.Alarm("09111485044", sendMessStart);
|
var sendingStart = await _smsService.Alarm("09114221321", sendMessStart);
|
||||||
//Thread.Sleep(1000);
|
Thread.Sleep(1000);
|
||||||
|
|
||||||
|
if (!sendingStart)
|
||||||
|
{
|
||||||
|
await signalR.SendAsync("sendToApi", "failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
await signalR.SendAsync("sendToApi", "failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int successProcess = 1;
|
int successProcess = 1;
|
||||||
int countList = smsListData.Count;
|
int countList = smsListData.Count;
|
||||||
|
List<string> failedNumberList = [];
|
||||||
#region Test
|
int successSend = 0;
|
||||||
|
int failedSend = 0;
|
||||||
|
|
||||||
//for (int i = 0; i < 100; i++)
|
|
||||||
//{
|
|
||||||
// var percent = (successProcess / (double)countList) * 100;
|
|
||||||
// await _hubContext.Clients.Group(SendSmsHub.GetGroupName(7))
|
|
||||||
// .SendAsync("showStatus", (int)percent);
|
|
||||||
// Thread.Sleep(1000);
|
|
||||||
// successProcess += 1;
|
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
foreach (var item in smsListData)
|
foreach (var item in smsListData)
|
||||||
{
|
{
|
||||||
@@ -2138,9 +2164,9 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
var createSmsResult = new Company.Domain.SmsResultAgg.SmsResult(res.messaeId,
|
var createSmsResult = new Company.Domain.SmsResultAgg.SmsResult(res.messaeId,
|
||||||
res.message, typeOfSms, item.PartyName, item.PhoneNumber,
|
res.message, typeOfSms, item.PartyName, item.PhoneNumber,
|
||||||
item.ContractingPartyId, item.InstitutionContractId);
|
item.ContractingPartyId, item.InstitutionContractId);
|
||||||
|
|
||||||
await _smsResultRepository.CreateAsync(createSmsResult);
|
await _smsResultRepository.CreateAsync(createSmsResult);
|
||||||
await _smsResultRepository.SaveChangesAsync();
|
await _smsResultRepository.SaveChangesAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2152,25 +2178,25 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
|
|||||||
var createSmsResult = new Company.Domain.SmsResultAgg.SmsResult(res.messaeId,
|
var createSmsResult = new Company.Domain.SmsResultAgg.SmsResult(res.messaeId,
|
||||||
res.message, typeOfSms, item.PartyName, item.PhoneNumber,
|
res.message, typeOfSms, item.PartyName, item.PhoneNumber,
|
||||||
item.ContractingPartyId, item.InstitutionContractId);
|
item.ContractingPartyId, item.InstitutionContractId);
|
||||||
|
|
||||||
await _smsResultRepository.CreateAsync(createSmsResult);
|
await _smsResultRepository.CreateAsync(createSmsResult);
|
||||||
await _smsResultRepository.SaveChangesAsync();
|
await _smsResultRepository.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
successSend += 1;
|
||||||
Thread.Sleep(600);
|
Thread.Sleep(600);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
string name = item.PartyName.Length > 18 ? item.PartyName.Substring(0, 18) : item.PartyName;
|
string name = item.PartyName.Length > 18 ? item.PartyName.Substring(0, 18) : item.PartyName;
|
||||||
string errMess = $"{name}-خطا";
|
string errMess = $"{name}-خطا";
|
||||||
|
failedNumberList.Add(item.PhoneNumber);
|
||||||
|
failedSend += 1;
|
||||||
_logger.LogError(errMess);
|
_logger.LogError(errMess);
|
||||||
await _smsService.Alarm("09114221321", errMess);
|
await _smsService.Alarm("09114221321", errMess);
|
||||||
}
|
}
|
||||||
|
|
||||||
var percent = (successProcess / (double)countList) * 100;
|
var percent = (successProcess / (double)countList) * 100;
|
||||||
await _hubContext.Clients.Group(SendSmsHub.GetGroupName(7))
|
await signalR.SendAsync("showStatus", countList, failedSend, successSend, (int)percent, failedNumberList);
|
||||||
.SendAsync("showStatus", (int)percent);
|
|
||||||
|
|
||||||
successProcess += 1;
|
successProcess += 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -607,17 +607,14 @@ public class SmsService : ISmsService
|
|||||||
|
|
||||||
//var bulkSendResult = smsIr.BulkSendAsync(95007079000006, "your text message", new string[] { "9120000000" });
|
//var bulkSendResult = smsIr.BulkSendAsync(95007079000006, "your text message", new string[] { "9120000000" });
|
||||||
|
|
||||||
var verificationSendResult =
|
var verificationSendResult = await
|
||||||
smsIr.VerifySendAsync(number, 662874, new VerifySendParameter[] { new("ALARM", message) });
|
smsIr.VerifySendAsync(number, 662874, new VerifySendParameter[] { new("ALARM", message) });
|
||||||
Thread.Sleep(1000);
|
Thread.Sleep(800);
|
||||||
var status = verificationSendResult.Result.Status;
|
if (verificationSendResult.Message == "موفق")
|
||||||
var mess = verificationSendResult.Result.Message;
|
{
|
||||||
var messaeId = verificationSendResult.Result.Data.MessageId;
|
return true;
|
||||||
if (verificationSendResult.IsCompletedSuccessfully) return true;
|
}
|
||||||
|
|
||||||
var resStartStatus = verificationSendResult.Result;
|
|
||||||
var resResult = verificationSendResult.Status;
|
|
||||||
var reseExceptiont = verificationSendResult.Exception;
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -260,10 +260,10 @@ public class SmsReportController : AdminBaseController
|
|||||||
/// <param name="phoneNumbers"></param>
|
/// <param name="phoneNumbers"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("InstantReminderSmsSend")]
|
[HttpPost("InstantReminderSmsSend")]
|
||||||
public async Task<ActionResult<OperationResult>> InstantReminderSmsSend([FromBody] List<string> phoneNumbers)
|
public async Task<ActionResult> InstantReminderSmsSend([FromBody] List<string> phoneNumbers)
|
||||||
{
|
{
|
||||||
var result = await _smsSettingApplication.InstantSmsSendApi(TypeOfSmsSetting.InstitutionContractDebtReminder, phoneNumbers);
|
var result = _smsSettingApplication.InstantSmsSendApi(TypeOfSmsSetting.InstitutionContractDebtReminder, phoneNumbers);
|
||||||
return result;
|
return Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -272,10 +272,10 @@ public class SmsReportController : AdminBaseController
|
|||||||
/// <param name="phoneNumbers"></param>
|
/// <param name="phoneNumbers"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("InstantBlockSmsSend")]
|
[HttpPost("InstantBlockSmsSend")]
|
||||||
public async Task<ActionResult<OperationResult>> InstantBlockSmsSend([FromBody] List<string> phoneNumbers)
|
public async Task<ActionResult> InstantBlockSmsSend([FromBody] List<string> phoneNumbers)
|
||||||
{
|
{
|
||||||
var result = await _smsSettingApplication.InstantSmsSendApi(TypeOfSmsSetting.BlockContractingParty, phoneNumbers);
|
var result = _smsSettingApplication.InstantSmsSendApi(TypeOfSmsSetting.BlockContractingParty, phoneNumbers);
|
||||||
return result;
|
return Ok();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user