Files
2026-07-21 14:22:06 +07:00

66 lines
4.1 KiB
C#

using Indotalent.ConfigBackEnd.Extensions;
using Indotalent.Features.Organization.Employee.Cqrs;
using MediatR;
using Microsoft.AspNetCore.Authentication.JwtBearer;
namespace Indotalent.Features.Organization.Employee;
public static class EmployeeEndpoint
{
public static void MapEmployeeEndpoints(this IEndpointRouteBuilder app)
{
var group = app.MapGroup("/employee")
.WithTags("Employees")
.RequireAuthorization(policy =>
policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser());
group.MapGet("/", async (IMediator mediator) =>
(await mediator.Send(new GetEmployeeListQuery())).ToApiResponse("Employee list retrieved successfully"));
group.MapGet("/lookup", async (IMediator mediator) =>
(await mediator.Send(new LookupQuery())).ToApiResponse("Lookups retrieved successfully"));
group.MapGet("/{id}", async (string id, IMediator mediator) =>
(await mediator.Send(new GetEmployeeByIdQuery(id))).ToApiResponse("Employee detail retrieved successfully"));
group.MapPost("/", async (CreateEmployeeRequest request, IMediator mediator) =>
(await mediator.Send(new CreateEmployeeCommand(request))).ToApiResponse("Employee created successfully", StatusCodes.Status201Created));
group.MapPost("/update", async (UpdateEmployeeRequest request, IMediator mediator) =>
(await mediator.Send(new UpdateEmployeeCommand(request))).ToApiResponse("Employee updated successfully"));
group.MapPost("/delete/{id}", async (string id, IMediator mediator) =>
(await mediator.Send(new DeleteEmployeeByIdCommand(new DeleteEmployeeByIdRequest(id)))).ToApiResponse("Employee deleted successfully"));
group.MapGet("/income/list/{employeeId}", async (string employeeId, IMediator mediator) =>
(await mediator.Send(new GetEmployeeIncomeListByEmployeeIdQuery(employeeId))).ToApiResponse("Employee income list retrieved"));
group.MapGet("/income/{id}", async (string id, IMediator mediator) =>
(await mediator.Send(new GetEmployeeIncomeByIdQuery(id))).ToApiResponse("Employee income detail retrieved"));
group.MapPost("/income", async (CreateEmployeeIncomeRequest request, IMediator mediator) =>
(await mediator.Send(new CreateEmployeeIncomeCommand(request))).ToApiResponse("Employee income created", StatusCodes.Status201Created));
group.MapPost("/income/update", async (UpdateEmployeeIncomeRequest request, IMediator mediator) =>
(await mediator.Send(new UpdateEmployeeIncomeCommand(request))).ToApiResponse("Employee income updated"));
group.MapPost("/income/delete/{id}", async (string id, IMediator mediator) =>
(await mediator.Send(new DeleteEmployeeIncomeByIdCommand(new DeleteEmployeeIncomeByIdRequest(id)))).ToApiResponse("Employee income deleted successfully"));
group.MapGet("/deduction/list/{employeeId}", async (string employeeId, IMediator mediator) =>
(await mediator.Send(new GetEmployeeDeductionListByEmployeeIdQuery(employeeId))).ToApiResponse("Employee deduction list retrieved"));
group.MapGet("/deduction/{id}", async (string id, IMediator mediator) =>
(await mediator.Send(new GetEmployeeDeductionByIdQuery(id))).ToApiResponse("Employee deduction detail retrieved"));
group.MapPost("/deduction", async (CreateEmployeeDeductionRequest request, IMediator mediator) =>
(await mediator.Send(new CreateEmployeeDeductionCommand(request))).ToApiResponse("Employee deduction created", StatusCodes.Status201Created));
group.MapPost("/deduction/update", async (UpdateEmployeeDeductionRequest request, IMediator mediator) =>
(await mediator.Send(new UpdateEmployeeDeductionCommand(request))).ToApiResponse("Employee deduction updated"));
group.MapPost("/deduction/delete/{id}", async (string id, IMediator mediator) =>
(await mediator.Send(new DeleteEmployeeDeductionByIdCommand(new DeleteEmployeeDeductionByIdRequest(id)))).ToApiResponse("Employee deduction deleted successfully"));
}
}