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