Search in sources :

Example 1 with EventRecyclerViewAdapter

use of com.example.first_responder_app.recyclerViews.EventRecyclerViewAdapter in project FirstResponse by mattpost1700.

the class EventFragment method onCreateView.

@SuppressLint("SetTextI18n")
@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_event, container, false);
    NavHostFragment navHostFragment = (NavHostFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
    NavController navController = navHostFragment.getNavController();
    // initialize vars as well as fetching userID
    participants = new ArrayList<>();
    ActiveUser activeUser = (ActiveUser) getActivity();
    UsersDataModel user = activeUser.getActive();
    userID = user.getDocumentId();
    // getting data from event group
    mViewModel = new ViewModelProvider(requireActivity()).get(EventViewModel.class);
    eventInfo = mViewModel.getEventDetail();
    isParticipating = eventInfo.getParticipants().contains(user.getDocumentId());
    EventRecyclerViewAdapter.ItemClickListener listener = (view, pos) -> {
        UsersDataModel u = participants.get(pos);
        UserViewModel userViewModel = new ViewModelProvider(requireActivity()).get(UserViewModel.class);
        userViewModel.setUserDataModel(u);
        NavDirections action = EventFragmentDirections.actionEventFragmentToUserFragment();
        Navigation.findNavController(binding.getRoot()).navigate(action);
    };
    // recycler binding
    RecyclerView eventRecyclerView = binding.eventEventRecycler;
    eventRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    eventRecyclerViewAdapter = new EventRecyclerViewAdapter(getContext(), participants, isAnyParticipants);
    eventRecyclerViewAdapter.setClickListener(listener);
    eventRecyclerView.setAdapter(eventRecyclerViewAdapter);
    updateUI(false);
    final SwipeRefreshLayout pullToRefresh = binding.eventRefreshLayout;
    pullToRefresh.setOnRefreshListener(() -> {
        participants.clear();
        updateUI(true);
        pullToRefresh.setRefreshing(false);
    });
    addParticipatingEventListener();
    binding.signUp.setOnClickListener(v -> {
        if (binding.signUp.getText().equals("Withdraw")) {
            eventInfo.getParticipants().remove(userID);
            db.collection(FirestoreDatabase.EVENTS_COLLECTION_DIR).document(eventInfo.getDocumentId()).set(eventInfo).addOnSuccessListener(documentReference -> {
                isParticipating = false;
                binding.signUp.setText("Sign Up");
            }).addOnFailureListener(e -> Log.w(TAG, "onCreateView: Could not update event UI", e));
        } else {
            eventInfo.getParticipants().add(userID);
            db.collection(FirestoreDatabase.EVENTS_COLLECTION_DIR).document(eventInfo.getDocumentId()).set(eventInfo).addOnSuccessListener(documentReference -> {
                isParticipating = true;
                binding.signUp.setText("Withdraw");
            }).addOnFailureListener(e -> Log.w(TAG, "onCreateView: Could not update event UI", e));
            // sends the event that includes the following:
            // title, location, description, duration
            Intent intent = new Intent(Intent.ACTION_INSERT);
            intent.setData(CalendarContract.Events.CONTENT_URI);
            intent.putExtra(CalendarContract.Events.TITLE, eventInfo.getTitle());
            intent.putExtra(CalendarContract.Events.EVENT_LOCATION, eventInfo.getLocation());
            intent.putExtra(CalendarContract.Events.DESCRIPTION, eventInfo.getDescription());
            intent.putExtra(CalendarContract.Events.DURATION, eventInfo.getDuration_in_minutes());
            if (intent.resolveActivity(requireContext().getPackageManager()) != null) {
                startActivity(intent);
            } else {
                Log.d("EVENT INTENT: ", "Event setup Failed");
            }
        // // Calendar intent
        // Calendar cal = Calendar.getInstance();
        // Intent intent = new Intent(Intent.ACTION_EDIT);
        // long startTime = eventInfo.getEvent_time().toDate().toInstant().toEpochMilli();
        // intent.putExtra("beginTime", startTime);
        // //intent.putExtra("allDay", true);
        // intent.putExtra("endTime", startTime + AppUtil.numOfMinutesToMilliSeconds(eventInfo.getDuration_in_minutes()));
        // intent.putExtra("title", "A Test Event from android app");
        // startActivity(intent);
        }
    });
    return binding.getRoot();
}
Also used : Bundle(android.os.Bundle) PackageManager(android.content.pm.PackageManager) NonNull(androidx.annotation.NonNull) Date(java.util.Date) Uri(android.net.Uri) CalendarContract(android.provider.CalendarContract) NavController(androidx.navigation.NavController) EventsDataModel(com.example.first_responder_app.dataModels.EventsDataModel) ActiveUser(com.example.first_responder_app.interfaces.ActiveUser) Manifest(android.Manifest) FieldPath(com.google.firebase.firestore.FieldPath) ContentResolver(android.content.ContentResolver) Locale(java.util.Locale) Fragment(androidx.fragment.app.Fragment) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) Log(android.util.Log) NavHostFragment(androidx.navigation.fragment.NavHostFragment) DataBindingUtil(androidx.databinding.DataBindingUtil) Timestamp(com.google.firebase.Timestamp) NavDirections(androidx.navigation.NavDirections) AppUtil(com.example.first_responder_app.AppUtil) IncidentViewModel(com.example.first_responder_app.viewModels.IncidentViewModel) ViewGroup(android.view.ViewGroup) R(com.example.first_responder_app.R) Objects(java.util.Objects) List(java.util.List) Nullable(androidx.annotation.Nullable) ContentValues(android.content.ContentValues) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) EventViewModel(com.example.first_responder_app.viewModels.EventViewModel) SimpleDateFormat(java.text.SimpleDateFormat) Intent(android.content.Intent) FragmentEventBinding(com.example.first_responder_app.databinding.FragmentEventBinding) ArrayList(java.util.ArrayList) SuppressLint(android.annotation.SuppressLint) Calendar(java.util.Calendar) QueryDocumentSnapshot(com.google.firebase.firestore.QueryDocumentSnapshot) Toast(android.widget.Toast) ListenerRegistration(com.google.firebase.firestore.ListenerRegistration) TAG(android.content.ContentValues.TAG) EventRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.EventRecyclerViewAdapter) DocumentSnapshot(com.google.firebase.firestore.DocumentSnapshot) UsersDataModel(com.example.first_responder_app.dataModels.UsersDataModel) ViewModelProvider(androidx.lifecycle.ViewModelProvider) LayoutInflater(android.view.LayoutInflater) ActivityCompat(androidx.core.app.ActivityCompat) SwipeRefreshLayout(androidx.swiperefreshlayout.widget.SwipeRefreshLayout) User(com.google.firebase.firestore.auth.User) FirestoreDatabase(com.example.first_responder_app.FirestoreDatabase) UserViewModel(com.example.first_responder_app.viewModels.UserViewModel) FirebaseFirestore(com.google.firebase.firestore.FirebaseFirestore) Navigation(androidx.navigation.Navigation) UsersDataModel(com.example.first_responder_app.dataModels.UsersDataModel) NavController(androidx.navigation.NavController) Intent(android.content.Intent) EventRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.EventRecyclerViewAdapter) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) SwipeRefreshLayout(androidx.swiperefreshlayout.widget.SwipeRefreshLayout) NavDirections(androidx.navigation.NavDirections) EventViewModel(com.example.first_responder_app.viewModels.EventViewModel) UserViewModel(com.example.first_responder_app.viewModels.UserViewModel) ActiveUser(com.example.first_responder_app.interfaces.ActiveUser) RecyclerView(androidx.recyclerview.widget.RecyclerView) NavHostFragment(androidx.navigation.fragment.NavHostFragment) ViewModelProvider(androidx.lifecycle.ViewModelProvider) SuppressLint(android.annotation.SuppressLint)

Aggregations

Manifest (android.Manifest)1 SuppressLint (android.annotation.SuppressLint)1 ContentResolver (android.content.ContentResolver)1 ContentValues (android.content.ContentValues)1 TAG (android.content.ContentValues.TAG)1 Intent (android.content.Intent)1 PackageManager (android.content.pm.PackageManager)1 Uri (android.net.Uri)1 Bundle (android.os.Bundle)1 CalendarContract (android.provider.CalendarContract)1 Log (android.util.Log)1 LayoutInflater (android.view.LayoutInflater)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 Toast (android.widget.Toast)1 NonNull (androidx.annotation.NonNull)1 Nullable (androidx.annotation.Nullable)1 ActivityCompat (androidx.core.app.ActivityCompat)1 DataBindingUtil (androidx.databinding.DataBindingUtil)1 Fragment (androidx.fragment.app.Fragment)1