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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10x 10x 10x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { Controller, Get, Param, Query, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import { Company } from '@amalia/core/models';
import { type VirtualCustomObjectDefinition } from '@amalia/data-capture/record-models/types';
import { UuidPipe } from '@amalia/kernel/api';
import { AmaliaAuthGuard, CheckPolicies, CurrentUserCompany, PoliciesGuard } from '@amalia/kernel/auth/core';
import { canModifyPlans, canViewData } from '@amalia/kernel/auth/shared';
import { Plan } from '@amalia/payout-definition/plans/types';
import { PlansService } from '../plans/plans.service';
import { VirtualCustomObjectDefinitionService } from './virtualCustomObjectDefinition.service';
@UseGuards(AmaliaAuthGuard, PoliciesGuard)
@ApiBearerAuth()
@ApiTags('virtualCustomObjectDefinitions')
@Controller('virtual-custom-object-definitions')
export class VirtualCustomObjectDefinitionController {
public constructor(
private readonly virtualCustomObjectDefinitionService: VirtualCustomObjectDefinitionService,
private readonly plansService: PlansService,
) {}
@Get()
@CheckPolicies((ability) => canViewData(ability) || canModifyPlans(ability))
public async list(
@CurrentUserCompany() company: Company,
@Query('planId', new UuidPipe({ optional: false })) planId: Plan['id'],
): Promise<VirtualCustomObjectDefinition[]> {
const plan = await this.plansService.findById(company, planId);
return this.virtualCustomObjectDefinitionService.getAllVirtualCustomObjectDefinitions(company, [
plan.id,
...(plan.metricsFromPlanIds ?? []),
]);
}
@Get(':virtualCustomObjectDefinitionMachineName')
@CheckPolicies((ability) => canViewData(ability) || canModifyPlans(ability))
public async getOne(
@CurrentUserCompany() company: Company,
@Param('virtualCustomObjectDefinitionMachineName') virtualCustomObjectDefinitionMachineName: string,
@Query('planId', new UuidPipe({ optional: false })) planId: Plan['id'],
): Promise<VirtualCustomObjectDefinition | null> {
const plan = await this.plansService.findById(company, planId);
return this.virtualCustomObjectDefinitionService.getVirtualCustomObjectDefinition(
company,
virtualCustomObjectDefinitionMachineName,
[plan.id, ...(plan.metricsFromPlanIds ?? [])],
);
}
}
|