SHARE
TWEET

Untitled

a guest Sep 15th, 2019 113 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package me.parzibyte.sistemaventasspringboot;
  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.ui.Model;
  6. import org.springframework.validation.BindingResult;
  7. import org.springframework.web.bind.annotation.*;
  8. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  9.  
  10. import javax.validation.Valid;
  11.  
  12. @Controller
  13. @RequestMapping(path = "/productos")
  14. public class ProductosController {
  15.     @Autowired
  16.     private ProductosRepository productosRepository;
  17.  
  18.     @GetMapping(value = "/agregar")
  19.     public String agregarProducto(Model model) {
  20.         model.addAttribute("producto", new Producto());
  21.         return "productos/agregar_producto";
  22.     }
  23.  
  24.     @GetMapping(value = "/mostrar")
  25.     public String mostrarProductos(Model model) {
  26.         model.addAttribute("productos", productosRepository.findAll());
  27.         return "productos/ver_productos";
  28.     }
  29.  
  30.     @PostMapping(value = "/eliminar")
  31.     public String eliminarProducto(@ModelAttribute Producto producto, RedirectAttributes redirectAttrs) {
  32.         redirectAttrs
  33.                 .addFlashAttribute("mensaje", "Eliminado correctamente")
  34.                 .addFlashAttribute("clase", "warning");
  35.         productosRepository.deleteById(producto.getId());
  36.         return "redirect:/productos/mostrar";
  37.     }
  38.  
  39.     // Se colocó el parámetro ID para eso de los errores, ya sé el id se puede recuperar
  40.     // a través del modelo, pero lo que yo quiero es que se vea la misma URL para regresar la vista con
  41.     // los errores en lugar de hacer un redirect, ya que si hago un redirect, no se muestran los errores del formulario
  42.     // y por eso regreso mejor la vista ;)
  43.     @PostMapping(value = "/editar/{id}")
  44.     public String actualizarProducto(@ModelAttribute @Valid Producto producto, BindingResult bindingResult, RedirectAttributes redirectAttrs) {
  45.         if (bindingResult.hasErrors()) {
  46.             if (producto.getId() != null) {
  47.                 return "productos/editar_producto";
  48.             }
  49.             return "redirect:/productos/mostrar";
  50.         }
  51.         Producto posibleProductoExistente = productosRepository.findFirstByCodigo(producto.getCodigo());
  52.  
  53.         if (posibleProductoExistente != null && !posibleProductoExistente.getId().equals(producto.getId())) {
  54.             redirectAttrs
  55.                     .addFlashAttribute("mensaje", "Ya existe un producto con ese código")
  56.                     .addFlashAttribute("clase", "warning");
  57.             return "redirect:/productos/agregar";
  58.         }
  59.         productosRepository.save(producto);
  60.         redirectAttrs
  61.                 .addFlashAttribute("mensaje", "Editado correctamente")
  62.                 .addFlashAttribute("clase", "success");
  63.         return "redirect:/productos/mostrar";
  64.     }
  65.  
  66.     @GetMapping(value = "/editar/{id}")
  67.     public String mostrarFormularioEditar(@PathVariable int id, Model model) {
  68.         model.addAttribute("producto", productosRepository.findById(id).orElse(null));
  69.         return "productos/editar_producto";
  70.     }
  71.  
  72.     @PostMapping(value = "/agregar")
  73.     public String guardarProducto(@ModelAttribute @Valid Producto producto, BindingResult bindingResult, RedirectAttributes redirectAttrs) {
  74.         if (bindingResult.hasErrors()) {
  75.             return "productos/agregar_producto";
  76.         }
  77.         if (productosRepository.findFirstByCodigo(producto.getCodigo()) != null) {
  78.             redirectAttrs
  79.                     .addFlashAttribute("mensaje", "Ya existe un producto con ese código")
  80.                     .addFlashAttribute("clase", "warning");
  81.             return "redirect:/productos/agregar";
  82.         }
  83.         productosRepository.save(producto);
  84.         redirectAttrs
  85.                 .addFlashAttribute("mensaje", "Agregado correctamente")
  86.                 .addFlashAttribute("clase", "success");
  87.         return "redirect:/productos/agregar";
  88.     }
  89. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top