mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 20:30:33 +00:00
95 lines
2.6 KiB
TypeScript
95 lines
2.6 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
Param,
|
|
Post,
|
|
Put,
|
|
} from '@nestjs/common';
|
|
import { WarehousesApplication } from './WarehousesApplication.service';
|
|
import {
|
|
ApiExtraModels,
|
|
ApiOperation,
|
|
ApiResponse,
|
|
ApiTags,
|
|
getSchemaPath,
|
|
} from '@nestjs/swagger';
|
|
import { CreateWarehouseDto, EditWarehouseDto } from './dtos/Warehouse.dto';
|
|
import { WarehouseResponseDto } from './dtos/WarehouseResponse.dto';
|
|
import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders';
|
|
|
|
@Controller('warehouses')
|
|
@ApiTags('Warehouses')
|
|
@ApiExtraModels(WarehouseResponseDto)
|
|
@ApiCommonHeaders()
|
|
export class WarehousesController {
|
|
constructor(private warehousesApplication: WarehousesApplication) {}
|
|
|
|
@Post()
|
|
@ApiOperation({ summary: 'Create a warehouse' })
|
|
createWarehouse(@Body() createWarehouseDTO: CreateWarehouseDto) {
|
|
return this.warehousesApplication.createWarehouse(createWarehouseDTO);
|
|
}
|
|
|
|
@Put(':id')
|
|
editWarehouse(
|
|
@Param('id') warehouseId: string,
|
|
@Body() editWarehouseDTO: EditWarehouseDto,
|
|
) {
|
|
return this.warehousesApplication.editWarehouse(
|
|
Number(warehouseId),
|
|
editWarehouseDTO,
|
|
);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@ApiOperation({ summary: 'Delete a warehouse' })
|
|
deleteWarehouse(@Param('id') warehouseId: string) {
|
|
return this.warehousesApplication.deleteWarehouse(Number(warehouseId));
|
|
}
|
|
|
|
@Get(':id')
|
|
@ApiOperation({ summary: 'Get a warehouse' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'The warehouse details have been successfully retrieved.',
|
|
schema: { $ref: getSchemaPath(WarehouseResponseDto) },
|
|
})
|
|
getWarehouse(@Param('id') warehouseId: string) {
|
|
return this.warehousesApplication.getWarehouse(Number(warehouseId));
|
|
}
|
|
|
|
@Get()
|
|
@ApiOperation({ summary: 'Get all warehouses' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'The warehouses have been successfully retrieved.',
|
|
schema: {
|
|
type: 'array',
|
|
items: { $ref: getSchemaPath(WarehouseResponseDto) },
|
|
},
|
|
})
|
|
getWarehouses() {
|
|
return this.warehousesApplication.getWarehouses();
|
|
}
|
|
|
|
@Post('activate')
|
|
@ApiOperation({ summary: 'Activate a warehouse' })
|
|
activateWarehouses() {
|
|
return this.warehousesApplication.activateWarehouses();
|
|
}
|
|
|
|
@Put(':id/mark-primary')
|
|
@ApiOperation({ summary: 'Mark a warehouse as primary' })
|
|
markWarehousePrimary(@Param('id') warehouseId: string) {
|
|
return this.warehousesApplication.markWarehousePrimary(Number(warehouseId));
|
|
}
|
|
|
|
@Get('items/:itemId')
|
|
@ApiOperation({ summary: 'Get item warehouses' })
|
|
getItemWarehouses(@Param('itemId') itemId: string) {
|
|
return this.warehousesApplication.getItemWarehouses(Number(itemId));
|
|
}
|
|
}
|