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.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.navigation.fragment.NavHostFragment;
|
import androidx.navigation.fragment.NavHostFragment;
|
||||||
@@ -163,6 +164,20 @@ public class PetDetailFragment extends Fragment {
|
|||||||
petDTO.setCustomerId(customerId);
|
petDTO.setCustomerId(customerId);
|
||||||
petDTO.setStoreId(storeId);
|
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 -> {
|
viewModel.savePet(petDTO).observe(getViewLifecycleOwner(), resource -> {
|
||||||
if (resource == null) return;
|
if (resource == null) return;
|
||||||
setLoading(resource.status == Resource.Status.LOADING);
|
setLoading(resource.status == Resource.Status.LOADING);
|
||||||
@@ -344,6 +359,10 @@ public class PetDetailFragment extends Fragment {
|
|||||||
binding.spinnerStore.setEnabled(false);
|
binding.spinnerStore.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isStaff() && state.isEditing && viewModel.isOriginallyOwnedOrAdopted()) {
|
||||||
|
binding.spinnerCustomer.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
isUpdatingUI = false;
|
isUpdatingUI = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ public class PetDetailViewModel extends ViewModel {
|
|||||||
private Long selectedCustomerId = null;
|
private Long selectedCustomerId = null;
|
||||||
private Long selectedStoreId = null;
|
private Long selectedStoreId = null;
|
||||||
private String selectedSpecies = null;
|
private String selectedSpecies = null;
|
||||||
|
private boolean isOriginallyOwnedOrAdopted = false;
|
||||||
|
private Long originalCustomerId = null;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PetDetailViewModel(PetRepository petRepository, CustomerRepository customerRepository, StoreRepository storeRepository) {
|
public PetDetailViewModel(PetRepository petRepository, CustomerRepository customerRepository, StoreRepository storeRepository) {
|
||||||
@@ -82,6 +84,14 @@ public class PetDetailViewModel extends ViewModel {
|
|||||||
return current != null && current.isEditing;
|
return current != null && current.isEditing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isOriginallyOwnedOrAdopted() {
|
||||||
|
return isOriginallyOwnedOrAdopted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getOriginalCustomerId() {
|
||||||
|
return originalCustomerId;
|
||||||
|
}
|
||||||
|
|
||||||
public LiveData<ViewState> getViewState() {
|
public LiveData<ViewState> getViewState() {
|
||||||
return viewState;
|
return viewState;
|
||||||
}
|
}
|
||||||
@@ -162,6 +172,9 @@ public class PetDetailViewModel extends ViewModel {
|
|||||||
selectedCustomerId = pet.getCustomerId();
|
selectedCustomerId = pet.getCustomerId();
|
||||||
selectedStoreId = pet.getStoreId();
|
selectedStoreId = pet.getStoreId();
|
||||||
selectedSpecies = pet.getPetSpecies();
|
selectedSpecies = pet.getPetSpecies();
|
||||||
|
isOriginallyOwnedOrAdopted = STATUS_OWNED.equalsIgnoreCase(pet.getPetStatus())
|
||||||
|
|| STATUS_ADOPTED.equalsIgnoreCase(pet.getPetStatus());
|
||||||
|
originalCustomerId = pet.getCustomerId();
|
||||||
|
|
||||||
updateViewState(state -> {
|
updateViewState(state -> {
|
||||||
state.selectedCustomerId = selectedCustomerId;
|
state.selectedCustomerId = selectedCustomerId;
|
||||||
|
|||||||
Reference in New Issue
Block a user