content: package med.voll.api.controller;
  
  import jakarta.transaction.Transactional;
  import jakarta.validation.Valid;
  import med.voll.api.medico.*;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.data.domain.Page;
  import org.springframework.data.domain.Pageable;
  import org.springframework.data.web.PageableDefault;
  import org.springframework.web.bind.annotation.*;
  
  import java.util.List;
  
  @RestController
  @RequestMapping("/medicos")
  public class MedicoController {
  
      @Autowired
      private MedicoRepository medicoRepository;
  
      @PostMapping
      public void registrarMedico(@RequestBody @Valid DatosRegistroMedico datosRegistroMedico) {
          medicoRepository.save(new Medico(datosRegistroMedico));
      }
  
      @GetMapping
      public Page<DatosListadoMedico> listadoMedicos(@PageableDefault(size = 2) Pageable paginacion) {
  //        return medicoRepository.findAll(paginacion).map(DatosListadoMedico::new);
          return medicoRepository.findByActivoTrue(paginacion).map(DatosListadoMedico::new);
      }
  
      @PutMapping
      @Transactional
      public void actualizarMedico(@RequestBody @Valid DatosActualizarMedico datosActualizarMedico) {
          Medico medico = medicoRepository.getReferenceById(datosActualizarMedico.id());
          medico.actualizarDatos(datosActualizarMedico);
      }
  
      // DELETE LOGICO
      @DeleteMapping("/{id}")
      @Transactional
      public void eliminarMedico(@PathVariable Long id) {
          Medico medico = medicoRepository.getReferenceById(id);
          medico.desactivarMedico();
      }
  
  //    DELETE EN BASE DE DATOD
  //    public void eliminarMedico(@PathVariable Long id) {
  //        Medico medico = medicoRepository.getReferenceById(id);
  //        medicoRepository.delete(medico);
  //    }
  
  }
  