com.ar.dev.tierra.api.controller.ProductoController.java Source code

Java tutorial

Introduction

Here is the source code for com.ar.dev.tierra.api.controller.ProductoController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ar.dev.tierra.api.controller;

import com.ar.dev.tierra.api.model.JsonResponse;
import com.ar.dev.tierra.api.model.Producto;
import com.ar.dev.tierra.api.model.StockTierra;
import com.ar.dev.tierra.api.model.Usuarios;
import com.ar.dev.tierra.api.model.StockBebelandia;
import com.ar.dev.tierra.api.model.StockLibertador;
import com.ar.dev.tierra.api.model.WrapperStock;
import com.ar.dev.tierra.api.resource.FacadeService;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 *
 * @author PauloGaldo
 */
@RestController
@RequestMapping("/producto")
public class ProductoController implements Serializable {

    @Autowired
    FacadeService facadeService;

    @RequestMapping(value = "/list", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> getAll() {
        List<Producto> list = facadeService.getProductoDAO().getAll();
        if (!list.isEmpty()) {
            return new ResponseEntity<>(list, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
        }
    }

    @RequestMapping(value = "/advanced", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> advanced(
            @RequestParam(value = "descripcion", required = false, defaultValue = "") String descripcion,
            @RequestParam(value = "marca", required = false, defaultValue = "") String marca,
            @RequestParam(value = "talla", required = false, defaultValue = "") String talla,
            @RequestParam(value = "codigo", required = false, defaultValue = "") String codigo,
            @RequestParam(value = "categoria", required = false, defaultValue = "") String categoria,
            @RequestParam(value = "page", required = false, defaultValue = "") Integer page,
            @RequestParam(value = "size", required = false, defaultValue = "") Integer size) {
        Page paged = facadeService.getProductoService().getByParams(descripcion, marca, talla, codigo, categoria,
                page, size);
        if (paged.getSize() != 0) {
            return new ResponseEntity<>(paged, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

    @RequestMapping(value = "/full", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> fullSearch(
            @RequestParam(value = "descripcion", required = false, defaultValue = "") String descripcion,
            @RequestParam(value = "marca", required = false, defaultValue = "") String marca,
            @RequestParam(value = "talla", required = false, defaultValue = "") String talla,
            @RequestParam(value = "codigo", required = false, defaultValue = "") String codigo,
            @RequestParam(value = "categoria", required = false, defaultValue = "") String categoria,
            @RequestParam(value = "temporada", required = false, defaultValue = "") String temporada,
            @RequestParam(value = "sexo", required = false, defaultValue = "") String sexo,
            @RequestParam(value = "clase", required = false, defaultValue = "") String clase,
            @RequestParam(value = "color", required = false, defaultValue = "") String color,
            @RequestParam(value = "proveedor", required = false, defaultValue = "") String proveedor,
            @RequestParam(value = "factura", required = false, defaultValue = "") String factura,
            @RequestParam(value = "page", required = false, defaultValue = "") Integer page,
            @RequestParam(value = "size", required = false, defaultValue = "") Integer size) {
        Page paged = facadeService.getProductoService().getByAllParams(descripcion, marca, talla, codigo, categoria,
                temporada, sexo, clase, color, proveedor, factura, page, size);
        if (paged.getSize() != 0) {
            return new ResponseEntity<>(paged, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

    @RequestMapping(value = "/paged", method = RequestMethod.GET)
    public ResponseEntity<?> getAllHotels(
            @RequestParam(value = "page", required = false, defaultValue = "0") Integer page,
            @RequestParam(value = "size", required = false, defaultValue = "10") Integer size,
            HttpServletRequest request, HttpServletResponse response) {
        Page paged = facadeService.getProductoService().getAllProdutos(page, size);
        if (paged.getSize() != 0) {
            return new ResponseEntity<>(paged, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public ResponseEntity<?> add(OAuth2Authentication authentication, @RequestBody Producto producto) {
        Usuarios user = facadeService.getUsuariosDAO().findUsuarioByUsername(authentication.getName());
        String descripcion = producto.getDescripcion();
        producto.setDescripcion(descripcion.toUpperCase());
        producto.setUsuarioCreacion(user.getIdUsuario());
        producto.setFechaCreacion(new Date());
        facadeService.getProductoDAO().add(producto);
        JsonResponse msg = new JsonResponse("Success", "Producto agregado con exito");
        return new ResponseEntity<>(msg, HttpStatus.OK);
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    public ResponseEntity<?> update(OAuth2Authentication authentication, @RequestBody Producto producto) {
        Usuarios user = facadeService.getUsuariosDAO().findUsuarioByUsername(authentication.getName());
        producto.setUsuarioModificacion(user.getIdUsuario());
        producto.setFechaModificacion(new Date());
        facadeService.getProductoDAO().update(producto);
        JsonResponse msg = new JsonResponse("Success", "Producto modificado con exito");
        return new ResponseEntity<>(msg, HttpStatus.OK);
    }

    @PreAuthorize("hasAnyAuthority('ROLE_ADMIN, ROLE_REPOSITOR')")
    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    public ResponseEntity<?> delete(OAuth2Authentication authentication, @RequestBody Producto producto) {
        Usuarios user = facadeService.getUsuariosDAO().findUsuarioByUsername(authentication.getName());
        producto.setEstadoProducto(false);
        producto.setUsuarioModificacion(user.getIdUsuario());
        producto.setFechaModificacion(new Date());
        facadeService.getProductoDAO().delete(producto);
        JsonResponse msg = new JsonResponse("Success", "Producto eliminado con exito");
        return new ResponseEntity<>(msg, HttpStatus.OK);
    }

    @RequestMapping(value = "/search", method = RequestMethod.POST)
    public ResponseEntity<?> findById(@RequestParam("id") int id) {
        Producto p = facadeService.getProductoDAO().findById(id);
        if (p == null || p.isEstadoProducto() == false) {
            JsonResponse jr = new JsonResponse("error", "No se encontro el producto");
            return new ResponseEntity<>(jr, HttpStatus.BAD_REQUEST);
        } else {
            return new ResponseEntity<>(p, HttpStatus.OK);
        }
    }

    @RequestMapping(value = "/searchText", method = RequestMethod.POST)
    public ResponseEntity<?> findByText(@RequestParam("text") String text) {
        List<Producto> productos = facadeService.getProductoDAO().findByText(text.toUpperCase());
        if (!productos.isEmpty()) {
            return new ResponseEntity<>(productos, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(productos, HttpStatus.BAD_REQUEST);
        }
    }

    @RequestMapping(value = "/barcode", method = RequestMethod.POST)
    public ResponseEntity<?> findByBarcode(@RequestParam("barcode") String barcode) {
        List<Producto> list = facadeService.getProductoDAO().findByBarcode(barcode);
        if (!list.isEmpty()) {
            return new ResponseEntity<>(list, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(list, HttpStatus.BAD_REQUEST);
        }
    }

    @RequestMapping(value = "/stock", method = RequestMethod.POST)
    public ResponseEntity<?> findByBarcodeInStock(@RequestParam("barcode") String barcode,
            OAuth2Authentication authentication) {
        Usuarios user = facadeService.getUsuariosDAO().findUsuarioByUsername(authentication.getName());
        List<WrapperStock> list = facadeService.getStockDAO()
                .searchByBarcodeInStock(user.getUsuarioSucursal().getIdSucursal(), barcode);
        List<StockTierra> tierra = new ArrayList<>();
        List<StockBebelandia> bebelandia = new ArrayList<>();
        List<StockLibertador> libertador = new ArrayList<>();
        switch (user.getUsuarioSucursal().getIdSucursal()) {
        case 1:
            for (WrapperStock wrapperStock : list) {
                tierra.add(wrapperStock.getStockTierra());
            }
            break;
        case 2:
            for (WrapperStock wrapperStock : list) {
                bebelandia.add(wrapperStock.getStockBebelandia());
            }
            break;
        case 3:
            for (WrapperStock wrapperStock : list) {
                libertador.add(wrapperStock.getStockLibertador());
            }
            break;
        }
        if (tierra.isEmpty() && bebelandia.isEmpty()) {
            return new ResponseEntity<>(libertador, HttpStatus.OK);
        } else if (bebelandia.isEmpty() && libertador.isEmpty()) {
            return new ResponseEntity<>(tierra, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(bebelandia, HttpStatus.OK);
        }
    }

    @RequestMapping(value = "/list/factura", method = RequestMethod.POST)
    public ResponseEntity<?> findByIdFactura(@RequestParam("idFacturaProducto") int idFacturaProducto) {
        List<Producto> list = facadeService.getProductoDAO().findByIdFactura(idFacturaProducto);
        if (!list.isEmpty()) {
            return new ResponseEntity<>(list, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(list, HttpStatus.BAD_REQUEST);
        }
    }

    @RequestMapping(value = "/list/factura/paged", method = RequestMethod.GET)
    public ResponseEntity<?> findByIdFacturaPaged(@RequestParam("idFacturaProducto") int idFacturaProducto,
            @RequestParam(value = "page", required = false, defaultValue = "") Integer page,
            @RequestParam(value = "size", required = false, defaultValue = "") Integer size) {
        Page<Producto> paged = facadeService.getProductoService().findByFactura(page, size, idFacturaProducto);
        if (paged.getSize() != 0) {
            return new ResponseEntity<>(paged, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }

}