33 lines
1.4 KiB
TypeScript
33 lines
1.4 KiB
TypeScript
import { Controller, Post, Param, Body, Patch, Delete, Req, UnauthorizedException } from "@nestjs/common";
|
|
import { ExpenseUpsertService } from "src/time-and-attendance/expenses/services/expense-upsert.service";
|
|
import { ExpenseDto } from "src/time-and-attendance/expenses/dtos/expense-create.dto";
|
|
import { RolesAllowed } from "src/common/decorators/roles.decorators";
|
|
import { GLOBAL_CONTROLLER_ROLES } from "src/common/shared/role-groupes";
|
|
import { Result } from "src/common/errors/result-error.factory";
|
|
import { GetExpenseDto } from "src/time-and-attendance/expenses/dtos/expense-get.dto";
|
|
|
|
@Controller('expense')
|
|
@RolesAllowed(...GLOBAL_CONTROLLER_ROLES)
|
|
export class ExpenseController {
|
|
constructor(private readonly upsert_service: ExpenseUpsertService) { }
|
|
|
|
@Post('create')
|
|
create(@Req() req, @Body() dto: ExpenseDto): Promise<Result<GetExpenseDto, string>> {
|
|
const email = req.user?.email;
|
|
if (!email) throw new UnauthorizedException('Unauthorized User');
|
|
return this.upsert_service.createExpense(dto, email);
|
|
}
|
|
|
|
@Patch('update')
|
|
update(@Body() dto: ExpenseDto): Promise<Result<ExpenseDto, string>> {
|
|
return this.upsert_service.updateExpense(dto);
|
|
}
|
|
|
|
@Delete('delete/:expense_id')
|
|
remove(@Param('expense_id') expense_id: number): Promise<Result<number, string>> {
|
|
return this.upsert_service.deleteExpense(expense_id);
|
|
}
|
|
}
|
|
|
|
|