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


import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoParroquiaCantonProvincia;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTCanton;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTParroquia;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTParroquia.IServiceUzyTParroquia;
import org.springframework.beans.factory.annotation.Autowired;
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+"/parroquia")

public class UzyTParroquiaController {

    private final IServiceUzyTParroquia serviceUzyTParroquia;

    @Autowired
    public UzyTParroquiaController(IServiceUzyTParroquia serviceUzyTParroquia) {
        this.serviceUzyTParroquia = serviceUzyTParroquia;
    }


    @GetMapping("/exampleFindId/{id}")
    public ResponseEntity<DtoUzyTParroquia> ListarPorID(@PathVariable String id) {
        return new ResponseEntity<>(serviceUzyTParroquia.ListarPorID(id), HttpStatus.OK);
    }

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

    @GetMapping("/datosRealacionadosConCanton/{id}")
    public List<DtoUzyTParroquia> findByIdDatosConParaEvaTipo1(@PathVariable("id") String id) {
        return serviceUzyTParroquia.findByIdDatosConCanton(id);
    }
    @GetMapping("/{parroquiaId}")
    public ResponseEntity<DtoUzyTCanton> getCantonByParroquiaId(@PathVariable String parroquiaId) {
        return new ResponseEntity<>(serviceUzyTParroquia.findCantonByParroquiaId(parroquiaId), HttpStatus.OK);
    }


    @PostMapping("/guardar")
    public ResponseEntity<DtoUzyTParroquia> guardar(@RequestBody DtoUzyTParroquia dtoUzyTParroquia) {
        return new  ResponseEntity<>(serviceUzyTParroquia.guardar(dtoUzyTParroquia), HttpStatus.OK);
    }


    @PutMapping("/editar/{id}")
    public ResponseEntity<DtoUzyTParroquia> editar(@PathVariable String id, @RequestBody DtoUzyTParroquia dtoUzyTParroquia) {
        return new  ResponseEntity<>(serviceUzyTParroquia.editar(id, dtoUzyTParroquia), HttpStatus.OK);
    }


    @DeleteMapping("/eliminar/{id}")
    public ResponseEntity<Void> eliminar(@PathVariable String id) {
        serviceUzyTParroquia.eliminar(id);
        return ResponseEntity.ok().build();
    }
    @GetMapping("/BuscarPorIdParroquia/{parroquiaId}")
    public ResponseEntity<List<DtoParroquiaCantonProvincia> > obtenerIdsCantonYProvinciaPorParroquia(@PathVariable String parroquiaId) {
        return new  ResponseEntity<>(serviceUzyTParroquia.obtenerIdsCantonYProvinciaPorParroquia(parroquiaId), HttpStatus.OK);

    }

}