package ec.edu.espe.movilidad.MovilidadWS.Controller;
import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoUzyTavProgObjEstartegico;
import ec.edu.espe.movilidad.MovilidadWS.Service.UzyTavProgObjEstartegico.IServiceUzyTavProgObjEstartegico;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.HttpStatus;

import javax.validation.Valid;
import java.util.List;

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

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

    private final IServiceUzyTavProgObjEstartegico serviceUzyTavProgObjEstartegico;

    public UzyTavProgObjEstartegicoController(IServiceUzyTavProgObjEstartegico serviceUzyTavProgObjEstartegico) {
        this.serviceUzyTavProgObjEstartegico = serviceUzyTavProgObjEstartegico;
    }

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

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

    @PostMapping("/guardar")
    public ResponseEntity<DtoUzyTavProgObjEstartegico> guardar(@Valid @RequestBody DtoUzyTavProgObjEstartegico dtoUzyTavProgObjEstartegico) {
        DtoUzyTavProgObjEstartegico savedDto = serviceUzyTavProgObjEstartegico.guardar(dtoUzyTavProgObjEstartegico);
        return ResponseEntity.ok(savedDto);
    }


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



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