merge from smsReportApi

This commit is contained in:
gozareshgir
2026-01-29 15:29:19 +03:30
17 changed files with 673 additions and 61 deletions

View File

@@ -2126,6 +2126,7 @@ public class InstitutionContractSmsServiceRepository : RepositoryBase<long, Inst
{
try
{
if (item.TypeOfSmsMethod == "MonthlyBill")
{
var res = await _smsService.MonthlyBill(item.PhoneNumber, item.TemplateId, item.PartyName,

View File

@@ -77,6 +77,9 @@ public class SmsResultRepository : RepositoryBase<long, SmsResult>, ISmsResultRe
case TypeOfSmsSetting.SendInstitutionContractConfirmationCode:
typeOfSms = "کد تاییدیه قرارداد مالی";
break;
case TypeOfSmsSetting.SendInstitutionContractConfirmationLink:
typeOfSms = "لینک تاییدیه ایجاد قرارداد مالی";
break;
case TypeOfSmsSetting.TaskReminder:
typeOfSms = "یادآور وظایف";
break;
@@ -147,7 +150,7 @@ public class SmsResultRepository : RepositoryBase<long, SmsResult>, 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<long, SmsResult>, 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<List<SmsReportListDto>> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date)
public async Task<List<SmsReportListDto>> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date, string typeOfSmsSetting)
{
if(string.IsNullOrWhiteSpace(date))
if(string.IsNullOrWhiteSpace(date) || string.IsNullOrWhiteSpace(typeOfSmsSetting))
return new List<SmsReportListDto>();
if (date.TryToGeorgianDateTime(out var searchDate) == false)
@@ -198,41 +202,12 @@ public class SmsResultRepository : RepositoryBase<long, SmsResult>, 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)
{

View File

@@ -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<long, SmsSetting>, ISmsSetti
_context.SmsSettings.Remove(removeItem);
await _context.SaveChangesAsync();
}
#region ForApi
/// <summary>
/// دریافت لیست پیامک های خودکار بر اساس نوع آن
/// Api
/// </summary>
/// <param name="typeOfSmsSetting"></param>
/// <returns></returns>
public async Task<List<SmsSettingDto>> 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<SmsSettingDto> 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
}

View File

@@ -205,6 +205,26 @@ public class SmsService : ISmsService
};
return appendData;
}
public async Task<SmsDetailsDto> 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<List<ApiResultViewModel>> GetApiResult(string startDate, string endDate)
{