89 lines
3.5 KiB
C#
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; }
|
|
}
|
|
|
|
|