85 lines
2.9 KiB
TypeScript
85 lines
2.9 KiB
TypeScript
import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards } from '@nestjs/common';
|
|
import { CatalogueService } from './catalogue.service';
|
|
import { CreateCatalogueDto } from './dto/create-catalogue.dto';
|
|
import { UpdateCatalogueDto } from './dto/update-catalogue.dto';
|
|
import { FindCataloguesDto } from './dto/find-catalogues.dto';
|
|
import { AdminAuthGuard } from '../auth/guards/adminAuth.guard';
|
|
import { BusinessId } from 'src/common/decorators';
|
|
import { ApiBearerAuth } from '@nestjs/swagger';
|
|
import { PurchaseCatalogueDto } from './dto/purchase-catalogue.dto';
|
|
import { SuperAdminAuthGuard } from '../auth/guards/superAdminAuth.guard';
|
|
import { FinishPurchaseCatalogueDto } from './dto/finish-purchase-catalogue.dto';
|
|
|
|
@Controller()
|
|
@ApiBearerAuth()
|
|
export class CatalogueController {
|
|
constructor(private readonly catalogueService: CatalogueService) { }
|
|
|
|
// ============= Public Routes ==============
|
|
|
|
@Get('public/catalogue/business/slug/:slug')
|
|
findAllAsPublic(@Param('slug') slug: string, @Query() queryDto: FindCataloguesDto) {
|
|
return this.catalogueService.findAll(slug, queryDto);
|
|
}
|
|
|
|
@Get('public/catalogue/:id')
|
|
findOneAsPublic(@Param('id') id: string) {
|
|
return this.catalogueService.findOne(id);
|
|
}
|
|
|
|
@Get('public/catalogue/slug/:slug')
|
|
findOneBySlugAsPublic(@Param('slug') slug: string) {
|
|
return this.catalogueService.findOneOrFailBySlug(slug);
|
|
}
|
|
|
|
// ============= Admin Routes ==============
|
|
|
|
@Post('admin/catalogue')
|
|
@UseGuards(AdminAuthGuard)
|
|
create(@Body() dto: CreateCatalogueDto, @BusinessId() businessId: string) {
|
|
return this.catalogueService.create(dto, businessId);
|
|
}
|
|
|
|
|
|
|
|
@Get('admin/catalogue')
|
|
@UseGuards(AdminAuthGuard)
|
|
findAll(@Query() queryDto: FindCataloguesDto, @BusinessId() businessId: string) {
|
|
return this.catalogueService.findAllAsAdmin(businessId, queryDto);
|
|
}
|
|
|
|
@Get('admin/catalogue/:id')
|
|
@UseGuards(AdminAuthGuard)
|
|
findOne(@Param('id') id: string) {
|
|
return this.catalogueService.findOne(id);
|
|
}
|
|
|
|
@Patch('admin/catalogue/:id')
|
|
@UseGuards(AdminAuthGuard)
|
|
update(@Param('id') id: string, @Body() dto: UpdateCatalogueDto) {
|
|
return this.catalogueService.update(id, dto);
|
|
}
|
|
|
|
@Delete('admin/catalogue/:id')
|
|
@UseGuards(AdminAuthGuard)
|
|
remove(@Param('id') id: string) {
|
|
return this.catalogueService.remove(id);
|
|
}
|
|
|
|
// =============== in-app purchase catalogue endpoints =============
|
|
|
|
@Post('admin/catalogue/purchase/initiate')
|
|
@UseGuards(AdminAuthGuard)
|
|
purchaseCatalogues(@Body() dto: PurchaseCatalogueDto, @BusinessId() businessId: string) {
|
|
return this.catalogueService.createExternalInvoice(dto, businessId);
|
|
}
|
|
|
|
@Post('super-admin/catalogue/purchase/finish')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
finishPurchaseCatalogues(@Body() dto: FinishPurchaseCatalogueDto) {
|
|
return this.catalogueService.finishPurchaseCatalogue(dto);
|
|
}
|
|
|
|
// =============== end =============
|
|
}
|