import { Controller, Get, Param, Query } from "@nestjs/common"; import { ApiOperation } from "@nestjs/swagger"; import { SearchCitiesDto } from "./DTO/cities-search-query.dto"; import { SearchProvincesDto } from "./DTO/provinces-search-query.dto"; import { AddressService } from "./providers/address.service"; import { AuthGuards } from "../../common/decorators/auth-guard.decorator"; import { ParamNumberIdDto } from "../../common/DTO/param.dto"; @Controller("address") @AuthGuards() export class AddressController { constructor(private readonly addressService: AddressService) {} @ApiOperation({ summary: "Get all cities" }) @Get("cities/list") getCitiesList(@Query() queryDto: SearchCitiesDto) { return this.addressService.getAllCities(queryDto); } @ApiOperation({ summary: "Get all provinces" }) @Get("provinces/list") getProvincesList(@Query() queryDto: SearchProvincesDto) { return this.addressService.getAllProvinces(queryDto); } @ApiOperation({ summary: "Get cities of provinces" }) @Get("provinces/:id/cities") getCitiesByProvinces(@Query() queryDto: SearchProvincesDto, @Param() paramDto: ParamNumberIdDto) { return this.addressService.getCitiesByProvince(queryDto, +paramDto.id); } @ApiOperation({ summary: "Get province of city" }) @Get("cities/:id/province") getProvinceByCity(@Param() paramDto: ParamNumberIdDto) { return this.addressService.getProvinceByCity(+paramDto.id); } }