using FastEndpoints; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Framework.ResponseStandard; using GB5Shared.FastEndPoint; using PayRollBLL.TimeSlip; using PayRollDAL.DTO.TimeSlip; using static GB5Shared.GB5Constant.Constant; namespace PayRollSL.EndPoints.TimeSlip { public class SaveTimeSlip : BaseEndpoint> { private readonly ITimeSlipBLL _TimeSlipBLL; public SaveTimeSlip(ITimeSlipBLL TimeSlipBLL) { _TimeSlipBLL = TimeSlipBLL; } public override void Configure() { Post("/TimeSlip/SaveTimeSlip"); AllowAnonymous(); } public record SaveTimeSlipParameters( [property: FromHeader] string Login, [property: FromBody] TimeSlipDTO TimeSlipDTO ); protected override async Task> ExecuteAsync(SaveTimeSlipParameters req,LoginDTO loginDTO,CancellationToken ct) { try { if (req.TimeSlipDTO == null) throw new ArgumentNullException(nameof(req.TimeSlipDTO)); var result = await _TimeSlipBLL.SaveTimeSlip(req.TimeSlipDTO, loginDTO!); return await GB5Shared.ResponseStandard.Response.CreateSuccessResponse(result,CacheKeyLevel.USER_LEVEL,loginDTO); } catch (Exception ex) { return await GB5Shared.ResponseStandard.Response.CreateExceptionError(ex,CacheKeyLevel.USER_LEVEL,loginDTO,ex.Message,500); } } } }