121 lines
4.7 KiB
C#
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;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|