32 lines
909 B
TypeScript
32 lines
909 B
TypeScript
|
|
import {
|
||
|
|
ExpressController,
|
||
|
|
authGuard,
|
||
|
|
errorMapper,
|
||
|
|
forbidQueryFieldGuard,
|
||
|
|
tenantGuard,
|
||
|
|
} from "@erp/core/api";
|
||
|
|
import { DeleteCustomerInvoiceUseCase } from "../../../application";
|
||
|
|
|
||
|
|
export class DeleteCustomerInvoiceController extends ExpressController {
|
||
|
|
public constructor(
|
||
|
|
private readonly useCase: DeleteCustomerInvoiceUseCase
|
||
|
|
/* private readonly presenter: any */
|
||
|
|
) {
|
||
|
|
super();
|
||
|
|
// 🔐 Reutiliza guards de auth/tenant y prohíbe 'companyId' en query
|
||
|
|
this.useGuards(authGuard(), tenantGuard(), forbidQueryFieldGuard("companyId"));
|
||
|
|
}
|
||
|
|
|
||
|
|
async executeImpl() {
|
||
|
|
const tenantId = this.getTenantId()!; // garantizado por tenantGuard
|
||
|
|
const { id } = this.req.params;
|
||
|
|
|
||
|
|
const result = await this.useCase.execute({ id, tenantId });
|
||
|
|
|
||
|
|
return result.match(
|
||
|
|
(data) => this.ok(data),
|
||
|
|
(error) => this.handleApiError(errorMapper.toApiError(error))
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|