mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 21:00:31 +00:00
134 lines
4.1 KiB
TypeScript
134 lines
4.1 KiB
TypeScript
import {
|
|
ApiTags,
|
|
ApiOperation,
|
|
ApiResponse,
|
|
ApiBody,
|
|
ApiOkResponse,
|
|
ApiExtraModels,
|
|
getSchemaPath,
|
|
ApiParam,
|
|
} from '@nestjs/swagger';
|
|
import {
|
|
Controller,
|
|
Post,
|
|
Put,
|
|
Get,
|
|
Body,
|
|
HttpCode,
|
|
Param,
|
|
} from '@nestjs/common';
|
|
import { BuildOrganizationService } from './commands/BuildOrganization.service';
|
|
import {
|
|
BuildOrganizationDto,
|
|
UpdateOrganizationDto,
|
|
} from './dtos/Organization.dto';
|
|
import { GetCurrentOrganizationService } from './queries/GetCurrentOrganization.service';
|
|
import { UpdateOrganizationService } from './commands/UpdateOrganization.service';
|
|
import { IgnoreTenantInitializedRoute } from '../Tenancy/EnsureTenantIsInitialized.guard';
|
|
import { IgnoreTenantSeededRoute } from '../Tenancy/EnsureTenantIsSeeded.guards';
|
|
import { IgnoreTenantModelsInitialize } from '../Tenancy/TenancyInitializeModels.guard';
|
|
import { GetBuildOrganizationBuildJob } from './commands/GetBuildOrganizationJob.service';
|
|
import { OrganizationBaseCurrencyLocking } from './Organization/OrganizationBaseCurrencyLocking.service';
|
|
import {
|
|
OrganizationBuildResponseExample,
|
|
OrganizationBuiltResponseExample,
|
|
} from './Organization.swagger';
|
|
import { GetCurrentOrganizationResponseDto } from './dtos/GetCurrentOrganizationResponse.dto';
|
|
import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders';
|
|
|
|
@ApiTags('Organization')
|
|
@Controller('organization')
|
|
@IgnoreTenantInitializedRoute()
|
|
@IgnoreTenantSeededRoute()
|
|
@IgnoreTenantModelsInitialize()
|
|
@ApiExtraModels(GetCurrentOrganizationResponseDto)
|
|
@ApiCommonHeaders()
|
|
export class OrganizationController {
|
|
constructor(
|
|
private readonly buildOrganizationService: BuildOrganizationService,
|
|
private readonly getCurrentOrgService: GetCurrentOrganizationService,
|
|
private readonly updateOrganizationService: UpdateOrganizationService,
|
|
private readonly getBuildOrganizationJobService: GetBuildOrganizationBuildJob,
|
|
private readonly orgBaseCurrencyLockingService: OrganizationBaseCurrencyLocking,
|
|
) { }
|
|
|
|
@Post('build')
|
|
@HttpCode(200)
|
|
@ApiOperation({ summary: 'Build organization database' })
|
|
@ApiBody({ type: BuildOrganizationDto })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'The organization database has been initialized',
|
|
example: OrganizationBuildResponseExample,
|
|
})
|
|
@ApiResponse({
|
|
status: 500,
|
|
example: OrganizationBuiltResponseExample,
|
|
})
|
|
async build(@Body() buildDTO: BuildOrganizationDto) {
|
|
const result = await this.buildOrganizationService.buildRunJob(buildDTO);
|
|
|
|
return {
|
|
type: 'success',
|
|
code: 'ORGANIZATION.DATABASE.INITIALIZED',
|
|
message: 'The organization database has been initialized.',
|
|
data: result,
|
|
};
|
|
}
|
|
|
|
@Get('build/:buildJobId')
|
|
@ApiParam({
|
|
name: 'buildJobId',
|
|
required: true,
|
|
type: Number,
|
|
description: 'The build job id',
|
|
})
|
|
@HttpCode(200)
|
|
@ApiOperation({ summary: 'Gets the organization build job details' })
|
|
async buildJob(@Param('buildJobId') buildJobId: string) {
|
|
return this.getBuildOrganizationJobService.getJobDetails(buildJobId);
|
|
}
|
|
|
|
@Get('current')
|
|
@HttpCode(200)
|
|
@ApiOperation({ summary: 'Get current organization' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'Returns the current organization',
|
|
schema: {
|
|
$ref: getSchemaPath(GetCurrentOrganizationResponseDto),
|
|
},
|
|
})
|
|
async currentOrganization() {
|
|
const organization =
|
|
await this.getCurrentOrgService.getCurrentOrganization();
|
|
|
|
return organization;
|
|
}
|
|
|
|
@Get('base-currency-mutate')
|
|
async baseCurrencyMutate() {
|
|
const abilities =
|
|
await this.orgBaseCurrencyLockingService.baseCurrencyMutateLocks();
|
|
|
|
return { abilities };
|
|
}
|
|
|
|
@Put()
|
|
@HttpCode(200)
|
|
@ApiOperation({ summary: 'Update organization information' })
|
|
@ApiBody({ type: UpdateOrganizationDto })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'Organization information has been updated successfully',
|
|
})
|
|
async updateOrganization(@Body() updateDTO: UpdateOrganizationDto) {
|
|
await this.updateOrganizationService.execute(updateDTO);
|
|
|
|
return {
|
|
code: 200,
|
|
message: 'Organization information has been updated successfully.',
|
|
};
|
|
}
|
|
}
|