Your IP : 216.73.216.220


Current Path : /home/deltalab/PMS/logistic-backend/src/models/routes/
Upload File :
Current File : //home/deltalab/PMS/logistic-backend/src/models/routes/route.controller.ts

import {
  Body,
  Controller,
  Delete,
  Get,
  HttpStatus,
  Param,
  Post,
  Put,
  Query,
  Res,
} from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { Route } from './route.schema';
import { RouteService } from './route.service';

@ApiTags('Routes')
@Controller({ path: 'routes', version: '1' })
export class RouteController {
  constructor(private readonly routeService: RouteService) {}

  @Post()
  async createProduct(@Res() response, @Body() route: Route): Promise<Route> {
    const newRoute = await this.routeService.create(route);
    return response.status(HttpStatus.CREATED).json(newRoute);
  }

  @Get()
  async fetchAll(
    @Res() response,
    @Query('carrier') carrier: string,
    @Query('date') date: Date,
  ): Promise<Route[]> {
    const routes = await this.routeService.readAll({ carrier, date });
    return response.status(HttpStatus.OK).json(routes);
  }

  @Get('/:id')
  async findById(@Res() response, @Param('id') id: string): Promise<Route> {
    const route = await this.routeService.readById(id);
    return response.status(HttpStatus.OK).json(route);
  }

  @Put('/:id')
  async update(
    @Res() response,
    @Param('id') id,
    @Body() route: Route,
  ): Promise<Route> {
    const updatedRoute = await this.routeService.update(id, route);
    return response.status(HttpStatus.OK).json(updatedRoute);
  }

  @Delete('/:id')
  async delete(@Res() response, @Param('id') id: string): Promise<Route> {
    const deletedRoute = await this.routeService.delete(id);
    return response.status(HttpStatus.OK).json(deletedRoute);
  }
}