75 lines
3.5 KiB
C#
75 lines
3.5 KiB
C#
using Indotalent.ConfigBackEnd.Extensions;
|
|
using Indotalent.Features.Payroll.Payrolls.Cqrs;
|
|
using Indotalent.Features.Payroll.PayrollDetails.Cqrs;
|
|
using MediatR;
|
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
|
|
|
namespace Indotalent.Features.Payroll.Payrolls;
|
|
|
|
public static class PayrollsEndpoint
|
|
{
|
|
public static void MapPayrollsEndpoints(this IEndpointRouteBuilder app)
|
|
{
|
|
var group = app.MapGroup("/payroll").WithTags("Payrolls")
|
|
.RequireAuthorization(policy => policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
|
|
.RequireAuthenticatedUser());
|
|
|
|
group.MapGet("/", async (IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new GetPayrollProcessListQuery(new GetPayrollProcessListRequest()));
|
|
return result.ToApiResponse("Payroll processes retrieved successfully");
|
|
})
|
|
.WithName("GetPayrollProcessList");
|
|
|
|
group.MapGet("/{id}", async (string id, IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new GetPayrollProcessByIdQuery(new GetPayrollProcessByIdRequest { Id = id }));
|
|
return result.ToApiResponse(result is not null
|
|
? "Payroll process detail retrieved successfully"
|
|
: $"Payroll process with ID {id} not found");
|
|
})
|
|
.WithName("GetPayrollProcessById");
|
|
|
|
group.MapPost("/", async (CreatePayrollProcessRequest request, IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new CreatePayrollProcessCommand(request));
|
|
return result.ToApiResponse("Payroll calculation completed successfully", StatusCodes.Status201Created);
|
|
})
|
|
.WithName("CreatePayrollProcess");
|
|
|
|
group.MapPost("/update", async (UpdatePayrollProcessRequest request, IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new UpdatePayrollProcessCommand(request));
|
|
return result.ToApiResponse("Payroll process updated successfully");
|
|
})
|
|
.WithName("UpdatePayrollProcess");
|
|
|
|
group.MapPost("/delete/{id}", async (string id, IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new DeletePayrollProcessByIdCommand(new DeletePayrollProcessByIdRequest { Id = id }));
|
|
return true.ToApiResponse("Payroll process deleted successfully");
|
|
})
|
|
.WithName("DeletePayrollProcessById");
|
|
|
|
group.MapGet("/detail/list/{processId}", async (string processId, IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new GetPayrollDetailListByProcessIdQuery(new GetPayrollDetailListByProcessIdRequest { PayrollProcessId = processId }));
|
|
return result.ToApiResponse("Payroll employee details retrieved successfully");
|
|
})
|
|
.WithName("GetPayrollDetailListByProcessId");
|
|
|
|
group.MapGet("/detail/{id}", async (string id, IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new GetPayrollDetailByIdQuery(new GetPayrollDetailByIdRequest { Id = id }));
|
|
return result.ToApiResponse("Employee payroll component detail retrieved successfully");
|
|
})
|
|
.WithName("GetPayrollDetailById");
|
|
|
|
group.MapGet("/detail/slip/{id}", async (string id, IMediator mediator) =>
|
|
{
|
|
var result = await mediator.Send(new GetPayrollSlipByIdQuery(new GetPayrollSlipByIdRequest { Id = id }));
|
|
return result.ToApiResponse("Payroll slip retrieved successfully");
|
|
})
|
|
.WithName("GetPayrollSlipById");
|
|
}
|
|
} |