import { Request, Response } from "express";

import { VehicleConfigService } from "./vehiclesConfig.service";

const vehicleConfigService = new VehicleConfigService();

export class VehicleConfigController {

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

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

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

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

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

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

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

        }
    }

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

        try{
            const vehicleConfig = await vehicleConfigService.update(
                req.params.id as string,
                req.body
            );

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

            res.status(200).json(vehicleConfig);

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

        }
    }

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

            res.json({
                message:"Configuración de vehículo eliminada"
            });

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

        }
    }
}