Tesis 1.0.0
Loading...
Searching...
No Matches
EditProfileFragment.java
Go to the documentation of this file.
1package com.example.food_front;
2
3import android.os.Bundle;
4import androidx.fragment.app.Fragment;
5import androidx.fragment.app.FragmentManager;
6
7import android.view.LayoutInflater;
8import android.view.View;
9import android.view.ViewGroup;
10import android.widget.Button;
11import android.widget.ImageView;
12import android.widget.TextView;
13import android.widget.Toast;
14
15import com.android.volley.Request;
16import com.android.volley.RequestQueue;
17import com.android.volley.Response;
18import com.android.volley.VolleyError;
19import com.android.volley.toolbox.JsonObjectRequest;
20import com.android.volley.toolbox.Volley;
21import com.example.food_front.utils.ProfileManager;
22import com.example.food_front.utils.SessionManager;
23
24import org.json.JSONException;
25import org.json.JSONObject;
26
27import java.util.HashMap;
28import java.util.Map;
29
30public class EditProfileFragment extends Fragment {
31
32 private TextView tvNombre, tvLastname, tvEmail, tvPhone;
33 private ProfileManager profileManager;
34 private SessionManager sessionManager;
35 private Button btnSaveChanges;
36
38 // Required empty public constructor
39 }
40
41 @Override
42 public View onCreateView(LayoutInflater inflater, ViewGroup container,
43 Bundle savedInstanceState) {
44
45 // Inflar el layout para este fragmento
46 View view = inflater.inflate(R.layout.fragment_edit_profile, container, false);
47
48 // Inicializar las vistas
49 tvNombre = view.findViewById(R.id.edit_name);
50 tvLastname = view.findViewById(R.id.edit_lastname);
51 tvEmail = view.findViewById(R.id.edit_email);
52 tvPhone = view.findViewById(R.id.edit_phone);
53 btnSaveChanges = view.findViewById(R.id.btn_save_changes);
54
55 profileManager = new ProfileManager(requireContext());
56 sessionManager = new SessionManager(requireContext());
57
58 // Llamar al backend para obtener los datos del perfil
59 displayUserProfile();
60
61 // Listener para el botón de guardar cambios
62 btnSaveChanges.setOnClickListener(new View.OnClickListener() {
63 @Override
64 public void onClick(View v) {
65 updateProfile(); // Método para enviar los cambios al backend
66 }
67 });
68
69 // Encontrar la flecha de regreso
70 ImageView backArrow = view.findViewById(R.id.back_arrow);
71 // Agregar un listener para cuando se haga clic en la flecha
72 backArrow.setOnClickListener(new View.OnClickListener() {
73 @Override
74 public void onClick(View v) {
75 // Al hacer clic en la flecha, volver al fragmento anterior
76 FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
77 fragmentManager.popBackStack(); // Regresar al fragmento anterior
78 }
79 });
80 return view;
81 }
82
83 private void displayUserProfile() {
84 // Usar los métodos específicos para obtener los datos
85 String name = profileManager.getName();
86 String surname = profileManager.getSurname();
87 String email = profileManager.getEmail();
88 String phone = profileManager.getPhone();
89
90 // Mostrar los datos en los TextViews
91 tvNombre.setText(name);
92 tvLastname.setText(surname);
93 tvEmail.setText(email);
94 tvPhone.setText(phone);
95 }
96
97 private void updateProfile() {
98 // Obtener los datos editados
99 final String updatedName = tvNombre.getText().toString().trim();
100 final String updatedSurname = tvLastname.getText().toString().trim();
101 final String updatedEmail = tvEmail.getText().toString().trim();
102 final String updatedPhone = tvPhone.getText().toString().trim();
103
104 // Validar que no estén vacíos
105 if (updatedName.isEmpty() || updatedSurname.isEmpty() || updatedEmail.isEmpty() || updatedPhone.isEmpty()) {
106 Toast.makeText(getContext(), "Por favor complete todos los campos", Toast.LENGTH_SHORT).show();
107 return;
108 }
109
110 String url = " https://backmobile1.onrender.com/appUSERS/update/";
111
112 // Crear el JSON que se enviará en el body
113 JSONObject requestBody = new JSONObject();
114 try {
115 requestBody.put("nombre", updatedName);
116 requestBody.put("apellido", updatedSurname);
117 requestBody.put("email", updatedEmail);
118 requestBody.put("telefono", updatedPhone);
119 } catch (JSONException e) {
120 e.printStackTrace();
121 return;
122 }
123
124 // Crear la request de Volley
125 JsonObjectRequest request = new JsonObjectRequest(Request.Method.PUT, url, requestBody,
126 new Response.Listener<JSONObject>() {
127 @Override
128 public void onResponse(JSONObject response) {
129 // Guardar los datos actualizados en ProfileManager
130 profileManager.saveInfo(updatedName, updatedSurname, updatedEmail, updatedPhone);
131 Toast.makeText(getContext(), "Perfil actualizado correctamente", Toast.LENGTH_SHORT).show();
132
133 // Volver al fragmento anterior
134 FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
135 fragmentManager.popBackStack();
136 }
137 }, new Response.ErrorListener() {
138 @Override
139 public void onErrorResponse(VolleyError error) {
140 Toast.makeText(getContext(), "Error al actualizar el perfil", Toast.LENGTH_SHORT).show();
141 }
142 }) {
143 @Override
144 public Map<String, String> getHeaders() {
145 Map<String, String> headers = new HashMap<>();
146 headers.put("Authorization", "Bearer " + sessionManager.getToken()); // Agregar el token
147 return headers;
148 }
149 };
150
151 // Agregar la request a la cola de Volley
152 RequestQueue queue = Volley.newRequestQueue(requireContext());
153 queue.add(request);
154 }
155}
View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)