Files
Backend-Api/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/SalaryPaymentSettings/Queries/GetSalarySettingToEdit/GetSalarySettingToEditQueryHandler.cs

89 lines
3.5 KiB
C#

using GozareshgirProgramManager.Application._Common.Interfaces;
using GozareshgirProgramManager.Application._Common.Models;
using GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Commands.CreateSalarySettings;
using GozareshgirProgramManager.Domain._Common;
using Microsoft.EntityFrameworkCore;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
namespace GozareshgirProgramManager.Application.Modules.SalaryPaymentSettings.Queries.GetSalarySettingToEdit;
public class GetSalarySettingToEditQueryHandler : IBaseQueryHandler<GetSalarySettingToEditQuery, GetSalarySettingToEditResponse>
{
private readonly IProgramManagerDbContext _context;
public GetSalarySettingToEditQueryHandler(IProgramManagerDbContext context)
{
_context = context;
}
public async Task<OperationResult<GetSalarySettingToEditResponse>> Handle(GetSalarySettingToEditQuery request, CancellationToken cancellationToken)
{
var user =await _context.Users.FirstOrDefaultAsync(x => x.Id == request.UserId);
if(user == null)
return OperationResult<GetSalarySettingToEditResponse>.NotFound("کاربر یافت نشد");
var editSalarySettingsList = await _context.SalaryPaymentSettings
.Select(x => new GetSalarySettingToEdit()
{
Id = x.Id,
HolidayWorking = x.HolidayWorking,
UserId = x.UserId,
MonthlySalary = x.MonthlySalary.ToMoney(),
WorkingHoursList = x.WorkingHoursList.Select(wh => new WorkingHoursListDto
{
StartShiftOne =wh.HasShiftOne ? wh.StartShiftOne.ToString(@"hh\:mm") : null,
EndShiftOne = wh.HasShiftOne ? wh.EndShiftOne.ToString(@"hh\:mm") : null,
StartShiftTwo = wh.HasShiftTow ? wh.StartShiftTwo.ToString(@"hh\:mm") : null,
EndShiftTwo = wh.HasShiftTow ? wh.EndShiftTwo.ToString(@"hh\:mm") :null,
RestTime = wh.HasRestTime ? wh.RestTime.ToString(@"hh\:mm") : null,
HasRestTime = wh.HasRestTime,
HasShiftOne = wh.HasShiftOne,
HasShiftTow = wh.HasShiftTow,
PersianDayOfWeek = wh.PersianDayOfWeek,
IsActiveDay = wh.IsActiveDay
}).OrderBy(wh=>wh.PersianDayOfWeek).ToList(),
}).FirstOrDefaultAsync(x => x.UserId == request.UserId);
var response = new GetSalarySettingToEditResponse(request.UserId,user.FullName,editSalarySettingsList);
return OperationResult<GetSalarySettingToEditResponse>.Success(response);
}
}
public record GetSalarySettingToEditResponse(long UserId, string FullName, GetSalarySettingToEdit EditSalarySettingsList);
public record GetSalarySettingToEditQuery(long UserId) :IBaseQuery<GetSalarySettingToEditResponse>;
public record GetSalarySettingToEdit
{
/// <summary>
/// ای دی کاربر
/// </summary>
public long Id { get; set; }
/// <summary>
/// آی دی کاربر
/// </summary>
public long UserId { get; set; }
/// <summary>
/// کار در تعطیلات رسمی
/// </summary>
public bool HolidayWorking { get; set; }
/// <summary>
/// حقوق ماهانه
/// </summary>
public string MonthlySalary { get; set; }
/// <summary>
/// لیست روزهای هفته و ساعات کاری
/// </summary>
public List<WorkingHoursListDto> WorkingHoursList { get; set; }
}