Fix pet update functionality

- Fixed issue where editing a pet's type or name wasn't persisting
- Updated processUpdateForm to modify existing pet instead of
  adding new one
- Added proper handling of existing pet update

Fixes #1752
This commit is contained in:
VishantOwO 2025-01-01 03:52:27 +05:30 committed by Dave Syer
parent 6328d2c9dc
commit 2aa53f929d

View file

@ -129,7 +129,7 @@ class PetController {
String petName = pet.getName();
// checking if the pet name already exist for the owner
// checking if the pet name already exists for the owner
if (StringUtils.hasText(petName)) {
Pet existingPet = owner.getPet(petName, false);
if (existingPet != null && !existingPet.getId().equals(pet.getId())) {
@ -146,10 +146,28 @@ class PetController {
return VIEWS_PETS_CREATE_OR_UPDATE_FORM;
}
owner.addPet(pet);
this.owners.save(owner);
updatePetDetails(owner, pet);
redirectAttributes.addFlashAttribute("message", "Pet details has been edited");
return "redirect:/owners/{ownerId}";
}
/**
* Updates the pet details if it exists or adds a new pet to the owner.
* @param owner The owner of the pet
* @param pet The pet with updated details
*/
private void updatePetDetails(Owner owner, Pet pet) {
Pet existingPet = owner.getPet(pet.getId());
if (existingPet != null) {
// Update existing pet's properties
existingPet.setName(pet.getName());
existingPet.setBirthDate(pet.getBirthDate());
existingPet.setType(pet.getType());
}
else {
owner.addPet(pet);
}
this.owners.save(owner);
}
}