import {Request, Response } from "express";
import { VehicleAssigService } from "./vehicleassig.service";

const vehicleAssigService = new VehicleAssigService();

export class VehicleAssigController {

    async getAll(
        req:Request,
        res:Response
    ){
        
        try{
            const vAssigs = await vehicleAssigService.getAll();

            res.json(vAssigs);

        }catch(error){
            res.status(500).json({
                message:"Error al obtener asiganación de vehículo",
                error
            });
        }
    }

    async getById(
        req:Request,
        res:Response
    ){

        try{
            const vAssig = await vehicleAssigService.getById(
                req.params.id as string
            );

            if(!vAssig){
                return res.status(404).json({
                    message:"Asignación de vehículo no encontrada"
                });
            }

            res.json(vAssig);

        } catch(error){
            res.status(500).json({
                message:"Error al obtener asignación de vehículo",
                error
            });
        }

    }

    async create(
        req:Request,
        res:Response
    ){
        try{
            const vAssig = await vehicleAssigService.create(
                req.body
            );

            res.status(201).json(vAssig);

        }catch(error){
            res.status(500).json({
                message:"Error al crear asignación de vehículo",
                error
            });
        }

    }

    async update(
        req:Request,
        res:Response
    ){
        try{
            const vAssig = await vehicleAssigService.update(
                req.params.id as string,
                req.body
            );
            if (!vAssig){
                return res.status(404).json({
                    message:"Asignación de vehículo no encontrada"
                });
            }

            res.status(200).json(vAssig);
        }catch(error){
            res.status(500).json({
                message:"Error al actualizar asignación de vehículo",
                error
            })
        }
    }

    async delete (
        req:Request,
        res:Response
    ){
        try{
            const vAssig = await vehicleAssigService.delete(
                req.params.id as string
            );

            if(!vAssig){
                return res.status(404).json({
                    message:"Asignación de vehículo no encontrada"
                });
            }

            res.json({
                message:"Asignación eliminada correctamente"
            });

        } catch(error){
            res.status(500).json({
                message:"Error al eliminar asignación de vehículo",
                error
            });
        }
    }
}