package ec.edu.espe.movilidad.MovilidadWS.Controller;

import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoConParaevaParaEvaValorPar;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavConparaEva;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavConparaEva.IServiceUzyTavConparaEva;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static ec.edu.espe.movilidad.MovilidadWS.Constant.GlobalConstants.V1_API_VERSION;

@RestController
@CrossOrigin(origins = "*")
@RequestMapping(V1_API_VERSION+"/conparaeva")
public class UzyTavConparaEvaController {

    private final IServiceUzyTavConparaEva serviceUzyTavConparaEva;

    public UzyTavConparaEvaController(IServiceUzyTavConparaEva serviceUzyTavConparaEva) {
        this.serviceUzyTavConparaEva = serviceUzyTavConparaEva;
    }

    @GetMapping("/exampleFindId/{id}")
    public ResponseEntity<DtoUzyTavConparaEva> ListarPorID(@PathVariable Long id) {
        return new ResponseEntity<>(serviceUzyTavConparaEva.ListarPorID(id), HttpStatus.OK);
    }

    @GetMapping("/getAll")
    public ResponseEntity<List<DtoUzyTavConparaEva>> ListarRegistros() {
        return new ResponseEntity<>(serviceUzyTavConparaEva.ListarRegistros(), HttpStatus.OK);
    }

    @GetMapping("/datosRelacionadosConParaevaParaEvaValorPar/{conparaevaID}")
    public ResponseEntity<List<DtoConParaevaParaEvaValorPar>> findByIdDatosRelacionadosConParaevaParaEvaValorPar(@PathVariable("conparaevaID") Long conparaevaID) {
        return new ResponseEntity<>(serviceUzyTavConparaEva.findByIdDatosRelacionadosConParaevaParaEvaValorPar(conparaevaID), HttpStatus.OK);
    }

    @GetMapping("/datosRelacionadosTavParaeva")
    public List<DtoUzyTavConparaEva> getAllDatosRelacionadosTavParaeva() {
        return serviceUzyTavConparaEva.getAllDatosRelacionadosTavParaeva();
    }

    @GetMapping("/datosRelacionadosTavParaeva/{id}")
    public List<DtoUzyTavConparaEva> findByIdDatosRelacionadosTavParaeva(@PathVariable("id") Long id) {
        return serviceUzyTavConparaEva.findByIdDatosRelacionadosTavParaeva(id);
    }



    @GetMapping("/registroParametrosIniciales")
    public ResponseEntity<List<DtoUzyTavConparaEva>> ListarRegistrosParametrosIniciales() {
        return new ResponseEntity<>(serviceUzyTavConparaEva.ListarRegistrosParametrosIniciales(), HttpStatus.OK);
    }


    @GetMapping("/registroParametrosFinales")
    public ResponseEntity<List<DtoUzyTavConparaEva>> ListarRegistrosParametrosFinales() {
        return new ResponseEntity<>(serviceUzyTavConparaEva.ListarRegistrosParametrosFinales(), HttpStatus.OK);
    }


    @PostMapping("/guardar")
    public ResponseEntity<DtoUzyTavConparaEva> guardar(@RequestBody DtoUzyTavConparaEva dtoUzyTavConparaEva) {
        return new  ResponseEntity<>(serviceUzyTavConparaEva.guardar(dtoUzyTavConparaEva), HttpStatus.OK);
    }


    @PutMapping("/editar/{id}")
    public ResponseEntity<DtoUzyTavConparaEva> editar(@PathVariable Long id, @RequestBody DtoUzyTavConparaEva dtoUzyTavConparaEva) {
        return new  ResponseEntity<>(serviceUzyTavConparaEva.editar(id, dtoUzyTavConparaEva), HttpStatus.OK);
    }


    @DeleteMapping("/eliminar/{id}")
    public ResponseEntity<String> eliminar(@PathVariable Long id) {
        boolean eliminado = serviceUzyTavConparaEva.eliminar(id);
        if (eliminado) {
            return ResponseEntity.ok("El registro se eliminĂ³ exitosamente.");
        } else {
            return ResponseEntity.notFound().build();
        }
    }
}