1package uo269509.favoritepath.ui;
3import android.os.Bundle;
4import android.os.Handler;
5import android.os.Looper;
6import android.view.LayoutInflater;
7import android.view.View;
8import android.view.ViewGroup;
9import android.widget.Toast;
11import androidx.fragment.app.Fragment;
12import androidx.recyclerview.widget.LinearLayoutManager;
13import androidx.recyclerview.widget.RecyclerView;
15import com.google.firebase.auth.FirebaseAuth;
16import com.google.firebase.firestore.DocumentReference;
17import com.google.firebase.firestore.DocumentSnapshot;
18import com.google.firebase.firestore.FieldValue;
19import com.google.firebase.firestore.FirebaseFirestore;
21import java.util.ArrayList;
22import java.util.HashMap;
24import java.util.concurrent.Executor;
25import java.util.concurrent.Executors;
27import uo269509.favoritepath.R;
28import uo269509.favoritepath.adapter.ListSolicitudesAdapter;
29import uo269509.favoritepath.modelos.Solicitud;
35 DocumentReference reference;
36 RecyclerView solicitudListView;
37 ArrayList<Solicitud> solicitudes =
new ArrayList<>();
46 public void onCreate(Bundle savedInstanceState) {
47 super.onCreate(savedInstanceState);
58 public View
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
59 View vista = inflater.inflate(R.layout.fragment_solicitudes, container,
false);
68 private void init(View vista){
69 mAuth = FirebaseAuth.getInstance();
70 db = FirebaseFirestore.getInstance();
71 reference = db.collection(
"usuarios").document(mAuth.getCurrentUser().getEmail());
72 solicitudListView = vista.findViewById(R.id.recyclerView);
79 private void aceptarSolicitud(Solicitud solicitud) {
80 if(solicitud.getRutaId() ==
null) {
82 Map<String, Object> camposSolicitudAmigo1 =
new HashMap<>();
83 camposSolicitudAmigo1.put(
"email", solicitud.getTitulo());
84 reference.collection(
"amigos").document(solicitud.getTitulo()).set(camposSolicitudAmigo1);
85 Map<String, Object> camposSolicitudAmigo2 =
new HashMap<>();
86 camposSolicitudAmigo2.put(
"email", mAuth.getCurrentUser().getEmail());
87 db.collection(
"usuarios").document(solicitud.getTitulo()).collection(
"amigos").document(mAuth.getCurrentUser().getEmail()).set(camposSolicitudAmigo2);
89 reference.collection(
"solicitudes").document(solicitud.getTitulo()).delete();
90 db.collection(
"usuarios").document(solicitud.getTitulo()).update(
"nombreSolicitudes", FieldValue.arrayRemove(mAuth.getCurrentUser().getEmail()));
92 Toast.makeText(this.getContext(),
"Solicitud aceptada",Toast.LENGTH_SHORT).show();
94 Map<String, Object> camposRuta =
new HashMap<>();
95 db.collection(
"usuarios").document(solicitud.getTitulo()).collection(
"colecciones").document(
"Rutas propias")
96 .collection(
"rutas").document(solicitud.getRutaId()).get()
97 .addOnSuccessListener(documentSnapshot -> {
98 if (documentSnapshot.exists()) {
99 camposRuta.put(
"titulo",documentSnapshot.getString(
"titulo"));
100 camposRuta.put(
"descripcion",documentSnapshot.getString(
"descripcion"));
101 camposRuta.put(
"publico",documentSnapshot.getBoolean(
"publico"));
102 camposRuta.put(
"circular",documentSnapshot.getBoolean(
"circular"));
103 camposRuta.put(
"imagenes",documentSnapshot.get(
"imagenes"));
104 camposRuta.put(
"puntos",documentSnapshot.get(
"puntos"));
105 reference.collection(
"colecciones").document(
"Rutas propias").collection(
"rutas").document(solicitud.getRutaId()).set(camposRuta);
106 reference.collection(
"solicitudes").document(solicitud.getRutaId()).delete();
107 updateSolicitudes(solicitud);
108 Toast.makeText(this.getContext(),
"Solicitud aceptada",Toast.LENGTH_SHORT).show();
110 updateSolicitudes(solicitud);
111 Toast.makeText(this.getContext(),
"El usuario ha eliminado ya esa ruta",Toast.LENGTH_SHORT).show();
121 private void borrarSolicitud(Solicitud solicitud) {
122 if(solicitud.getRutaId() ==
null) {
123 reference.collection(
"solicitudes").document(solicitud.getTitulo()).delete();
124 db.collection(
"usuarios").document(solicitud.getTitulo()).update(
"nombreSolicitudes", FieldValue.arrayRemove(mAuth.getCurrentUser().getEmail()));
126 reference.collection(
"solicitudes").document(solicitud.getRutaId()).delete();
129 Toast.makeText(this.getContext(),
"Solicitud eliminada",Toast.LENGTH_SHORT).show();
135 private void configureView() {
136 solicitudListView.setHasFixedSize(
true);
137 LinearLayoutManager layoutManager =
new LinearLayoutManager(getContext());
138 solicitudListView.setLayoutManager(layoutManager);
145 private void addAdapter(ArrayList<Solicitud> list) {
146 ListSolicitudesAdapter lsAdapter =
new ListSolicitudesAdapter(list, (solicitud, aceptar) -> {
148 aceptarSolicitud(solicitud);
150 borrarSolicitud(solicitud);
153 solicitudListView.setAdapter(lsAdapter);
159 private void cargarDatos() {
160 reference.collection(
"solicitudes").get().addOnSuccessListener(queryDocumentSnapshots -> {
161 for(DocumentSnapshot doc : queryDocumentSnapshots.getDocuments()){
162 solicitudes.add(
new Solicitud(doc.getString(
"email"), doc.getString(
"rutaId")));
172 solicitudes.remove(solicitud);
173 solicitudListView.getAdapter().notifyDataSetChanged();
181 final Executor EXECUTOR = Executors.newSingleThreadExecutor();
182 final Handler HANDLER =
new Handler(Looper.getMainLooper());
183 EXECUTOR.execute(() -> {
186 db.collection(
"usuarios").document(mAuth.getCurrentUser().getEmail()).get().addOnSuccessListener(
187 documentSnapshot -> {
188 if(documentSnapshot.exists()){
190 addAdapter(solicitudes);
View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
void onCreate(Bundle savedInstanceState)
void initializeSolicitudes()
void updateSolicitudes(Solicitud solicitud)