desktop: added confirmation to change onwer and only admins can change this
This commit is contained in:
@@ -17,6 +17,7 @@ import org.example.petshopdesktop.api.dto.pet.PetRequest;
|
|||||||
import org.example.petshopdesktop.api.dto.pet.PetResponse;
|
import org.example.petshopdesktop.api.dto.pet.PetResponse;
|
||||||
import org.example.petshopdesktop.api.endpoints.DropdownApi;
|
import org.example.petshopdesktop.api.endpoints.DropdownApi;
|
||||||
import org.example.petshopdesktop.api.endpoints.PetApi;
|
import org.example.petshopdesktop.api.endpoints.PetApi;
|
||||||
|
import org.example.petshopdesktop.auth.UserSession;
|
||||||
import org.example.petshopdesktop.models.Pet;
|
import org.example.petshopdesktop.models.Pet;
|
||||||
import org.example.petshopdesktop.util.ActivityLogger;
|
import org.example.petshopdesktop.util.ActivityLogger;
|
||||||
import org.example.petshopdesktop.util.DesktopImageSupport;
|
import org.example.petshopdesktop.util.DesktopImageSupport;
|
||||||
@@ -25,6 +26,8 @@ import org.example.petshopdesktop.util.FilePickerSupport;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class PetDialogController {
|
public class PetDialogController {
|
||||||
|
|
||||||
@@ -92,6 +95,7 @@ public class PetDialogController {
|
|||||||
|
|
||||||
private Long pendingCustomerId = null;
|
private Long pendingCustomerId = null;
|
||||||
private Long pendingStoreId = null;
|
private Long pendingStoreId = null;
|
||||||
|
private Long originalCustomerId = null;
|
||||||
|
|
||||||
private ObservableList<String> statusList = FXCollections.observableArrayList(
|
private ObservableList<String> statusList = FXCollections.observableArrayList(
|
||||||
"Available", "Adopted", "Owned", "Pending"
|
"Available", "Adopted", "Owned", "Pending"
|
||||||
@@ -177,7 +181,7 @@ public class PetDialogController {
|
|||||||
if (cbPetStatus.getSelectionModel().getSelectedItem() == null){
|
if (cbPetStatus.getSelectionModel().getSelectedItem() == null){
|
||||||
errorMsg += "Status is required";
|
errorMsg += "Status is required";
|
||||||
}
|
}
|
||||||
if ("Owned".equalsIgnoreCase(selectedStatus) && cbCustomer.getValue() == null) {
|
if ("Owned".equalsIgnoreCase(selectedStatus) && cbCustomer.getValue() == null && UserSession.getInstance().isAdmin()) {
|
||||||
errorMsg += "Customer is required for Owned status\n";
|
errorMsg += "Customer is required for Owned status\n";
|
||||||
}
|
}
|
||||||
boolean storeRequired = requiresStore(selectedStatus) && !"Adopted".equalsIgnoreCase(selectedStatus);
|
boolean storeRequired = requiresStore(selectedStatus) && !"Adopted".equalsIgnoreCase(selectedStatus);
|
||||||
@@ -201,6 +205,18 @@ public class PetDialogController {
|
|||||||
errorMsg += Validator.isPositiveInteger(txtPetAge.getText(), "Age");
|
errorMsg += Validator.isPositiveInteger(txtPetAge.getText(), "Age");
|
||||||
|
|
||||||
if(errorMsg.isEmpty()){
|
if(errorMsg.isEmpty()){
|
||||||
|
if ("Edit".equals(mode) && UserSession.getInstance().isAdmin()) {
|
||||||
|
Long newCustomerId = cbCustomer.getValue() != null ? cbCustomer.getValue().getId() : null;
|
||||||
|
if (!Objects.equals(originalCustomerId, newCustomerId)) {
|
||||||
|
Alert confirm = new Alert(Alert.AlertType.CONFIRMATION);
|
||||||
|
confirm.setHeaderText("Confirm Owner Change");
|
||||||
|
confirm.setContentText("Are you sure you want to reassign this pet to a different owner?");
|
||||||
|
Optional<ButtonType> result = confirm.showAndWait();
|
||||||
|
if (result.isEmpty() || result.get() != ButtonType.OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
PetRequest request = buildPetRequest();
|
PetRequest request = buildPetRequest();
|
||||||
try {
|
try {
|
||||||
if(mode.equals("Add")) {
|
if(mode.equals("Add")) {
|
||||||
@@ -381,6 +397,7 @@ public class PetDialogController {
|
|||||||
refreshImagePreview();
|
refreshImagePreview();
|
||||||
|
|
||||||
pendingCustomerId = pet.getCustomerId() > 0 ? pet.getCustomerId() : null;
|
pendingCustomerId = pet.getCustomerId() > 0 ? pet.getCustomerId() : null;
|
||||||
|
originalCustomerId = pendingCustomerId;
|
||||||
pendingStoreId = pet.getStoreId() > 0 ? pet.getStoreId() : null;
|
pendingStoreId = pet.getStoreId() > 0 ? pet.getStoreId() : null;
|
||||||
|
|
||||||
for (String status : cbPetStatus.getItems()) {
|
for (String status : cbPetStatus.getItems()) {
|
||||||
@@ -472,9 +489,10 @@ public class PetDialogController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateStatusFieldVisibility(String status) {
|
private void updateStatusFieldVisibility(String status) {
|
||||||
boolean needsCustomer = "Owned".equalsIgnoreCase(status) || "Adopted".equalsIgnoreCase(status);
|
boolean statusNeedsCustomer = "Owned".equalsIgnoreCase(status) || "Adopted".equalsIgnoreCase(status);
|
||||||
|
boolean needsCustomer = statusNeedsCustomer && UserSession.getInstance().isAdmin();
|
||||||
boolean storeBased = requiresStore(status);
|
boolean storeBased = requiresStore(status);
|
||||||
boolean needsPrice = !needsCustomer;
|
boolean needsPrice = !statusNeedsCustomer;
|
||||||
setFieldVisibility(vbCustomerField, needsCustomer);
|
setFieldVisibility(vbCustomerField, needsCustomer);
|
||||||
setFieldVisibility(vbStoreField, storeBased);
|
setFieldVisibility(vbStoreField, storeBased);
|
||||||
setFieldVisibility(vbPriceField, needsPrice);
|
setFieldVisibility(vbPriceField, needsPrice);
|
||||||
|
|||||||
Reference in New Issue
Block a user