147 lines
5.0 KiB
C#
147 lines
5.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using _0_Framework.Application;
|
|
using _0_Framework.Application.Enums;
|
|
using Company.Domain.InstitutionContractAgg;
|
|
using Company.Domain.SmsResultAgg;
|
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
|
using CompanyManagment.App.Contracts.SmsResult;
|
|
|
|
namespace CompanyManagment.Application;
|
|
|
|
public class SmsSettingApplication : ISmsSettingApplication
|
|
{
|
|
private readonly ISmsSettingsRepository _smsSettingsRepository;
|
|
private readonly IInstitutionContractRepository _institutionContractRepository;
|
|
|
|
public SmsSettingApplication(ISmsSettingsRepository smsSettingsRepository, IInstitutionContractRepository institutionContractRepository)
|
|
{
|
|
_smsSettingsRepository = smsSettingsRepository;
|
|
_institutionContractRepository = institutionContractRepository;
|
|
}
|
|
|
|
|
|
public async Task<SmsSettingViewModel> GetSmsSettingsByType(TypeOfSmsSetting typeOfSmsSetting)
|
|
{
|
|
return await _smsSettingsRepository.GetSmsSettingsByType(typeOfSmsSetting);
|
|
}
|
|
|
|
/// <summary>
|
|
/// ایجاد تنظیمات پیامک یادآور
|
|
/// </summary>
|
|
/// <param name="dayOfMonth"></param>
|
|
/// <param name="timeOfDay"></param>
|
|
/// <param name="typeOfSmsSetting"></param>
|
|
/// <returns></returns>
|
|
public async Task<OperationResult> CreateSmsSetting(int dayOfMonth, string timeOfDay,
|
|
TypeOfSmsSetting typeOfSmsSetting)
|
|
{
|
|
var op = new OperationResult();
|
|
var timeSpan = new TimeSpan();
|
|
if (string.IsNullOrWhiteSpace(timeOfDay))
|
|
return op.Failed("ساعت وارد نشده است");
|
|
|
|
try
|
|
{
|
|
timeSpan = TimeSpan.ParseExact(timeOfDay, @"hh\:mm", null);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return op.Failed("فرمت ساعت اشتباه است");
|
|
}
|
|
|
|
|
|
if (dayOfMonth < 1 || dayOfMonth > 31)
|
|
{
|
|
return op.Failed("عدد روز می بایست بین 1 تا 31 باشد");
|
|
}
|
|
|
|
if (_smsSettingsRepository.Exists(x => x.DayOfMonth == dayOfMonth && x.TimeOfDay == timeSpan && x.TypeOfSmsSetting == typeOfSmsSetting))
|
|
return op.Failed("رکورد ایجاد شده تکراری است");
|
|
|
|
var create = new SmsSetting(typeOfSmsSetting, dayOfMonth, timeSpan);
|
|
await _smsSettingsRepository.CreateAsync(create);
|
|
await _smsSettingsRepository.SaveChangesAsync();
|
|
|
|
|
|
return op.Succcedded();
|
|
}
|
|
|
|
public async Task<EditSmsSetting> GetSmsSettingToEdit(long id)
|
|
{
|
|
return await _smsSettingsRepository.GetSmsSettingToEdit(id);
|
|
}
|
|
|
|
public async Task<OperationResult> EditeSmsSetting(EditSmsSetting command)
|
|
{
|
|
var op = new OperationResult();
|
|
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 == command.TypeOfSmsSetting && x.id != command.Id))
|
|
return op.Failed("رکورد ایجاد شده تکراری است");
|
|
|
|
var editSmsSetting = _smsSettingsRepository.Get(command.Id);
|
|
editSmsSetting.Edit(command.DayOfMonth, timeSpan);
|
|
await _smsSettingsRepository.SaveChangesAsync();
|
|
|
|
return op.Succcedded();
|
|
}
|
|
|
|
public async Task RemoveSetting(long id)
|
|
{
|
|
await _smsSettingsRepository.RemoveItem(id);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<List<SmsListData>> GetSmsListData(TypeOfSmsSetting typeOfSmsSetting)
|
|
{
|
|
return await _institutionContractRepository.GetSmsListData(DateTime.Now, typeOfSmsSetting);
|
|
}
|
|
|
|
public async Task<List<BlockSmsListData>> GetBlockSmsListData(TypeOfSmsSetting typeOfSmsSetting)
|
|
{
|
|
return await _institutionContractRepository.GetBlockListData(DateTime.Now);
|
|
}
|
|
|
|
|
|
public async Task<OperationResult> InstantSendReminderSms(List<SmsListData> command)
|
|
{
|
|
var op = new OperationResult();
|
|
string typeOfSms = "یادآور بدهی ماهانه";
|
|
string sendMessStart = "شروع یادآور آنی";
|
|
string sendMessEnd = "پایان یادآور آنی";
|
|
|
|
if (command.Any())
|
|
{
|
|
await _institutionContractRepository.SendReminderSmsToContractingParties(command, typeOfSms, sendMessStart, sendMessEnd);
|
|
return op.Succcedded();
|
|
}
|
|
else
|
|
{
|
|
return op.Failed("موردی انتخاب نشده است");
|
|
}
|
|
|
|
|
|
}
|
|
} |