diff --git a/src/main/java/com/production/ehayvanbackendapi/Entities/MedType.java b/src/main/java/com/production/ehayvanbackendapi/Entities/MedType.java index 7feba7a..42ec9cc 100644 --- a/src/main/java/com/production/ehayvanbackendapi/Entities/MedType.java +++ b/src/main/java/com/production/ehayvanbackendapi/Entities/MedType.java @@ -15,10 +15,10 @@ public class MedType{ @OneToMany(mappedBy = "MedTypeID") private List medications; - public int getMedTypeID() { + public Integer getMedTypeID() { return MedTypeID; } - public void setMedTypeID(int medTypeID) { + public void setMedTypeID(Integer medTypeID) { MedTypeID = medTypeID; } public String getMedType() { diff --git a/src/main/java/com/production/ehayvanbackendapi/Entities/Medication.java b/src/main/java/com/production/ehayvanbackendapi/Entities/Medication.java index 53355db..d7908f5 100644 --- a/src/main/java/com/production/ehayvanbackendapi/Entities/Medication.java +++ b/src/main/java/com/production/ehayvanbackendapi/Entities/Medication.java @@ -13,7 +13,7 @@ public class Medication { @ManyToOne @JoinColumn(name="MedTypeID", referencedColumnName = "MedTypeID") private MedType MedTypeID; - @ManyToOne + @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name="ScheduleID", referencedColumnName = "ScheduleID") private Schedule ScheduleID; @ManyToOne diff --git a/src/main/java/com/production/ehayvanbackendapi/Entities/Pet.java b/src/main/java/com/production/ehayvanbackendapi/Entities/Pet.java index fb3b5d9..46405ad 100644 --- a/src/main/java/com/production/ehayvanbackendapi/Entities/Pet.java +++ b/src/main/java/com/production/ehayvanbackendapi/Entities/Pet.java @@ -27,7 +27,7 @@ public class Pet { public Integer getPetID() { return PetID; } - public void setPetID(int petID) { + public void setPetID(Integer petID) { PetID = petID; } public String getPetName() { @@ -39,7 +39,7 @@ public void setPetName(String petName) { public Integer getAge() { return Age; } - public void setAge(int age) { + public void setAge(Integer age) { Age = age; } public PetType getPetTypeID() { diff --git a/src/main/java/com/production/ehayvanbackendapi/Mappers/MedicationMapper.java b/src/main/java/com/production/ehayvanbackendapi/Mappers/MedicationMapper.java index af6f8ec..74ebf21 100644 --- a/src/main/java/com/production/ehayvanbackendapi/Mappers/MedicationMapper.java +++ b/src/main/java/com/production/ehayvanbackendapi/Mappers/MedicationMapper.java @@ -20,12 +20,19 @@ public MedicationMapper(ModelMapper modelMapper) { mapper.map(src -> src.getPetID().getPetID(), MedicationDTO::setPetID); mapper.map(src -> src.getMedTypeID().getMedTypeID(), MedicationDTO::setMedTypeID); mapper.map(src -> src.getScheduleID().getScheduleID(), MedicationDTO::setScheduleID); + mapper.map(Medication::getScheduleID, MedicationDTO::setScheduleID); } ); this.modelMapper.createTypeMap(CreateOrUpdateMedicationDTO.class, Medication.class).addMappings( mapper -> { mapper.skip(CreateOrUpdateMedicationDTO::getScheduleID, (dest, v) -> dest.getScheduleID().setScheduleID((Integer) v)); + mapper.skip(src -> src.getPetID(), + (dest, v) -> dest.getPetID().setPetID((Integer) v)); + mapper.skip(src -> src.getMedTypeID(), + (dest, v) -> dest.getMedTypeID().setMedTypeID((Integer) v)); + mapper.skip(src -> src.getMedTypeID(), + (dest, v) -> dest.getMedTypeID().setMedType((String) v)); mapper.map(CreateOrUpdateMedicationDTO::getScheduleID, Medication::setScheduleID); mapper.skip(Medication::setMedicationID); } diff --git a/src/main/java/com/production/ehayvanbackendapi/Services/MedicationService.java b/src/main/java/com/production/ehayvanbackendapi/Services/MedicationService.java index 5cc8c61..feb7f5e 100644 --- a/src/main/java/com/production/ehayvanbackendapi/Services/MedicationService.java +++ b/src/main/java/com/production/ehayvanbackendapi/Services/MedicationService.java @@ -2,9 +2,12 @@ import com.production.ehayvanbackendapi.DTO.MedicationDTO; import com.production.ehayvanbackendapi.DTO.request.CreateOrUpdateMedicationDTO; +import com.production.ehayvanbackendapi.Entities.MedType; import com.production.ehayvanbackendapi.Entities.Medication; +import com.production.ehayvanbackendapi.Entities.Pet; import com.production.ehayvanbackendapi.Mappers.MedicationMapper; import com.production.ehayvanbackendapi.Repositories.MedicationRepository; +import net.sf.jsqlparser.statement.create.table.CreateTable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,12 +32,24 @@ public MedicationDTO postMedication(CreateOrUpdateMedicationDTO medicationDto){ // Create a new medication from the dto. Medication newMedication = medicationMapper.convertToEntity(medicationDto); + // Set the assigned pet for the medication. + Pet assignedPet = new Pet(); + assignedPet.setPetID(medicationDto.getPetID()); + newMedication.setPetID(assignedPet); + + // Set the assigned med type for the medication. + MedType assignedMedType = new MedType(); + assignedMedType.setMedTypeID(medicationDto.getMedTypeID()); + newMedication.setMedTypeID(assignedMedType); + // Attempt posting new medication data to DB. If fails, return null. try{ medicationRepository.save(newMedication); - return medicationMapper.convertToDto(newMedication); + MedicationDTO response = medicationMapper.convertToDto(newMedication); + return response; } catch (Exception e){ + System.out.println(e); return null; } } @@ -46,6 +61,21 @@ public MedicationDTO updateMedication(Integer id, CreateOrUpdateMedicationDTO up // If target medication is present, update it. if(targetMedication.isPresent()){ Medication updatedMedication = medicationMapper.mapExistingEntity(updatedDto, targetMedication.get()); + + // If pet is different, change the pet. + if(updatedDto.getPetID() != targetMedication.get().getPetID().getPetID()){ + Pet updatedPet = new Pet(); + updatedPet.setPetID(updatedDto.getPetID()); + targetMedication.get().setPetID(updatedPet); + } + + // If med type is different, change the med type. + if(updatedDto.getMedTypeID() != targetMedication.get().getMedTypeID().getMedTypeID()){ + MedType updatedMedType = new MedType(); + updatedMedType.setMedTypeID(updatedDto.getMedTypeID()); + targetMedication.get().setMedTypeID(updatedMedType); + } + medicationRepository.save(updatedMedication); return medicationMapper.convertToDto(updatedMedication); }