Files
Backend-Api/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Commands/EditSalarySettings/EditSalarySettingsCommandHandler.cs

121 lines
4.7 KiB
C#

using GozareshgirProgramManager.Application._Common.Interfaces;
using GozareshgirProgramManager.Application._Common.Models;
using GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Commands.CreateSalarySettings;
using GozareshgirProgramManager.Domain._Common;
using GozareshgirProgramManager.Domain.SalaryPaymentSettingAgg.Entities;
using GozareshgirProgramManager.Domain.SalaryPaymentSettingAgg.Repositories;
namespace GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Commands.EditSalarySettings;
public class EditSalarySettingsCommandHandler : IBaseCommandHandler<EditSalarySettingsCommand>
{
private readonly ISalaryPaymentSettingRepository _salaryPaymentSettingRepository;
private readonly IUnitOfWork _unitOfWork;
public EditSalarySettingsCommandHandler(ISalaryPaymentSettingRepository salaryPaymentSettingRepository, IUnitOfWork unitOfWork)
{
_salaryPaymentSettingRepository = salaryPaymentSettingRepository;
_unitOfWork = unitOfWork;
}
public async Task<OperationResult> Handle(EditSalarySettingsCommand request, CancellationToken cancellationToken)
{
var getSettings =await _salaryPaymentSettingRepository.GetSalarySettingByUserId(request.UserId);
if(getSettings == null)
return OperationResult.NotFound("یافت نشد");
if(string.IsNullOrWhiteSpace(request.MonthlySalary))
return OperationResult.Failure("حقوق ماهانه وارد نشده اشت");
double monthlySalary = 0;
try
{
monthlySalary = request.MonthlySalary.MoneyToDouble();
}
catch (Exception e)
{
return OperationResult.Failure("مبلغ حقوق به درستی وارد نشده است");
}
if (monthlySalary == 0)
return OperationResult.Failure("مبلغ حقوق به درستی وارد نشده است");
var workingHoursList = new List<WorkingHours>();
foreach (var workingHours in request.WorkingHoursList)
{
var startShiftOne = new TimeSpan();
var endShiftOne = new TimeSpan();
var startShiftTwo = new TimeSpan();
var endShiftTwo = new TimeSpan();
var restTime = new TimeSpan();
workingHours.HasShiftOne = false;
workingHours.HasRestTime = false;
workingHours.HasShiftTow = false;
try
{
if (!string.IsNullOrWhiteSpace(workingHours.StartShiftOne) && !string.IsNullOrWhiteSpace(workingHours.EndShiftOne))
{
startShiftOne = TimeSpan.ParseExact(workingHours.StartShiftOne, @"hh\:mm", null);
endShiftOne = TimeSpan.ParseExact(workingHours.EndShiftOne, @"hh\:mm", null);
workingHours.HasShiftOne = true;
if (!string.IsNullOrWhiteSpace(workingHours.RestTime))
{
try
{
restTime = TimeSpan.ParseExact(workingHours.RestTime, @"hh\:mm", null);
workingHours.HasRestTime = true;
}
catch (Exception e)
{
return OperationResult.Failure("فرمت ساعت استراحت اشتباه وارد شده است");
}
}
}
if (!string.IsNullOrWhiteSpace(workingHours.StartShiftTwo) &&
!string.IsNullOrWhiteSpace(workingHours.EndShiftTwo))
{
workingHours.HasRestTime = false;
workingHours.HasShiftTow = true;
startShiftTwo = TimeSpan.ParseExact(workingHours.StartShiftTwo, @"hh\:mm", null);
endShiftTwo = TimeSpan.ParseExact(workingHours.EndShiftTwo, @"hh\:mm", null);
}
}
catch (Exception)
{
return OperationResult.Failure("فرمت ساعت اشتباه وارد شده است");
}
workingHoursList.Add(new WorkingHours(startShiftOne, endShiftOne, startShiftTwo, endShiftTwo, restTime, workingHours.HasShiftOne, workingHours.HasShiftTow, workingHours.HasRestTime, workingHours.PersianDayOfWeek, workingHours.IsActiveDay));
}
getSettings.Edit(request.HolidayWorking,monthlySalary, workingHoursList);
await _unitOfWork.SaveChangesAsync();
return OperationResult.Success();
}
}
public record EditSalarySettingsCommand(long UserId, bool HolidayWorking,string? MonthlySalary, List<WorkingHoursListDto> WorkingHoursList) : IBaseCommand;