Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 4x 4x 4x 4x 4x 4x 4x 4x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x | import { Body, Controller, Delete, Logger, Param, Post, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import { Company, type Overwrite } from '@amalia/core/models';
import { UuidPipe } from '@amalia/kernel/api';
import {
AmaliaAuthGuard,
CheckPolicies,
CurrentAuthenticatedContext,
CurrentUserCompany,
PoliciesGuard,
} from '@amalia/kernel/auth/core';
import { canOverwriteStatements, canSimulateForecastedStatements } from '@amalia/kernel/auth/shared';
import { type AuthenticatedContext } from '@amalia/kernel/auth/types';
import { CreateStatementOverwriteDto } from './dto/createStatementOverwrite.dto';
import { StatementOverwritesService } from './statementOverwrites.service';
@UseGuards(AmaliaAuthGuard, PoliciesGuard)
@ApiBearerAuth()
@ApiTags('statements')
@Controller('statements/:statementId/overwrites')
export class StatementOverwritesController {
private readonly logger = new Logger(StatementOverwritesController.name);
public constructor(private readonly statementOverwritesService: StatementOverwritesService) {}
@Post()
@CheckPolicies((ability) => canOverwriteStatements(ability) || canSimulateForecastedStatements(ability))
public async createOverwrite(
@Param('statementId', new UuidPipe()) statementId: string,
@CurrentUserCompany() company: Company,
@CurrentAuthenticatedContext() authenticatedContext: AuthenticatedContext,
@Body() createStatementOverwriteDto: CreateStatementOverwriteDto,
): Promise<Overwrite> {
const statement = await this.statementOverwritesService.findStatementToOverwrite(
company,
authenticatedContext,
statementId,
createStatementOverwriteDto.scope,
);
return this.statementOverwritesService.createStatementOverwrite(
company,
authenticatedContext,
statement,
createStatementOverwriteDto,
);
}
@Delete('/:overwriteId')
@CheckPolicies((ability) => canOverwriteStatements(ability) || canSimulateForecastedStatements(ability))
public async deleteOverwrite(
@Param('statementId', new UuidPipe()) statementId: string,
@Param('overwriteId', new UuidPipe()) overwriteId: string,
@CurrentUserCompany() company: Company,
@CurrentAuthenticatedContext() authenticatedContext: AuthenticatedContext,
) {
this.logger.log(`Clear overwrite ${overwriteId}`);
return this.statementOverwritesService.clearStatementOverwrite(
company,
overwriteId,
authenticatedContext,
statementId,
);
}
}
|