diff --git a/0_Framework/Application/Enums/TypeOfSmsSetting.cs b/0_Framework/Application/Enums/TypeOfSmsSetting.cs
index 28089ced..a604e9e6 100644
--- a/0_Framework/Application/Enums/TypeOfSmsSetting.cs
+++ b/0_Framework/Application/Enums/TypeOfSmsSetting.cs
@@ -45,6 +45,11 @@ public enum TypeOfSmsSetting
///
SendInstitutionContractConfirmationCode,
+ ///
+ /// لینک تاییدیه ایجاد قرارداد مالی
+ ///
+ SendInstitutionContractConfirmationLink,
+
///
/// یادآور وظایف
///
diff --git a/0_Framework/Application/Sms/ApiResultViewModel.cs b/0_Framework/Application/Sms/ApiResultViewModel.cs
index 0d5c1ca1..4bb3bd47 100644
--- a/0_Framework/Application/Sms/ApiResultViewModel.cs
+++ b/0_Framework/Application/Sms/ApiResultViewModel.cs
@@ -30,5 +30,22 @@ public class ApiReportDto
public string DeliveryState { get; set; }
public string DeliveryUnixTime { get; set; }
public string DeliveryColor { get; set; }
+ public string FullName { get; set; }
+
+}
+
+public class SmsDetailsDto
+{
+
+
+ public string MessageText { get; set; }
+
+ public long Mobile { get; set; }
+
+ public string SendUnixTime { get; set; }
+ public string DeliveryState { get; set; }
+ public string DeliveryUnixTime { get; set; }
+ public string DeliveryColor { get; set; }
+ public string FullName { get; set; }
}
\ No newline at end of file
diff --git a/0_Framework/Application/Sms/ISmsService.cs b/0_Framework/Application/Sms/ISmsService.cs
index 20e41608..3c02e90f 100644
--- a/0_Framework/Application/Sms/ISmsService.cs
+++ b/0_Framework/Application/Sms/ISmsService.cs
@@ -16,15 +16,21 @@ public interface ISmsService
///
///
Task SendVerifyCodeToClient(string number, string code);
- bool SendAccountsInfo(string number,string fullName, string userName);
+ bool SendAccountsInfo(string number, string fullName, string userName);
Task GetByMessageId(int messId);
Task> GetApiResult(string startDate, string endDate);
#region ForApi
Task> GetApiReport(string startDate, string endDate);
-
-#endregion
+ ///
+ /// دریافت جزئیات پیامک
+ ///
+ ///
+ ///
+ ///
+ Task GetSmsDetailsByMessageId(int messId, string fullName);
+ #endregion
string DeliveryStatus(byte? dv);
string DeliveryColorStatus(byte? dv);
@@ -33,9 +39,9 @@ public interface ISmsService
#region Mahan
Task GetCreditAmount();
-
+
public Task SendInstitutionCreationVerificationLink(string number, string fullName, Guid institutionId, long contractingPartyId, long institutionContractId, string typeOfSms = null);
-
+
public Task SendInstitutionVerificationCode(string number, string code, string contractingPartyFullName,
long contractingPartyId, long institutionContractId);
@@ -68,7 +74,7 @@ public interface ISmsService
///
///
Task<(byte status, string message, int messaeId, bool isSucceded)> MonthlyBill(string number, int tamplateId, string fullname, string amount, string id, string aprove);
-
+
///
/// پیامک مسدودی طرف حساب
/// قراردادهای قدیم
diff --git a/Company.Domain/SmsResultAgg/ISmsResultRepository.cs b/Company.Domain/SmsResultAgg/ISmsResultRepository.cs
index 24ee411b..395e3f4c 100644
--- a/Company.Domain/SmsResultAgg/ISmsResultRepository.cs
+++ b/Company.Domain/SmsResultAgg/ISmsResultRepository.cs
@@ -1,4 +1,5 @@
-using _0_Framework.Domain;
+using _0_Framework.Application.Enums;
+using _0_Framework.Domain;
using CompanyManagment.App.Contracts.SmsResult;
using CompanyManagment.App.Contracts.SmsResult.Dto;
using System.Collections.Generic;
@@ -22,8 +23,9 @@ public interface ISmsResultRepository : IRepository
///
///
///
+ ///
///
- Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date);
+ Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date, string typeOfSmsSetting);
#endregion
List Search(SmsResultSearchModel searchModel);
diff --git a/Company.Domain/SmsResultAgg/ISmsSettingsRepository.cs b/Company.Domain/SmsResultAgg/ISmsSettingsRepository.cs
index a2c864a5..8baacff0 100644
--- a/Company.Domain/SmsResultAgg/ISmsSettingsRepository.cs
+++ b/Company.Domain/SmsResultAgg/ISmsSettingsRepository.cs
@@ -1,6 +1,7 @@
using _0_Framework.Application.Enums;
using _0_Framework.Domain;
using CompanyManagment.App.Contracts.SmsResult;
+using System.Collections.Generic;
using System.Threading.Tasks;
namespace Company.Domain.SmsResultAgg;
@@ -27,4 +28,25 @@ public interface ISmsSettingsRepository : IRepository
///
///
Task RemoveItem(long id);
+
+
+ #region ForApi
+
+ ///
+ /// دریافت لیست پیامک های خودکار بر اساس نوع آن
+ /// Api
+ ///
+ ///
+ ///
+ Task> GetSmsSettingList(TypeOfSmsSetting typeOfSmsSetting);
+
+
+
+ ///
+ /// دریافت اطلاعات تنظیمات پیامک جهت ویرایش
+ ///
+ ///
+ ///
+ Task GetSmsSettingDataToEdit(long id);
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/InstitutionContract/SmsListData.cs b/CompanyManagment.App.Contracts/InstitutionContract/SmsListData.cs
index e81a8ecf..9fb58b9e 100644
--- a/CompanyManagment.App.Contracts/InstitutionContract/SmsListData.cs
+++ b/CompanyManagment.App.Contracts/InstitutionContract/SmsListData.cs
@@ -1,4 +1,6 @@
-namespace CompanyManagment.App.Contracts.InstitutionContract;
+using System.Collections.Generic;
+
+namespace CompanyManagment.App.Contracts.InstitutionContract;
///
/// لیست پیامکهای بدهکاران قرارداد ملی
@@ -113,10 +115,30 @@ public class BlockSmsListData
///
-/// لیست قراداد های آبی
-/// جهت ارسال هشدار یا اقدام قضائی
+///پیامک آنی یادآور
///
-public class BlueWarningSmsData
+public class InstantReminderSendSms
{
+ ///
+ /// نام طرف حساب
+ ///
+ public string FullName { get; set; }
+ ///
+ /// مبلغ بدهی
+ ///
+ public string Amount { get; set; }
+ public List InstantReminderSmsList { get; set; }
+}
+
+public class InstantReminderSmsList
+{
+ ///
+ /// شماره تماس طرف حساب
+ ///
+ public string PhoneNumber { get; set; }
+
+
+
+
}
\ No newline at end of file
diff --git a/CompanyManagment.App.Contracts/SmsResult/CreateSmsSetting.cs b/CompanyManagment.App.Contracts/SmsResult/CreateSmsSetting.cs
index f467ca34..5873ac60 100644
--- a/CompanyManagment.App.Contracts/SmsResult/CreateSmsSetting.cs
+++ b/CompanyManagment.App.Contracts/SmsResult/CreateSmsSetting.cs
@@ -60,3 +60,43 @@ public class SmsSettingViewModel
///
public List EditSmsSettings { get; set; }
}
+
+
+
+///
+/// لیست تنظیمات پیامک خودکار
+///
+public class SmsSettingDto
+{
+ ///
+ /// آی دی
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// عدد روز از ماه
+ ///
+ public int DayOfMonth { get; set; }
+
+ ///
+ /// نمایش ساعت و دقیقه
+ ///
+ public string TimeOfDayDisplay { get; set; }
+}
+
+
+public class CreateSmsSettingDto
+{
+ ///
+ /// عدد روز از ماه
+ ///
+ public int DayOfMonth { get; set; }
+
+ ///
+ /// نمایش ساعت و دقیقه
+ ///
+ public string TimeOfDayDisplay { get; set; }
+}
+
+
+
diff --git a/CompanyManagment.App.Contracts/SmsResult/Dto/SmsReportDto.cs b/CompanyManagment.App.Contracts/SmsResult/Dto/SmsReportDto.cs
index 445ed2b0..9a1fc20a 100644
--- a/CompanyManagment.App.Contracts/SmsResult/Dto/SmsReportDto.cs
+++ b/CompanyManagment.App.Contracts/SmsResult/Dto/SmsReportDto.cs
@@ -9,6 +9,11 @@ public class SmsReportDto
///
public string SentDate { get; set; }
+ ///
+ /// نوع پیامک
+ ///
+ public string TypeOfSms { get; set; }
+
}
diff --git a/CompanyManagment.App.Contracts/SmsResult/ISmsResultApplication.cs b/CompanyManagment.App.Contracts/SmsResult/ISmsResultApplication.cs
index 2c857396..cc8bfc54 100644
--- a/CompanyManagment.App.Contracts/SmsResult/ISmsResultApplication.cs
+++ b/CompanyManagment.App.Contracts/SmsResult/ISmsResultApplication.cs
@@ -1,4 +1,5 @@
using _0_Framework.Application;
+using _0_Framework.Application.Enums;
using CompanyManagment.App.Contracts.SmsResult.Dto;
using System;
using System.Collections.Generic;
@@ -24,8 +25,9 @@ public interface ISmsResultApplication
///
///
///
+ ///
///
- Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date);
+ Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date, string typeOfSmsSetting);
#endregion
diff --git a/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs b/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs
index 49fdc4e8..1da9deb4 100644
--- a/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs
+++ b/CompanyManagment.App.Contracts/SmsResult/ISmsSettingApplication.cs
@@ -75,4 +75,45 @@ public interface ISmsSettingApplication
///
///
Task InstantSendBlockSms(List command);
+
+
+ #region ForApi
+
+ ///
+ /// دریافت لیست پیامک های خودکار بر اساس نوع آن
+ /// Api
+ ///
+ ///
+ ///
+ Task> GetSmsSettingList(TypeOfSmsSetting typeOfSmsSetting);
+
+ ///
+ /// دریافت اطلاعات تنظیمات پیامک جهت ویرایش
+ ///
+ ///
+ ///
+ Task GetSmsSettingDataToEdit(long id);
+
+ ///
+ /// ویرایش تنظیمات پیامک
+ ///
+ ///
+ ///
+ Task EditSmsSetting(SmsSettingDto command);
+
+ ///
+ /// دریافت لیست ارسال آنی
+ ///
+ ///
+ Task> GetInstantReminderSmsListData(TypeOfSmsSetting typeOfSmsSetting);
+
+ ///
+ /// ارسال پیامک آنی
+ ///
+ ///
+ ///
+ ///
+ Task InstantSmsSendApi(TypeOfSmsSetting typeOfSmsSetting, List phoneNumbers);
+
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/SmsResultApplication.cs b/CompanyManagment.Application/SmsResultApplication.cs
index 2c94d837..76f7b50c 100644
--- a/CompanyManagment.Application/SmsResultApplication.cs
+++ b/CompanyManagment.Application/SmsResultApplication.cs
@@ -1,20 +1,26 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using _0_Framework.Application;
+using _0_Framework.Application;
+using _0_Framework.Application.Enums;
+using _0_Framework.Application.Sms;
using Company.Domain.SmsResultAgg;
using CompanyManagment.App.Contracts.SmsResult;
using CompanyManagment.App.Contracts.SmsResult.Dto;
+using CompanyManagment.EFCore.Services;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using SmsResult = Company.Domain.SmsResultAgg.SmsResult;
namespace CompanyManagment.Application;
public class SmsResultApplication : ISmsResultApplication
{
private readonly ISmsResultRepository _smsResultRepository;
+ private readonly ISmsService _smsService;
- public SmsResultApplication(ISmsResultRepository smsResultRepository)
+ public SmsResultApplication(ISmsResultRepository smsResultRepository, ISmsService smsService)
{
_smsResultRepository = smsResultRepository;
+ _smsService = smsService;
}
@@ -25,9 +31,9 @@ public class SmsResultApplication : ISmsResultApplication
return await _smsResultRepository.GetSmsReportList(searchModel);
}
- public async Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date)
+ public async Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date, string typeOfSmsSetting)
{
- return await _smsResultRepository.GetSmsReportExpandList(searchModel, date);
+ return await _smsResultRepository.GetSmsReportExpandList(searchModel, date, typeOfSmsSetting);
}
#endregion
@@ -67,4 +73,6 @@ public class SmsResultApplication : ISmsResultApplication
}).ToList();
return result;
}
+
+
}
\ No newline at end of file
diff --git a/CompanyManagment.Application/SmsSettingApplication.cs b/CompanyManagment.Application/SmsSettingApplication.cs
index 203a9e23..6b1d5651 100644
--- a/CompanyManagment.Application/SmsSettingApplication.cs
+++ b/CompanyManagment.Application/SmsSettingApplication.cs
@@ -9,6 +9,8 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Hosting;
namespace CompanyManagment.Application;
@@ -17,12 +19,15 @@ public class SmsSettingApplication : ISmsSettingApplication
private readonly ISmsSettingsRepository _smsSettingsRepository;
private readonly IInstitutionContractRepository _institutionContractRepository;
private readonly IInstitutionContractSmsServiceRepository _institutionContractSmsServiceRepository;
+ private readonly IHostEnvironment _hostEnvironment;
- public SmsSettingApplication(ISmsSettingsRepository smsSettingsRepository, IInstitutionContractRepository institutionContractRepository, IInstitutionContractSmsServiceRepository institutionContractSmsServiceRepository)
+ public SmsSettingApplication(ISmsSettingsRepository smsSettingsRepository, IInstitutionContractRepository institutionContractRepository, IInstitutionContractSmsServiceRepository institutionContractSmsServiceRepository, IHostEnvironment hostEnvironment)
{
_smsSettingsRepository = smsSettingsRepository;
_institutionContractRepository = institutionContractRepository;
_institutionContractSmsServiceRepository = institutionContractSmsServiceRepository;
+ _hostEnvironment = hostEnvironment;
+
}
@@ -131,6 +136,12 @@ public class SmsSettingApplication : ISmsSettingApplication
public async Task InstantSendReminderSms(List command)
{
var op = new OperationResult();
+ if (_hostEnvironment.IsDevelopment())
+ {
+
+ return op.Failed(" در محیط توسعه امکان ارسال وجود ندارد ");
+
+ }
string typeOfSms = "یادآور بدهی ماهانه";
string sendMessStart = "شروع یادآور آنی";
string sendMessEnd = "پایان یادآور آنی";
@@ -151,6 +162,13 @@ public class SmsSettingApplication : ISmsSettingApplication
public async Task InstantSendBlockSms(List command)
{
var op = new OperationResult();
+
+ if (_hostEnvironment.IsDevelopment())
+ {
+
+ return op.Failed(" در محیط توسعه امکان ارسال وجود ندارد ");
+
+ }
string typeOfSms = "اعلام مسدودی طرف حساب";
string sendMessStart = "شروع مسدودی آنی";
string sendMessEnd = "پایان مسدودی آنی ";
@@ -165,4 +183,166 @@ public class SmsSettingApplication : ISmsSettingApplication
return op.Failed("موردی انتخاب نشده است");
}
}
+
+ #region ForApi
+
+ ///
+ /// دریافت لیست پیامک های خودکار بر اساس نوع آن
+ /// Api
+ ///
+ ///
+ ///
+ public async Task> GetSmsSettingList(TypeOfSmsSetting typeOfSmsSetting)
+ {
+ return await _smsSettingsRepository.GetSmsSettingList(typeOfSmsSetting);
+ }
+
+
+ public async Task GetSmsSettingDataToEdit(long id)
+ {
+ return await _smsSettingsRepository.GetSmsSettingDataToEdit(id);
+ }
+
+
+ public async Task EditSmsSetting(SmsSettingDto command)
+ {
+ var op = new OperationResult();
+ var editSmsSetting = _smsSettingsRepository.Get(command.Id);
+ var timeSpan = new TimeSpan();
+ if (string.IsNullOrWhiteSpace(command.TimeOfDayDisplay))
+ return op.Failed("ساعت وارد نشده است");
+
+ try
+ {
+ timeSpan = TimeSpan.ParseExact(command.TimeOfDayDisplay, @"hh\:mm", null);
+ }
+ catch (Exception e)
+ {
+ return op.Failed("فرمت ساعت اشتباه است");
+ }
+
+ if (command.DayOfMonth < 1 || command.DayOfMonth > 31)
+ {
+ return op.Failed("عدد روز می بایست بین 1 تا 31 باشد");
+ }
+
+ if (_smsSettingsRepository.Exists(x => x.DayOfMonth == command.DayOfMonth && x.TimeOfDay == timeSpan && x.TypeOfSmsSetting == editSmsSetting.TypeOfSmsSetting && x.id != command.Id))
+ return op.Failed("رکورد ایجاد شده تکراری است");
+
+
+ editSmsSetting.Edit(command.DayOfMonth, timeSpan);
+ await _smsSettingsRepository.SaveChangesAsync();
+
+ return op.Succcedded();
+ }
+
+
+ public async Task> GetInstantReminderSmsListData(TypeOfSmsSetting typeOfSmsSetting)
+ {
+ var result = new List();
+
+
+ if (typeOfSmsSetting == TypeOfSmsSetting.InstitutionContractDebtReminder)
+ {
+ var data = await _institutionContractSmsServiceRepository.GetSmsListData(DateTime.Now, TypeOfSmsSetting.InstitutionContractDebtReminder);
+
+ if (data.Any())
+ {
+ result = data.GroupBy(x => x.PartyName).Select(m => new InstantReminderSendSms()
+ {
+ FullName = m.Key,
+ Amount = m.Select(c => c.Amount).First(),
+ InstantReminderSmsList = m.Select(c => new InstantReminderSmsList()
+ {
+ PhoneNumber = c.PhoneNumber,
+ }).ToList()
+
+
+ }).ToList();
+ }
+ }
+
+ if (typeOfSmsSetting == TypeOfSmsSetting.BlockContractingParty)
+ {
+ var data = await _institutionContractSmsServiceRepository.GetBlockListData(DateTime.Now);
+
+ if (data.Any())
+ {
+ result = data.GroupBy(x => x.PartyName).Select(m => new InstantReminderSendSms()
+ {
+ FullName = m.Key,
+ Amount = m.Select(c => c.Amount).First(),
+ InstantReminderSmsList = m.Select(c => new InstantReminderSmsList()
+ {
+ PhoneNumber = c.PhoneNumber,
+ }).ToList()
+
+
+ }).ToList();
+ }
+ }
+
+ return result;
+ }
+
+ public async Task InstantSmsSendApi(TypeOfSmsSetting typeOfSmsSetting, List phoneNumbers)
+ {
+
+ 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())
+ {
+ var data = await _institutionContractSmsServiceRepository.GetSmsListData(DateTime.Now, TypeOfSmsSetting.InstitutionContractDebtReminder);
+
+ if (data.Any())
+ {
+ phoneNumbers = phoneNumbers.Where(x => x.Length == 11).ToList();
+ var sendItems = data.Where(x => phoneNumbers.Contains(x.PhoneNumber)).ToList();
+ var res = await InstantSendReminderSms(sendItems);
+ return res;
+
+ }
+
+ return op.Succcedded();
+ }
+
+ return op.Failed("موردی انتخاب نشده است");
+
+ }
+
+ if (typeOfSmsSetting == TypeOfSmsSetting.BlockContractingParty)
+ {
+ if (phoneNumbers.Any())
+ {
+ var data = await _institutionContractSmsServiceRepository.GetBlockListData(DateTime.Now);
+
+ if (data.Any())
+ {
+ phoneNumbers = phoneNumbers.Where(x => x.Length == 11).ToList();
+ var sendItems = data.Where(x => phoneNumbers.Contains(x.PhoneNumber)).ToList();
+ var res = await InstantSendBlockSms(sendItems);
+ return res;
+ }
+ return op.Succcedded();
+ }
+ return op.Failed("موردی انتخاب نشده است");
+ }
+
+
+
+
+ return op.Failed("خطای انتخاب نوع ارسال");
+ }
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/Repository/InstitutionContractSmsServiceRepository.cs b/CompanyManagment.EFCore/Repository/InstitutionContractSmsServiceRepository.cs
index af92bbba..721c64b7 100644
--- a/CompanyManagment.EFCore/Repository/InstitutionContractSmsServiceRepository.cs
+++ b/CompanyManagment.EFCore/Repository/InstitutionContractSmsServiceRepository.cs
@@ -2126,6 +2126,7 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase, ISmsResultRe
case TypeOfSmsSetting.SendInstitutionContractConfirmationCode:
typeOfSms = "کد تاییدیه قرارداد مالی";
break;
+ case TypeOfSmsSetting.SendInstitutionContractConfirmationLink:
+ typeOfSms = "لینک تاییدیه ایجاد قرارداد مالی";
+ break;
case TypeOfSmsSetting.TaskReminder:
typeOfSms = "یادآور وظایف";
break;
@@ -147,7 +150,7 @@ public class SmsResultRepository : RepositoryBase, ISmsResultRe
// مرحله 2: گروهبندی و انتخاب آخرین رکورد هر روز روی Client
var grouped = rawQuery
- .GroupBy(x => x.DateOnly)
+ .GroupBy(x => (x.DateOnly, x.TypeOfSms))
.Select(g => g.OrderByDescending(x => x.CreationDate).First())
.OrderByDescending(x => x.CreationDate)
.ToList();
@@ -155,15 +158,16 @@ public class SmsResultRepository : RepositoryBase, ISmsResultRe
// مرحله 3: تبدیل به DTO و ToFarsi
var result = grouped.Select(x => new SmsReportDto
{
- SentDate = x.CreationDate.ToFarsi()
+ SentDate = x.CreationDate.ToFarsi(),
+ TypeOfSms = x.TypeOfSms
}).ToList();
return result;
}
- public async Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date)
+ public async Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date, string typeOfSmsSetting)
{
- if(string.IsNullOrWhiteSpace(date))
+ if(string.IsNullOrWhiteSpace(date) || string.IsNullOrWhiteSpace(typeOfSmsSetting))
return new List();
if (date.TryToGeorgianDateTime(out var searchDate) == false)
@@ -198,41 +202,12 @@ public class SmsResultRepository : RepositoryBase, ISmsResultRe
query = query.Where(x => x.Mobile.Contains(searchModel.Mobile)).ToList();
}
- if (searchModel.TypeOfSms != TypeOfSmsSetting.All && searchModel.TypeOfSms != TypeOfSmsSetting.Warning)
- {
- var typeOfSms = "All";
- switch (searchModel.TypeOfSms)
- {
- case TypeOfSmsSetting.InstitutionContractDebtReminder:
- typeOfSms = "یادآور بدهی ماهانه";
- break;
- case TypeOfSmsSetting.MonthlyInstitutionContract:
- typeOfSms = "صورت حساب ماهانه";
- break;
- case TypeOfSmsSetting.BlockContractingParty:
- typeOfSms = "اعلام مسدودی طرف حساب";
- break;
- case TypeOfSmsSetting.LegalAction:
- typeOfSms = "اقدام قضایی";
- break;
- case TypeOfSmsSetting.InstitutionContractConfirm:
- typeOfSms = "یادآور تایید قرارداد مالی";
- break;
- case TypeOfSmsSetting.SendInstitutionContractConfirmationCode:
- typeOfSms = "کد تاییدیه قرارداد مالی";
- break;
- case TypeOfSmsSetting.TaskReminder:
- typeOfSms = "یادآور وظایف";
- break;
- }
- query = query.Where(x => x.TypeOfSms == typeOfSms).ToList();
- }
-
- if (searchModel.TypeOfSms == TypeOfSmsSetting.Warning)
+ if (typeOfSmsSetting.Contains("هشدار"))
{
query = query.Where(x => x.TypeOfSms.Contains("هشدار")).ToList();
}
+ query = query.Where(x => x.TypeOfSms == typeOfSmsSetting).ToList();
if (searchModel.SendStatus != SendStatus.All)
{
diff --git a/CompanyManagment.EFCore/Repository/SmsSettingsRepository.cs b/CompanyManagment.EFCore/Repository/SmsSettingsRepository.cs
index d0922b29..da3c11b3 100644
--- a/CompanyManagment.EFCore/Repository/SmsSettingsRepository.cs
+++ b/CompanyManagment.EFCore/Repository/SmsSettingsRepository.cs
@@ -1,4 +1,5 @@
-using System.Linq;
+using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using _0_Framework.Application.Enums;
using _0_Framework.InfraStructure;
@@ -68,4 +69,48 @@ public class SmsSettingsRepository : RepositoryBase, ISmsSetti
_context.SmsSettings.Remove(removeItem);
await _context.SaveChangesAsync();
}
+
+
+ #region ForApi
+ ///
+ /// دریافت لیست پیامک های خودکار بر اساس نوع آن
+ /// Api
+ ///
+ ///
+ ///
+ public async Task> GetSmsSettingList(TypeOfSmsSetting typeOfSmsSetting)
+ {
+
+ var data = await _context.SmsSettings
+ .Where(x => x.TypeOfSmsSetting == typeOfSmsSetting)
+ .OrderBy(x => x.DayOfMonth).ThenBy(x => x.TimeOfDay)
+ .Select(x =>
+ new SmsSettingDto()
+ {
+ Id = x.id,
+ DayOfMonth = x.DayOfMonth,
+ TimeOfDayDisplay = x.TimeOfDay.ToString(@"hh\:mm")
+ }).ToListAsync();
+
+ return data;
+ }
+
+ public async Task GetSmsSettingDataToEdit(long id)
+ {
+ var edit = new SmsSettingDto();
+ var getItem = await _context.SmsSettings.FirstOrDefaultAsync(x => x.id == id);
+
+ if (getItem != null)
+ {
+ edit.Id = getItem.id;
+ edit.TimeOfDayDisplay = getItem.TimeOfDay.ToString(@"hh\:mm");
+ edit.DayOfMonth = getItem.DayOfMonth;
+
+ }
+
+ return edit;
+ }
+
+
+ #endregion
}
\ No newline at end of file
diff --git a/CompanyManagment.EFCore/Services/SmsService.cs b/CompanyManagment.EFCore/Services/SmsService.cs
index 11ea7adb..d73ac87f 100644
--- a/CompanyManagment.EFCore/Services/SmsService.cs
+++ b/CompanyManagment.EFCore/Services/SmsService.cs
@@ -205,6 +205,26 @@ public class SmsService : ISmsService
};
return appendData;
}
+
+ public async Task GetSmsDetailsByMessageId(int messId, string fullName)
+ {
+
+ SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
+ var response = await smsIr.GetReportAsync(messId);
+ MessageReportResult messages = response.Data;
+
+ var appendData = new SmsDetailsDto()
+ {
+ Mobile = messages.Mobile,
+ MessageText = messages.MessageText,
+ SendUnixTime = UnixTimeStampToDateTime(messages.SendDateTime),
+ DeliveryState = DeliveryStatus(messages.DeliveryState),
+ DeliveryUnixTime = UnixTimeStampToDateTime(messages.DeliveryDateTime),
+ DeliveryColor = DeliveryColorStatus(messages.DeliveryState),
+ FullName = fullName
+ };
+ return appendData;
+ }
public async Task> GetApiResult(string startDate, string endDate)
{
diff --git a/ServiceHost/Areas/Admin/Controllers/SmsReportController.cs b/ServiceHost/Areas/Admin/Controllers/SmsReportController.cs
index 254d5d05..5a864bd8 100644
--- a/ServiceHost/Areas/Admin/Controllers/SmsReportController.cs
+++ b/ServiceHost/Areas/Admin/Controllers/SmsReportController.cs
@@ -1,4 +1,7 @@
-using _0_Framework.Application.Sms;
+using _0_Framework.Application;
+using _0_Framework.Application.Enums;
+using _0_Framework.Application.Sms;
+using CompanyManagment.App.Contracts.InstitutionContract;
using CompanyManagment.App.Contracts.SmsResult;
using CompanyManagment.App.Contracts.SmsResult.Dto;
using Microsoft.AspNetCore.Mvc;
@@ -9,12 +12,14 @@ namespace ServiceHost.Areas.Admin.Controllers;
public class SmsReportController : AdminBaseController
{
private readonly ISmsResultApplication _smsResultApplication;
+ private readonly ISmsSettingApplication _smsSettingApplication;
private readonly ISmsService _smsService;
- public SmsReportController(ISmsResultApplication smsResultApplication, ISmsService smsService)
+ public SmsReportController(ISmsResultApplication smsResultApplication, ISmsService smsService, ISmsSettingApplication smsSettingApplication)
{
_smsResultApplication = smsResultApplication;
_smsService = smsService;
+ _smsSettingApplication = smsSettingApplication;
}
///
@@ -35,11 +40,25 @@ public class SmsReportController : AdminBaseController
///
///
///
+ ///
///
[HttpGet("GetExpandedList")]
- public async Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date)
+ public async Task> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date, string typeOfSmsSetting)
{
- var result =await _smsResultApplication.GetSmsReportExpandList(searchModel, date);
+ var result =await _smsResultApplication.GetSmsReportExpandList(searchModel, date, typeOfSmsSetting);
+ return result;
+ }
+
+ ///
+ /// دریافت جزئیات پیامک
+ ///
+ ///
+ ///
+ ///
+ [HttpGet("GetSmsDetails")]
+ public async Task GetSmsDetails(int messId, string fullName)
+ {
+ var result =await _smsService.GetSmsDetailsByMessageId(messId, fullName);
return result;
}
@@ -56,4 +75,206 @@ public class SmsReportController : AdminBaseController
return result;
}
+ //تنظیمات پیامک خودکار
+ #region SmsSettings
+
+ ///
+ /// لیست تنظیمات پیامک - یادآور
+ ///
+ ///
+ [HttpGet("ReminderSmsSettingList")]
+ public async Task> ReminderSmsSettingList()
+ {
+ var result = await _smsSettingApplication.GetSmsSettingList(TypeOfSmsSetting.InstitutionContractDebtReminder);
+ return result;
+ }
+
+
+ ///
+ /// لیست تنظیمات پیامک - مسدودی
+ ///
+ ///
+ [HttpGet("BlockSmsSettingList")]
+ public async Task> BlockSmsSettingList()
+ {
+ var result = await _smsSettingApplication.GetSmsSettingList(TypeOfSmsSetting.BlockContractingParty);
+ return result;
+ }
+
+ ///
+ /// لیست تنظیمات پیامک - هشدار قضایی
+ ///
+ ///
+ [HttpGet("WarningSmsSettingList")]
+ public async Task> WarningSmsSettingList()
+ {
+ var result = await _smsSettingApplication.GetSmsSettingList(TypeOfSmsSetting.Warning);
+ return result;
+ }
+
+
+ ///
+ /// لیست تنظیمات پیامک - اقدام قضایی
+ ///
+ ///
+ [HttpGet("LegalActionSmsSettingList")]
+ public async Task> LegalActionSmsSettingList()
+ {
+ var result = await _smsSettingApplication.GetSmsSettingList(TypeOfSmsSetting.LegalAction);
+ return result;
+ }
+
+ ///
+ /// لیست تنظیمات پیامک - تایید قراداد مالی
+ ///
+ ///
+ [HttpGet("ContractConfirmSmsSettingList")]
+ public async Task> ContractConfirmSmsSettingList()
+ {
+ var result = await _smsSettingApplication.GetSmsSettingList(TypeOfSmsSetting.InstitutionContractConfirm);
+ return result;
+ }
+
+ //=====================Create=========================
+
+ ///
+ /// ایجاد پیامک یادآور
+ ///
+ ///
+ [HttpPost("CreateReminderSmsSetting")]
+ public async Task> CreateReminderSmsSetting([FromBody] CreateSmsSettingDto command)
+ {
+ var result = await _smsSettingApplication.CreateSmsSetting(command.DayOfMonth, command.TimeOfDayDisplay, TypeOfSmsSetting.InstitutionContractDebtReminder);
+ return result;
+ }
+
+ ///
+ /// ایجاد پیامک مسدودی
+ ///
+ ///
+ [HttpPost("CreateBlockSmsSetting")]
+ public async Task> CreateBlockSmsSetting([FromBody] CreateSmsSettingDto command)
+ {
+ var result = await _smsSettingApplication.CreateSmsSetting(command.DayOfMonth, command.TimeOfDayDisplay, TypeOfSmsSetting.BlockContractingParty);
+ return result;
+ }
+
+ ///
+ /// ایجاد پیامک هشدار قضایی
+ ///
+ ///
+ [HttpPost("CreateWarningSmsSetting")]
+ public async Task> CreateWarningSmsSetting([FromBody] CreateSmsSettingDto command)
+ {
+ var result = await _smsSettingApplication.CreateSmsSetting(command.DayOfMonth, command.TimeOfDayDisplay, TypeOfSmsSetting.Warning);
+ return result;
+ }
+
+
+ ///
+ /// ایجاد پیامک اقدام قضایی
+ ///
+ ///
+ [HttpPost("CreateLegalActionSmsSetting")]
+ public async Task> CreateLegalActionSmsSetting([FromBody] CreateSmsSettingDto command)
+ {
+ var result = await _smsSettingApplication.CreateSmsSetting(command.DayOfMonth, command.TimeOfDayDisplay, TypeOfSmsSetting.LegalAction);
+ return result;
+ }
+
+
+ ///
+ /// ایجاد پیامک تایید قرارداد مالی
+ ///
+ ///
+ [HttpPost("CreateContractConfirmSmsSetting")]
+ public async Task> CreateContractConfirmSmsSetting([FromBody] CreateSmsSettingDto command)
+ {
+ var result = await _smsSettingApplication.CreateSmsSetting(command.DayOfMonth, command.TimeOfDayDisplay, TypeOfSmsSetting.InstitutionContractConfirm);
+ return result;
+ }
+ //=====================Edit=========================
+
+ ///
+ /// دریافت اطلاعات ویرایش تنظیمات پیامک
+ ///
+ ///
+ ///
+ [HttpGet("GetEditData")]
+ public async Task GetEditData(long id)
+ {
+ return await _smsSettingApplication.GetSmsSettingDataToEdit(id);
+ }
+
+ ///
+ /// ویرایش تنظیمات پیامک
+ ///
+ ///
+ ///
+ [HttpPut("EditSmsSetting")]
+ public async Task> EditSmsSetting([FromBody] SmsSettingDto command)
+ {
+ var result =await _smsSettingApplication.EditSmsSetting(command);
+ return result;
+ }
+
+ //=====================Remove=========================
+
+ ///
+ /// حذف تنظیمات پیامک
+ ///
+ ///
+ ///
+ [HttpDelete]
+ public async Task RemoveSmsSetting(long id)
+ {
+ await _smsSettingApplication.RemoveSetting(id);
+ }
+
+ ///
+ /// دریافت لیست ارسال آنی یادآور
+ ///
+ ///
+ [HttpGet("GetInstantReminderSmsListData")]
+ public async Task> GetInstantReminderSmsListData()
+ {
+ var result =await _smsSettingApplication.GetInstantReminderSmsListData(TypeOfSmsSetting.InstitutionContractDebtReminder);
+ return result;
+ }
+
+ ///
+ /// دریافت لیست ارسال آنی مسدودی
+ ///
+ ///
+ [HttpGet("GetInstantBlockSmsListData")]
+ public async Task> GetInstantBlockSmsListData()
+ {
+ var result = await _smsSettingApplication.GetInstantReminderSmsListData(TypeOfSmsSetting.BlockContractingParty);
+ return result;
+ }
+
+ ///
+ /// ارسال پیامک آنی یادآور
+ ///
+ ///
+ ///
+ [HttpPost("InstantReminderSmsSend")]
+ public async Task> InstantReminderSmsSend([FromBody] List phoneNumbers)
+ {
+ var result = await _smsSettingApplication.InstantSmsSendApi(TypeOfSmsSetting.InstitutionContractDebtReminder, phoneNumbers);
+ return result;
+ }
+
+ ///
+ /// ارسال پیامک آنی مسدودی
+ ///
+ ///
+ ///
+ [HttpPost("InstantBlockSmsSend")]
+ public async Task> InstantBlockSmsSend([FromBody] List phoneNumbers)
+ {
+ var result = await _smsSettingApplication.InstantSmsSendApi(TypeOfSmsSetting.BlockContractingParty, phoneNumbers);
+ return result;
+ }
+ #endregion
}
\ No newline at end of file