using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Framework.ResponseStandard; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using PayRollBLL.Employee; using PayRollDAL.DTO.Employee; using static GB5Shared.GB5Constant.Constant; namespace PayRollSL.Controllers.Employee { [ApiController] [Route("TransferEmployeeAdvance")] public class TransferEmployeeAdvanceController : ControllerBase { private readonly IEmployeeBLL _employeeBLL; public TransferEmployeeAdvanceController(IEmployeeBLL employeeBLL) { _employeeBLL = employeeBLL; } public class PostTransferEmployeeAdvanceParameters { [FromBody] public List PostTransferEmployeeAdvanceDTOs { get; set; } [FromHeader] public string Login { get; set; } } [HttpPost("PostTransferEmployeeAdvance")] [AllowAnonymous] public async Task> PostTransferEmployeeAdvance( [FromBody] List PostTransferEmployeeAdvanceDTOs, [FromHeader] string Login) { try { // Convert Login header string → LoginDTO var loginDTO = Newtonsoft.Json.JsonConvert.DeserializeObject(Login); var result = await _employeeBLL.PostTransferEmployeeAdvance(PostTransferEmployeeAdvanceDTOs, loginDTO!); return await GB5Shared.ResponseStandard.Response.CreateSuccessResponse( result, CacheKeyLevel.USER_LEVEL, loginDTO! ); } catch (Exception ex) { var loginDTO = !string.IsNullOrWhiteSpace(Login) ? Newtonsoft.Json.JsonConvert.DeserializeObject(Login) : new LoginDTO(); return await GB5Shared.ResponseStandard.Response.CreateExceptionError( ex, CacheKeyLevel.NOT_REQUIRED, loginDTO!, ex.Message, 500 ); } } } }