diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java b/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java index 69bd4be..91e6798 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/controller/AnimalController.java @@ -2,6 +2,8 @@ package fr.geoffrey.medical_training_tracker.controller; import static fr.geoffrey.medical_training_tracker.controller.IndexController.MODEL_MAP_NAVBAR_PAGE; import fr.geoffrey.medical_training_tracker.dao.bean.Animal; +import fr.geoffrey.medical_training_tracker.dao.bean.Care; +import fr.geoffrey.medical_training_tracker.dao.bean.ConsentBehavior; import fr.geoffrey.medical_training_tracker.services.IServiceAnimal; import java.util.List; import javax.servlet.http.HttpSession; @@ -24,6 +26,8 @@ public class AnimalController { public static final String MODEL_MAP_ANIMAL_CARE_ID = "MODEL_MAP_ANIMAL_CARE_ID"; public static final String MODEL_MAP_ANIMAL_CONSENT_BEHAVIOR_ID = "MODEL_MAP_ANIMAL_CONSENT_BEHAVIOR_ID"; public static final String MODEL_MAP_PROGRESSION = "MODEL_MAP_PROGRESSION"; + public static final String MODEL_MAP_LIST_REMAINING_CONSENT_BEHAVIORS = "MODEL_MAP_LIST_REMAINING_CONSENT_BEHAVIORS"; + public static final String MODEL_MAP_LIST_REMAINING_CARES = "MODEL_MAP_LIST_REMAINING_CARES"; @Autowired IServiceAnimal serviceAnimal; @@ -214,6 +218,55 @@ public class AnimalController { return ret; } + + @RequestMapping(value = IndexController.URL_ANIMAL_PROGRESSION_ADD, method = RequestMethod.POST) + public String doPostAddProgression(final ModelMap pModel, HttpSession httpSession, + @PathVariable(value = "animal_id") final int animalId, + @RequestParam(name = "care_id", required = true) int careId, + @RequestParam(name = "consent_behavior_id", required = true) int consentBehaviorId) { + String ret; + + if (LoginController.isUserAlreadyAuth(httpSession)) { + Authentication authentication = (Authentication) httpSession.getAttribute(IndexController.SESSION_ATTRIBUTE_AUTHENTICATION); + Object oUserDetails = authentication.getPrincipal(); + if (oUserDetails instanceof UserDetails) { + UserDetails userDetails = (UserDetails) oUserDetails; + + serviceAnimal.addProgression(animalId, careId, consentBehaviorId); + } + + // TODO Where do redirection ? + ret = IndexController.URL_REDIRECT + IndexController.URL_ANIMAL_CARES_AND_BEHAVIORS_LIST.replaceAll("\\{animal_id\\}", animalId + ""); + } else { + ret = IndexController.URL_REDIRECT + IndexController.URL_LOGIN; + } + + return ret; + } + + @RequestMapping(value = IndexController.URL_ANIMAL_PROGRESSION_DELETE, method = RequestMethod.POST) + public String doPostDeleteProgression(final ModelMap pModel, HttpSession httpSession, + @PathVariable(value = "animal_id") final int animalId, + @PathVariable(value = "progression_id") final int progressionId) { + String ret; + + if (LoginController.isUserAlreadyAuth(httpSession)) { + Authentication authentication = (Authentication) httpSession.getAttribute(IndexController.SESSION_ATTRIBUTE_AUTHENTICATION); + Object oUserDetails = authentication.getPrincipal(); + if (oUserDetails instanceof UserDetails) { + UserDetails userDetails = (UserDetails) oUserDetails; + + serviceAnimal.deleteAnimalProgression(animalId, userDetails.getUsername(), progressionId); + } + + // TODO Where do redirection ? + ret = IndexController.URL_REDIRECT + IndexController.URL_ANIMAL_CARES_AND_BEHAVIORS_LIST.replaceAll("\\{animal_id\\}", animalId + ""); + } else { + ret = IndexController.URL_REDIRECT + IndexController.URL_LOGIN; + } + + return ret; + } // @RequestMapping(value = IndexController.URL_ANIMAL_CARE, method = RequestMethod.GET) @@ -233,6 +286,12 @@ public class AnimalController { List animals = serviceAnimal.getAnimals(userDetails.getUsername()); pModel.addAttribute(MODEL_MAP_ANIMAL_LIST, animals); + + List listRemainingConsentBehaviors = serviceAnimal.getAnimalConsentBehaviors(userDetails.getUsername(), animalId); + for (ConsentBehavior cb: animal.getListConsentBehavior()) { + listRemainingConsentBehaviors.remove(cb); + } + pModel.addAttribute(MODEL_MAP_LIST_REMAINING_CONSENT_BEHAVIORS, listRemainingConsentBehaviors); pModel.addAttribute(MODEL_MAP_ANIMAL_CARE_ID, careId); } @@ -262,6 +321,12 @@ public class AnimalController { List animals = serviceAnimal.getAnimals(userDetails.getUsername()); pModel.addAttribute(MODEL_MAP_ANIMAL_LIST, animals); + + List listRemainingCares = serviceAnimal.getAnimalCares(userDetails.getUsername(), animalId); + for (Care care: animal.getListCares()) { + listRemainingCares.remove(care); + } + pModel.addAttribute(MODEL_MAP_LIST_REMAINING_CARES, listRemainingCares); pModel.addAttribute(MODEL_MAP_ANIMAL_CONSENT_BEHAVIOR_ID, consentBehaviorId); } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java b/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java index a73a4dd..2120f85 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/controller/IndexController.java @@ -50,10 +50,12 @@ public class IndexController { // Add URL public static final String URL_ANIMAL_CARES_ADD = "/animal/{animal_id}/add/care"; public static final String URL_ANIMAL_CONSENT_BEHAVIOR_ADD = "/animal/{animal_id}/add/consent_behavior"; + public static final String URL_ANIMAL_PROGRESSION_ADD = "/animal/{animal_id}/add/progression"; // Delete URL public static final String URL_ANIMAL_DELETE = "/animal/delete/{animal_id}"; public static final String URL_ANIMAL_CARES_DELETE = "/animal/{animal_id}/delete/care/{care_id}"; public static final String URL_ANIMAL_CONSENT_BEHAVIOR_DELETE = "/animal/{animal_id}/delete/consent_behavior/{consent_behavior_id}"; + public static final String URL_ANIMAL_PROGRESSION_DELETE = "/animal/{animal_id}/delete/progression/{progression_id}"; public static final String URL_REDIRECT = "redirect:"; // diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java index 81a4ddf..b2fa9f4 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/IProgressionDao.java @@ -19,4 +19,6 @@ public interface IProgressionDao extends CommonDao { public void fillAnimalProgressionByMe(Animal animal, String progressionByMe); public void fillAnimalProgressionBySomeoneElse(Animal animal, String progressionBySomeoneElse); public void fillAnimalProgressionByVeterinary(Animal animal, String progressionByVeterinary); + + public void addProgression(int animalId, int careId, int consentBehaviorId); } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java index 36e20e4..897ed29 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bdd/postgres/ProgressionDao.java @@ -493,4 +493,42 @@ public class ProgressionDao extends PostgresSqlDao implements IProgressionDao { } } // + + @Override + public void addProgression(int animalId, int careId, int consentBehaviorId) { + Connection conn = null; + PreparedStatement statement = null; + try { + conn = mDataSource.getConnection(); + statement = conn.prepareStatement("INSERT INTO "+TABLE_NAME+" (id, animal, care, consent_behavior, progression_by_me, progression_by_someone_else, progression_by_veterinary) VALUES (nextval(?), ?, ?, ?, ?, ?, ?);"); + statement.setString(1, SEQUENCE_NAME); + statement.setInt(2, animalId); + statement.setInt(3, careId); + statement.setInt(4, consentBehaviorId); + statement.setString(5, Progression.PROGRESSION_VALUE_NOT_TRAINED); + statement.setString(6, Progression.PROGRESSION_VALUE_NOT_TRAINED); + statement.setString(7, Progression.PROGRESSION_VALUE_NOT_TRAINED); + System.out.println(IndexController.LOG_TAG + " SQL -> " + statement.toString()); + statement.executeUpdate(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " SQLException -> addProgression()"); + System.err.println(ex.getMessage()); + ex.printStackTrace(); + } finally { + if (statement != null) { + try { + statement.close(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " Failed close statement -> addProgression()"); + } + } + if (conn != null) { + try { + conn.close(); + } catch (SQLException ex) { + System.err.println(IndexController.LOG_TAG + " Failed close connection -> addProgression()"); + } + } + } + } } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Care.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Care.java index 36d5ccc..a85e52d 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Care.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/Care.java @@ -33,4 +33,29 @@ public class Care { public void setDescription(String description) { this.description = description; } + + @Override + public int hashCode() { + int hash = 3; + hash = 53 * hash + this.id; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Care other = (Care) obj; + if (this.id != other.id) { + return false; + } + return true; + } } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ConsentBehavior.java b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ConsentBehavior.java index 6ee2e8c..723c722 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ConsentBehavior.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/dao/bean/ConsentBehavior.java @@ -33,4 +33,29 @@ public class ConsentBehavior { public void setDescription(String description) { this.description = description; } + + @Override + public int hashCode() { + int hash = 7; + hash = 41 * hash + this.id; + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final ConsentBehavior other = (ConsentBehavior) obj; + if (this.id != other.id) { + return false; + } + return true; + } } diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java b/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java index 9b8ab52..ed76e9c 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/services/IServiceAnimal.java @@ -1,6 +1,8 @@ package fr.geoffrey.medical_training_tracker.services; import fr.geoffrey.medical_training_tracker.dao.bean.Animal; +import fr.geoffrey.medical_training_tracker.dao.bean.Care; +import fr.geoffrey.medical_training_tracker.dao.bean.ConsentBehavior; import java.util.List; public interface IServiceAnimal { @@ -10,11 +12,13 @@ public interface IServiceAnimal { public Animal getAnimalCareProgression(String owner, int animalId, int careId); public Animal getAnimalConsentBehaviorProgression(String owner, int animalId, int consentBehaviorId); public Animal getAnimalProgressionByMe(String username, int animalId, String progressionValue); + public List getAnimalConsentBehaviors(String username, int animalId); + public List getAnimalCares(String username, int animalId); public void addAnimal(String name, String owner); public void addCare(int animalId, String name, String description); public void addConsentBehavior(int animalId, String name, String description); -// public void addProgression(int animalId,, int careId, int consentBehaviorId) + public void addProgression(int animalId, int careId, int consentBehaviorId); public void deleteAnimal(int animalId, String owner); public void deleteAnimalCare(int animalId, String owner, int careId); diff --git a/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java b/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java index 13e4dd9..cb5b94f 100644 --- a/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java +++ b/src/main/java/fr/geoffrey/medical_training_tracker/services/ServiceAnimal.java @@ -5,6 +5,8 @@ import fr.geoffrey.medical_training_tracker.dao.ICareDao; import fr.geoffrey.medical_training_tracker.dao.IConsentBehaviorDao; import fr.geoffrey.medical_training_tracker.dao.IProgressionDao; import fr.geoffrey.medical_training_tracker.dao.bean.Animal; +import fr.geoffrey.medical_training_tracker.dao.bean.Care; +import fr.geoffrey.medical_training_tracker.dao.bean.ConsentBehavior; import java.util.List; /** @@ -115,4 +117,19 @@ public class ServiceAnimal implements IServiceAnimal { } return animal; } + + @Override + public List getAnimalConsentBehaviors(String username, int animalId) { + return consentBehaviorDao.getAllAnialConsentBehavior(username, animalId); + } + + @Override + public List getAnimalCares(String username, int animalId) { + return careDao.getAllAnimalCares(username, animalId); + } + + @Override + public void addProgression(int animalId, int careId, int consentBehaviorId) { + progressionDao.addProgression(animalId, careId, consentBehaviorId); + } } diff --git a/src/main/webapp/vue/animal_behavior.jsp b/src/main/webapp/vue/animal_behavior.jsp index 9d09c24..b5f5137 100644 --- a/src/main/webapp/vue/animal_behavior.jsp +++ b/src/main/webapp/vue/animal_behavior.jsp @@ -3,6 +3,8 @@ <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> <%@ page isELIgnored="false" %> + + <%@ include file="base/language.jsp" %> @@ -34,6 +36,7 @@

${MODEL_MAP_ANIMAL.getConsentBehaviorById(MODEL_MAP_ANIMAL_CONSENT_BEHAVIOR_ID).getName()}

${MODEL_MAP_ANIMAL.getConsentBehaviorById(MODEL_MAP_ANIMAL_CONSENT_BEHAVIOR_ID).getDescription()}

Progression

+ @@ -41,6 +44,7 @@ + @@ -62,10 +66,32 @@ infoactive ">${progression.getProgressionByVeterinary()} +
Réalisé par moi Réalisé par quelqu'un d'autre Réalisé par le vétérinaire
+ +
+ +
+
+ +
+

Ajouter un soins pour ce comportement de consentement

+
+ + + + + + +
+ <%@ include file="base/footer.jsp" %> diff --git a/src/main/webapp/vue/animal_care.jsp b/src/main/webapp/vue/animal_care.jsp index 1a2270e..f90e015 100644 --- a/src/main/webapp/vue/animal_care.jsp +++ b/src/main/webapp/vue/animal_care.jsp @@ -3,6 +3,8 @@ <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> <%@ page isELIgnored="false" %> + + <%@ include file="base/language.jsp" %> @@ -34,6 +36,7 @@

${MODEL_MAP_ANIMAL.getCareById(MODEL_MAP_ANIMAL_CARE_ID).getName()}

${MODEL_MAP_ANIMAL.getCareById(MODEL_MAP_ANIMAL_CARE_ID).getDescription()}

Progression

+ @@ -41,6 +44,7 @@ + @@ -51,10 +55,10 @@ successinfoactive - "> + "> - ${progression.getProgressionByMe()} - + ${progression.getProgressionByMe()} + +
Réalisé par moi Réalisé par quelqu'un d'autre Réalisé par le vétérinaire
success @@ -66,10 +70,31 @@ info active ">${progression.getProgressionByVeterinary()} + +
+ +
+
+ +
+

Ajouter un comportement de consentement pour ce soin

+
+ + + + + +
+ <%@ include file="base/footer.jsp" %>