Your IP : 216.73.216.220


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

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

@ApiTags('Orders')
@Controller({ path: 'orders', version: '1' })
export class OrderController {
  constructor(private readonly orderService: OrderService) {}

  @Post()
  async createProduct(@Res() response, @Body() order: Order): Promise<Order> {
    const newOrder = await this.orderService.create(order);
    return response.status(HttpStatus.CREATED).json(newOrder);
  }

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

  @Get('/:id')
  async findById(@Res() response, @Param('id') id: number): Promise<Order> {
    const order = await this.orderService.readById(id);
    return response.status(HttpStatus.OK).json(order);
  }

  @Put('/:id')
  async update(
    @Res() response,
    @Param('id') id,
    @Body() order: Order,
  ): Promise<Order> {
    const updatedOrder = await this.orderService.update(id, order);
    return response.status(HttpStatus.OK).json(updatedOrder);
  }

  @Put()
  async updateMany(@Res() response, @Body() orders: Order[]): Promise<Order[]> {
    const updatedOrders = await this.orderService.updateMany(orders);
    return response.status(HttpStatus.OK).send(updatedOrders);
  }

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