use of com.example.first_responder_app.dataModels.RanksDataModel in project FirstResponse by mattpost1700.
the class EditRankFragment method onCreateView.
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// binding fragment with nav_map by using navHostFragment, throw this block of code in there and that allows you to switch to other fragments
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_edit_rank, container, false);
NavHostFragment navHostFragment = (NavHostFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
activeUser = AppUtil.getActiveUser(getActivity());
ranksList = new ArrayList<>();
populateRanks();
// handles edit rank by onClick
EditRankRecyclerViewAdapter.ItemClickListener editRankClickListener = ((view, position, data) -> {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Edit Rank").setMessage("Rank Title");
final EditText input = new EditText(getContext());
ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
input.setLayoutParams(lp);
builder.setView(input);
builder.setPositiveButton("Confirm", (dialogInterface, i) -> {
RanksDataModel rank = ranksList.get(position);
rank.setRank_name(input.getText().toString());
db.collection("ranks").document(rank.getDocumentId()).set(rank);
editRankRecyclerViewAdapter.notifyDataSetChanged();
});
builder.setNegativeButton("Cancel", (dialogInterface, i) -> {
});
AlertDialog dialog = builder.create();
dialog.show();
});
// handles hold to delete
EditRankRecyclerViewAdapter.rankLongClickListener rankLongClickListener = (view, position) -> {
@SuppressLint("NotifyDataSetChanged") AlertDialog.Builder dialog = new AlertDialog.Builder(getContext()).setTitle("Delete rank").setMessage("Are you sure you want to delete this rank?").setPositiveButton("Yes", (dialogInterface, i) -> {
RanksDataModel rank = ranksList.get(position);
db.collection("ranks").document(rank.getDocumentId()).delete();
ranksList.remove(position);
checkRanksListEmpty();
editRankRecyclerViewAdapter.notifyDataSetChanged();
}).setNegativeButton("No", (dialogInterface, i) -> {
});
dialog.show();
};
binding.addRankBtn.setOnClickListener(v -> {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Create Rank").setMessage("Rank Title");
final EditText input = new EditText(getContext());
ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
input.setLayoutParams(lp);
builder.setView(input);
builder.setPositiveButton("Confirm", (dialogInterface, i) -> {
firestoreDatabase.addRank(input.getText().toString());
populateRanks();
});
builder.setNegativeButton("Cancel", (dialogInterface, i) -> {
});
AlertDialog dialog = builder.create();
dialog.show();
});
RecyclerView editRankRecyclerView = binding.editRankRecycler;
editRankRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
editRankRecyclerViewAdapter = new EditRankRecyclerViewAdapter(getContext(), ranksList);
editRankRecyclerViewAdapter.setClickListener(editRankClickListener);
editRankRecyclerViewAdapter.setLongClickListener(rankLongClickListener);
editRankRecyclerView.setAdapter(editRankRecyclerViewAdapter);
/* swipe to delete (now using hold to delete)
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
RanksDataModel deletedRank = ranksList.get(viewHolder.getAdapterPosition());
int pos = viewHolder.getAdapterPosition();
ranksList.remove(pos);
editRankRecyclerViewAdapter.notifyItemRemoved(pos);
}
}).attachToRecyclerView(editRankRecyclerView);
*/
final SwipeRefreshLayout pullToRefresh = binding.rankSwipeRefreshLayout;
pullToRefresh.setOnRefreshListener(() -> {
populateRanks();
pullToRefresh.setRefreshing(false);
});
return binding.getRoot();
}
use of com.example.first_responder_app.dataModels.RanksDataModel in project FirstResponse by mattpost1700.
the class FirestoreDatabase method addRank.
public void addRank(String rankTitle) {
RanksDataModel newRank = new RanksDataModel(activeUserFireDepartmentId, rankTitle);
db.collection(RANKS_COLLECTION_DIR).add(newRank).addOnSuccessListener(documentReference -> Log.d("edit rank page", "new rank has been successfully created in the DB")).addOnFailureListener(e -> Log.d("edit rank page", "failed to create new rank"));
}
use of com.example.first_responder_app.dataModels.RanksDataModel in project FirstResponse by mattpost1700.
the class EditRankRecyclerViewAdapter method onBindViewHolder.
// binds the data to the TextView in each row
@Override
public void onBindViewHolder(EditRankRecyclerViewAdapter.ViewHolder holder, int position) {
RanksDataModel rank = mData.get(position);
holder.title.setText(rank.getRank_name());
holder.data = rank;
}
use of com.example.first_responder_app.dataModels.RanksDataModel in project FirstResponse by mattpost1700.
the class AdminEditUserFragment method onCreateView.
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
AdminEditUserFragmentBinding binding = DataBindingUtil.inflate(inflater, R.layout.admin_edit_user_fragment, container, false);
SearchUserViewModel searchUserViewModel = new ViewModelProvider(requireActivity()).get(SearchUserViewModel.class);
userToEdit = searchUserViewModel.getSelectedUser();
if (userToEdit == null) {
// leave
}
currentlySelectedRankId = userToEdit.getRank_id();
currentlySelectedGroupIds = userToEdit.getGroup_ids();
ArrayList<RanksDataModel> listOfRanks = new ArrayList<>();
ArrayList<String> listOfRankNames = new ArrayList<>();
userInGroupsNames = new ArrayList<>();
userNotInGroupsNames = new ArrayList<>();
addGroupSpinner = binding.addGroupSpinner;
removeGroupSpinner = binding.removeGroupSpinner;
Spinner rankSpinner = binding.rankSpinner;
rankSpinner.setSelection(listOfRankNames.indexOf(currentlySelectedRankId));
rankSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedString = listOfRankNames.get(position);
for (RanksDataModel ranksDataModel : listOfRanks) {
String docId = ranksDataModel.getDocumentId();
if (docId.equals(selectedString)) {
currentlySelectedRankId = docId;
break;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
binding.adminEditUserUserName.setText(userToEdit.getFull_name());
ArrayAdapter<String> rankAdapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, listOfRankNames);
rankSpinner.setAdapter(rankAdapter);
FirestoreDatabase.getInstance().getDb().collection(FirestoreDatabase.RANKS_COLLECTION_DIR).whereEqualTo(FirestoreDatabase.FIELD_FIRE_DEPARTMENT_ID, userToEdit.getFire_department_id()).get().addOnSuccessListener(queryDocumentSnapshots -> {
ArrayList<RanksDataModel> temp = new ArrayList<>();
ArrayList<String> temp2 = new ArrayList<>();
for (QueryDocumentSnapshot queryDocumentSnapshot : queryDocumentSnapshots) {
RanksDataModel ranksDataModel = queryDocumentSnapshot.toObject(RanksDataModel.class);
temp.add(ranksDataModel);
temp2.add(ranksDataModel.getRank_name());
}
listOfRanks.clear();
listOfRanks.addAll(temp);
listOfRankNames.clear();
listOfRankNames.addAll(temp2);
// I know this is bad...
for (RanksDataModel ranksDataModel : listOfRanks) {
if (ranksDataModel.getDocumentId().equals(userToEdit.getRank_id())) {
for (String mRankName : listOfRankNames) {
if (mRankName.equals(ranksDataModel.getRank_name())) {
rankSpinner.setSelection(listOfRankNames.indexOf(mRankName));
break;
}
}
}
}
rankAdapter.notifyDataSetChanged();
});
FirestoreDatabase.getInstance().getDb().collection(FirestoreDatabase.GROUPS_COLLECTION_DIR).whereEqualTo(FirestoreDatabase.FIELD_FIRE_DEPARTMENT_ID, userToEdit.getFire_department_id()).get().addOnSuccessListener(queryDocumentSnapshots -> {
try {
List<String> userGroups = userToEdit.getGroup_ids();
for (QueryDocumentSnapshot doc : queryDocumentSnapshots) {
GroupDataModel currentGroup = doc.toObject(GroupDataModel.class);
allGroups.add(currentGroup);
allGroupsStrings.add(currentGroup.getName());
if (userGroups.contains(currentGroup.getDocumentId())) {
userInGroupsNames.add(currentGroup.getName());
} else {
userNotInGroupsNames.add(currentGroup.getName());
}
}
addGroupAdapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, userNotInGroupsNames);
addGroupSpinner.setAdapter(addGroupAdapter);
removeGroupAdapter = new ArrayAdapter(getContext(), android.R.layout.simple_list_item_1, userInGroupsNames);
removeGroupSpinner.setAdapter(removeGroupAdapter);
} catch (Exception e) {
Log.e(TAG, "onCreateView: ", e);
}
});
binding.adminEditUserUpdateRankButton.setOnClickListener(v -> {
String selectedRankString = rankSpinner.getSelectedItem().toString();
for (RanksDataModel ranksDataModel : listOfRanks) {
if (ranksDataModel.getRank_name().equals(selectedRankString)) {
FirestoreDatabase.getInstance().getDb().collection(FirestoreDatabase.USERS_COLLECTION_DIR).document(userToEdit.getDocumentId()).update(FirestoreDatabase.FIELD_RANK_ID, ranksDataModel.getDocumentId()).addOnFailureListener(e -> Toast.makeText(getContext(), "onCreateView: Failed to update user", Toast.LENGTH_SHORT).show());
}
}
});
binding.adminEditUserAddGroupButton.setOnClickListener(v -> {
String selectedGroupToAdd = addGroupSpinner.getSelectedItem().toString();
for (GroupDataModel groupDataModel : allGroups) {
if (groupDataModel.getName().equals(selectedGroupToAdd)) {
FirestoreDatabase.getInstance().getDb().collection(FirestoreDatabase.USERS_COLLECTION_DIR).document(userToEdit.getDocumentId()).update("group_ids", FieldValue.arrayUnion(groupDataModel.getDocumentId())).addOnFailureListener(e -> Toast.makeText(getContext(), "onCreateView: Failed to update user", Toast.LENGTH_SHORT).show());
}
}
userInGroupsNames.add(selectedGroupToAdd);
userNotInGroupsNames.remove(selectedGroupToAdd);
addGroupAdapter.notifyDataSetChanged();
removeGroupAdapter.notifyDataSetChanged();
});
binding.adminEditUserRemoveGroupButton.setOnClickListener(v -> {
String selectedGroupToRemove = removeGroupSpinner.getSelectedItem().toString();
for (GroupDataModel groupDataModel : allGroups) {
if (groupDataModel.getName().equals(selectedGroupToRemove)) {
FirestoreDatabase.getInstance().getDb().collection(FirestoreDatabase.USERS_COLLECTION_DIR).document(userToEdit.getDocumentId()).update("group_ids", FieldValue.arrayRemove(groupDataModel.getDocumentId())).addOnFailureListener(e -> Toast.makeText(getContext(), "onCreateView: Failed to update user", Toast.LENGTH_SHORT).show());
}
}
userInGroupsNames.remove(selectedGroupToRemove);
userNotInGroupsNames.add(selectedGroupToRemove);
addGroupAdapter.notifyDataSetChanged();
removeGroupAdapter.notifyDataSetChanged();
});
return binding.getRoot();
}
use of com.example.first_responder_app.dataModels.RanksDataModel in project FirstResponse by mattpost1700.
the class EditRankFragment method populateRanks.
private void populateRanks() {
db.collection("ranks").whereEqualTo(FirestoreDatabase.FIELD_FIRE_DEPARTMENT_ID, activeUser.getFire_department_id()).get().addOnCompleteListener(ranksTask -> {
Log.d(TAG, "READ DATABASE - EDIT RANK FRAGMENT");
if (ranksTask.isSuccessful()) {
ArrayList<RanksDataModel> temp = new ArrayList<>();
for (QueryDocumentSnapshot ranksDoc : ranksTask.getResult()) {
RanksDataModel ranksDataModel = ranksDoc.toObject(RanksDataModel.class);
temp.add(ranksDataModel);
}
Log.d(TAG, "populateRankList: " + temp.size());
ranksList.clear();
ranksList.addAll(temp);
checkRanksListEmpty();
editRankRecyclerViewAdapter.notifyDataSetChanged();
} else {
Log.d(TAG, "db get failed in edit ranks page " + ranksTask.getException());
}
});
}
Aggregations