diff --git a/jsf/src/main/java/es/uvigo/esei/xcs/jsf/PetDetailsManagedBean.java b/jsf/src/main/java/es/uvigo/esei/xcs/jsf/PetDetailsManagedBean.java index 75f8651dd8a67b624b2331c4404c71494ac93b63..48d30183a027387693e6f6ff966858f7ce2322b9 100644 --- a/jsf/src/main/java/es/uvigo/esei/xcs/jsf/PetDetailsManagedBean.java +++ b/jsf/src/main/java/es/uvigo/esei/xcs/jsf/PetDetailsManagedBean.java @@ -5,19 +5,43 @@ import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; import javax.faces.context.FacesContext; +import javax.faces.view.ViewScoped; + +import java.util.Date; +import java.text.SimpleDateFormat; +import java.io.Serializable; +import java.text.ParseException; +import java.util.List; import java.util.Map; import es.uvigo.esei.xcs.domain.entities.Pet; +import es.uvigo.esei.xcs.domain.entities.Vaccine; +import es.uvigo.esei.xcs.domain.entities.Vaccination; import es.uvigo.esei.xcs.service.PetService; +import es.uvigo.esei.xcs.service.VaccinationService; +import es.uvigo.esei.xcs.service.VaccineService; @Named("petDetails") -@RequestScoped -public class PetDetailsManagedBean { +//@RequestScoped +@ViewScoped +public class PetDetailsManagedBean implements Serializable{ + private static final long serialVersionUID = 1L; + + @Inject + private PetService petService; + @Inject - private PetService service; + private VaccineService vaccineService; + + @Inject + private VaccinationService vaccinationService; private Pet pet; + private Long selectedVaccineId; + private String vaccinationDate; // yyyy-MM-dd + private List allVaccines; + @PostConstruct public void init() { Map params = FacesContext.getCurrentInstance() @@ -25,11 +49,57 @@ public class PetDetailsManagedBean { .getRequestParameterMap(); String id = params.get("id"); if (id != null) { - this.pet = service.get(Long.parseLong(id)); + this.pet = petService.get(Long.parseLong(id)); } + this.allVaccines = vaccineService.list(0, 100); // ajustar paginación } public Pet getPet() { return pet; } + + public List getAllVaccines() { + return allVaccines; + } + + public Long getSelectedVaccineId() { + return selectedVaccineId; + } + + public void setSelectedVaccineId(Long selectedVaccineId) { + this.selectedVaccineId = selectedVaccineId; + } + + public String getVaccinationDate() { + return vaccinationDate; + } + + public void setVaccinationDate(String vaccinationDate) { + this.vaccinationDate = vaccinationDate; + } + + // Método para vacunar + public String vaccinate() { + if (selectedVaccineId == null || vaccinationDate == null || vaccinationDate.isEmpty()) { + FacesContext.getCurrentInstance().addMessage(null, + new javax.faces.application.FacesMessage("Debe seleccionar vacuna y fecha")); + return null; + } + + try { + Date date = new SimpleDateFormat("yyyy-MM-dd").parse(vaccinationDate); + Vaccination v = vaccinationService.create(pet.getId(), selectedVaccineId, date); + // refrescar la mascota para mostrar la nueva vacunación + this.pet = petService.get(pet.getId()); + FacesContext.getCurrentInstance().addMessage(null, + new javax.faces.application.FacesMessage("Vacunación creada correctamente")); + } catch (ParseException e) { + FacesContext.getCurrentInstance().addMessage(null, + new javax.faces.application.FacesMessage("Formato de fecha inválido")); + } catch (IllegalArgumentException e) { + FacesContext.getCurrentInstance().addMessage(null, + new javax.faces.application.FacesMessage(e.getMessage())); + } + return null; // recargar la misma página + } } diff --git a/jsf/src/main/webapp/vet/petDetails.xhtml b/jsf/src/main/webapp/vet/petDetails.xhtml index 1874831fd110f81b41cb6e705f364246f4fbdf2c..a68ebb44e536964a719166e26912615f55800604 100644 --- a/jsf/src/main/webapp/vet/petDetails.xhtml +++ b/jsf/src/main/webapp/vet/petDetails.xhtml @@ -37,6 +37,27 @@ #{v.vaccine.name} + + +

Registrar nueva vacunación

+ + + + + + + + + + + + + + + + + diff --git a/service/src/main/java/es/uvigo/esei/xcs/service/VaccinationService.java b/service/src/main/java/es/uvigo/esei/xcs/service/VaccinationService.java index 7d1c78ccc20dfd3f6d2b3035a9e48696fa92976f..55b7fa3a6b0dbfd079e6957adb1d30961eecc2d6 100644 --- a/service/src/main/java/es/uvigo/esei/xcs/service/VaccinationService.java +++ b/service/src/main/java/es/uvigo/esei/xcs/service/VaccinationService.java @@ -63,7 +63,7 @@ public class VaccinationService { }*/ public Vaccination create(Long petId, Long vaccineId, Date date) { - Pet pet = requireNonNull(em.find(Pet.class, petId), "Pet can't be null"); + Pet pet = requireNonNull(em.find(Pet.class, petId), "Pet can't be null"); Vaccine vaccine = requireNonNull(em.find(Vaccine.class, vaccineId), "Vaccine can't be null"); if (!canVaccinate(petId, vaccineId, date)) {