Compare commits

...

3 Commits

Author SHA1 Message Date
gozareshgir
1ac73f9689 change showStatus signalR 2026-02-03 15:09:50 +03:30
gozareshgir
fe8e94f121 merge from master 2026-02-03 14:10:48 +03:30
gozareshgir
c493718452 InstantSms change signalR 2026-02-03 14:08:16 +03:30
5 changed files with 136 additions and 63 deletions

View File

@@ -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)
{

View File

@@ -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())

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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
}