Made it so only admins can change pet owners
This commit is contained in:
@@ -4,6 +4,7 @@ import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
@@ -163,6 +164,20 @@ public class PetDetailFragment extends Fragment {
|
||||
petDTO.setCustomerId(customerId);
|
||||
petDTO.setStoreId(storeId);
|
||||
|
||||
boolean ownerChanged = !java.util.Objects.equals(viewModel.getOriginalCustomerId(), customerId);
|
||||
if (!isStaff() && viewModel.isEditing() && viewModel.isOriginallyOwnedOrAdopted() && ownerChanged) {
|
||||
new AlertDialog.Builder(requireContext())
|
||||
.setTitle("Change Owner")
|
||||
.setMessage("Are you sure you want to change the owner of this pet?")
|
||||
.setPositiveButton("Yes", (d, w) -> performSave(petDTO, name))
|
||||
.setNegativeButton("Cancel", null)
|
||||
.show();
|
||||
} else {
|
||||
performSave(petDTO, name);
|
||||
}
|
||||
}
|
||||
|
||||
private void performSave(PetDTO petDTO, String name) {
|
||||
viewModel.savePet(petDTO).observe(getViewLifecycleOwner(), resource -> {
|
||||
if (resource == null) return;
|
||||
setLoading(resource.status == Resource.Status.LOADING);
|
||||
@@ -344,6 +359,10 @@ public class PetDetailFragment extends Fragment {
|
||||
binding.spinnerStore.setEnabled(false);
|
||||
}
|
||||
|
||||
if (isStaff() && state.isEditing && viewModel.isOriginallyOwnedOrAdopted()) {
|
||||
binding.spinnerCustomer.setEnabled(false);
|
||||
}
|
||||
|
||||
isUpdatingUI = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ public class PetDetailViewModel extends ViewModel {
|
||||
private Long selectedCustomerId = null;
|
||||
private Long selectedStoreId = null;
|
||||
private String selectedSpecies = null;
|
||||
private boolean isOriginallyOwnedOrAdopted = false;
|
||||
private Long originalCustomerId = null;
|
||||
|
||||
@Inject
|
||||
public PetDetailViewModel(PetRepository petRepository, CustomerRepository customerRepository, StoreRepository storeRepository) {
|
||||
@@ -82,6 +84,14 @@ public class PetDetailViewModel extends ViewModel {
|
||||
return current != null && current.isEditing;
|
||||
}
|
||||
|
||||
public boolean isOriginallyOwnedOrAdopted() {
|
||||
return isOriginallyOwnedOrAdopted;
|
||||
}
|
||||
|
||||
public Long getOriginalCustomerId() {
|
||||
return originalCustomerId;
|
||||
}
|
||||
|
||||
public LiveData<ViewState> getViewState() {
|
||||
return viewState;
|
||||
}
|
||||
@@ -162,6 +172,9 @@ public class PetDetailViewModel extends ViewModel {
|
||||
selectedCustomerId = pet.getCustomerId();
|
||||
selectedStoreId = pet.getStoreId();
|
||||
selectedSpecies = pet.getPetSpecies();
|
||||
isOriginallyOwnedOrAdopted = STATUS_OWNED.equalsIgnoreCase(pet.getPetStatus())
|
||||
|| STATUS_ADOPTED.equalsIgnoreCase(pet.getPetStatus());
|
||||
originalCustomerId = pet.getCustomerId();
|
||||
|
||||
updateViewState(state -> {
|
||||
state.selectedCustomerId = selectedCustomerId;
|
||||
|
||||
Reference in New Issue
Block a user