46 private RecyclerView recyclerView;
48 private List<Carrito> carritoList;
49 private int precioTotal;
54 public View
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
55 View view = inflater.inflate(R.layout.fragment_cart, container,
false);
56 recyclerView = view.findViewById(R.id.recyclerview_carrito);
57 recyclerView.setLayoutManager(
new LinearLayoutManager(getContext()));
58 tvTotal = view.findViewById(R.id.text_total_precio);
59 btnConfirmar = view.findViewById(R.id.button_confirmar_pedido);
61 btnConfirmar.setOnClickListener(
new View.OnClickListener() {
63 public void onClick(View view) {
68 carritoList =
new ArrayList<>();
72 public void onDeleteClick(
Carrito carrito) {
74 Toast.makeText(getContext(),
"Producto borrado del carrito", Toast.LENGTH_SHORT).show();
78 public void onAddClick(Carrito carrito) {
79 int cantidad = carrito.getCantidad() + 1;
81 actualizarCantidad(carrito.getIdCarrito(), cantidad);
82 Toast.makeText(getContext(),
"Producto actualizado con éxito", Toast.LENGTH_SHORT).show();
86 public void onMinusClick(Carrito carrito) {
87 int cantidad = carrito.getCantidad() - 1;
91 actualizarCantidad(carrito.getIdCarrito(), cantidad);
92 Toast.makeText(getContext(),
"Producto actualizado con éxito", Toast.LENGTH_SHORT).show();
96 adapter =
new CarritoAdapter(carritoList, carritoListener);
100 recyclerView.setAdapter(adapter);
106 private void cargarCarritos() {
107 String url =
"https://backmobile1.onrender.com/appCART/ver/";
110 String token = sessionManager.getToken();
111 Log.d(
"AuthToken",
"Token usado en la solicitud: " + token);
114 StringRequest stringRequest =
new StringRequest(Request.Method.GET, url,
115 new Response.Listener<String>() {
117 public void onResponse(String response) {
120 JSONArray jsonArray = new JSONArray(response);
123 for (int i = 0; i < jsonArray.length(); i++) {
124 JSONObject jsonObject = jsonArray.getJSONObject(i);
127 int id_carrito = jsonObject.getInt(
"id");
128 String nombre_producto = jsonObject.getString(
"producto");
129 int cantidad = jsonObject.getInt(
"cantidad");
130 double precio = jsonObject.getDouble(
"precio");
131 String imagenUrl = jsonObject.getString(
"imageURL");
133 precioTotal += cantidad * precio;
136 Carrito carrito = new Carrito(id_carrito, nombre_producto, cantidad, precio, imagenUrl);
137 carritoList.add(carrito);
141 if (carritoList.isEmpty()) {
142 tvTotal.setVisibility(View.GONE);
143 btnConfirmar.setEnabled(false);
144 btnConfirmar.setVisibility(View.GONE);
145 rediretToEmptyCart();
147 tvTotal.setVisibility(View.VISIBLE);
150 tvTotal.setText(
"Total: $" + precioTotal);
154 adapter.notifyDataSetChanged();
156 } catch (JSONException e) {
158 Log.e(
"CarritoFragment",
"Error al parsear el JSON: " + e.getMessage());
161 },
new Response.ErrorListener() {
163 public void onErrorResponse(VolleyError error) {
164 Log.e(
"CarritoFragment",
"Error en la solicitud: " + error.getMessage());
165 Toast.makeText(getContext(),
"Error al cargar carritos", Toast.LENGTH_SHORT).show();
169 public Map<String, String> getHeaders() {
170 Map<String, String> headers =
new HashMap<>();
171 headers.put(
"Authorization",
"Bearer " + token);
172 Log.d(
"HeadersDebug",
"Headers: " + headers);
177 Volley.newRequestQueue(getContext()).add(stringRequest);
180 Toast.makeText(getContext(),
"Debes iniciar sesión para agregar productos al carrito", Toast.LENGTH_SHORT).show();
188 private void borrardelCarrito(
int idProducto) {
189 String url =
"https://backmobile1.onrender.com/appCART/eliminar/" + idProducto +
"/";
191 SessionManager sessionManager =
new SessionManager(getContext());
192 String token = sessionManager.getToken();
193 Log.d(
"AuthToken",
"Token usado en la solicitud: " + token);
196 StringRequest stringRequest =
new StringRequest(Request.Method.DELETE, url,
199 Toast.makeText(getContext(),
"Carrito borrado de la base de datos", Toast.LENGTH_SHORT).show();
204 Log.e(
"CartFragment",
"Error al borrar carrito: " + error.getMessage());
205 if (error.networkResponse != null) {
206 Log.e(
"CartFragment",
"Código de respuesta: " + error.networkResponse.statusCode);
208 Toast.makeText(getContext(),
"Error al borrar carrito", Toast.LENGTH_SHORT).show();
211 public Map<String, String> getHeaders() {
212 Map<String, String> headers =
new HashMap<>();
213 headers.put(
"Authorization",
"Bearer " + token);
214 Log.d(
"HeadersDebug",
"Headers: " + headers);
219 protected Map<String, String> getParams() {
220 Map<String, String> params =
new HashMap<>();
226 Volley.newRequestQueue(getContext()).add(stringRequest);
229 Toast.makeText(getContext(),
"Debes iniciar sesión para agregar productos al carrito", Toast.LENGTH_SHORT).show();
233 private void actualizarCantidad(
int idProducto,
int cantidad) {
234 String url =
"https://backmobile1.onrender.com/appCART/modificar_cantidad/" + idProducto +
"/";
236 SessionManager sessionManager =
new SessionManager(getContext());
237 String token = sessionManager.getToken();
238 Log.d(
"AuthToken",
"Token usado en la solicitud: " + token);
241 JSONObject requestBody =
new JSONObject();
243 requestBody.put(
"cantidad", cantidad);
244 }
catch (JSONException e) {
250 JsonObjectRequest request =
new JsonObjectRequest(Request.Method.PUT, url, requestBody,
251 new Response.Listener<JSONObject>() {
253 public void onResponse(JSONObject response) {
254 Toast.makeText(getContext(),
"update successful", Toast.LENGTH_SHORT).show();
258 },
new Response.ErrorListener() {
260 public void onErrorResponse(VolleyError error) {
261 Toast.makeText(getContext(),
"Update failed", Toast.LENGTH_SHORT).show();
265 public Map<String, String> getHeaders() {
266 Map<String, String> headers =
new HashMap<>();
267 headers.put(
"Authorization",
"Bearer " + token);
268 Log.d(
"HeadersDebug",
"Headers: " + headers);
273 protected Map<String, String> getParams() {
274 Map<String, String> params =
new HashMap<>();
280 RequestQueue queue = Volley.newRequestQueue(requireContext());
284 Toast.makeText(getContext(),
"Debes iniciar sesión para agregar productos al carrito", Toast.LENGTH_SHORT).show();
286 }
private void rediretToCheckout() {
287 FragmentManager fragmentManager = requireActivity().getSupportFragmentManager();
288 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
290 DatosEntregaFragment datosEntregaFragment = DatosEntregaFragment.newInstance(precioTotal);
291 fragmentTransaction.replace(R.id.fragment_container_view, datosEntregaFragment);
292 fragmentTransaction.addToBackStack(
null);
293 fragmentTransaction.commit();
294 }
private void rediretToEmptyCart() {
295 FragmentManager fragmentManager = requireActivity().getSupportFragmentManager();
296 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
297 fragmentTransaction.replace(R.id.fragment_container_view,
new EmptyCartFragment());
298 fragmentTransaction.addToBackStack(
null);
299 fragmentTransaction.commit();