<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt” %>
<%@ taglib uri=“http://www.springframework.org/tags” prefix=“s”%>
<style type="text/css">
body{
padding-top: 60px;
}
</style>
Edição de Ecomendas
<div class="container">
<form action="${s:mvcUrl('EC#altera').build() }" method="get">
<input type="hidden" name="id" value="${produtos.id }"/>
<div class="form-group">
<label>Produto</label>
<input type="text" name="nome" class="form-control" value="${produtos.nome }"/>
</div>
<div class="form-group">
<label>Categoria</label>
<select name="categoria" class="form-control">
<c:forEach items="${categorias }" var="categoria">
<option value="${produtos.categoria }" >${categoria.categoria }</option>
</c:forEach>
</select>
</div>
<div class="form-group">
<label>Nº Pedido</label>
<input type="text" name="pedido" class="form-control" value="${produtos.pedido }">
</div>
<div class="form-group">
<label>Loja</label>
<select name="loja" class="form-control">
<option >${produtos.loja}</option>
<c:forEach items="${lojas }" var="loja">
<option>${loja.loja }</option>
</c:forEach>
</select>
</div>
<div class="form-group">
<label>Rastreio</label>
<input type="text" name="rastreio" class="form-control" value="${produtos.rastreio }">
</div>
<div class="form-group">
<label>Valor Pago</label>
<input type="number" min="1" step="any" name="valor" class="form-control" value="${produtos.valor}"/>
</div>
<div>
<label>Data da Compra</label>
<input type="text" name="dataPedido" class="form-control" value='<fmt:formatDate value="${produtos.dataPedido.time}" pattern="dd/MM/yyyy"/>'/>
</div>
<div>
<label>Data Limite</label>
<input type="text" name="dataLimite" class="form-control" value='<fmt:formatDate value="${produtos.dataLimite.time}" pattern="dd/MM/yyyy"/>'/>
</div>
<input type="hidden" name="status" class="form-control" value="${produtos.status }">
<br />
<input type="submit" class="btn btn-primary" value="Alterar"/>
</form>
</div>
package br.com.encomendas.models;
import java.math.BigDecimal;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Transient;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String nome;
private String categoria;
private String pedido;
private String loja;
private String rastreio;
private BigDecimal valor;
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataPedido;
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataLimite;
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataVenda;
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataRecebida;
private Status status;
private BigDecimal valorVenda;
public BigDecimal getValorVenda() {
return valorVenda;
}
public void setValorVenda(BigDecimal valorVenda) {
this.valorVenda = valorVenda;
}
@Transient
private boolean atrasado;
public Produto() {
// TODO Auto-generated constructor stub
}
public String getLoja() {
return loja;
}
public void setLoja(String loja) {
this.loja = loja;
}
public Calendar getDataLimite() {
return dataLimite;
}
public void setDataLimite(Calendar dataLimite) {
this.dataLimite = dataLimite;
}
public Calendar getDataPedido() {
return dataPedido;
}
public void setDataPedido(Calendar dataPedido) {
this.dataPedido = dataPedido;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCategoria() {
return categoria;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getPedido() {
return pedido;
}
public void setPedido(String pedido) {
this.pedido = pedido;
}
public String getRastreio() {
return rastreio;
}
public void setRastreio(String rastreio) {
this.rastreio = rastreio;
}
public BigDecimal getValor() {
return valor;
}
public void setValor(BigDecimal valor) {
this.valor = valor;
}
public Calendar getDataVenda() {
return dataVenda;
}
public void setDataVenda(Calendar dataVenda) {
this.dataVenda = dataVenda;
}
public Calendar getDataRecebida() {
return dataRecebida;
}
public void setDataRecebida(Calendar dataRecebida) {
this.dataRecebida = dataRecebida;
}
@Override
public String toString() {
return "Produtos [nome=" + nome + ", Categoria=" + categoria + ", pedido=" + pedido + ", loja=" + loja
+ ", rastreio=" + rastreio + ", valor=" + valor + "]";
}
public boolean isAtrasado() {
if(dataLimite.before(Calendar.getInstance()))
atrasado = true;
else {
atrasado = false;
}
return atrasado;
}
public void setAtrasado(boolean atrasado) {
this.atrasado = atrasado;
}
}
package br.com.encomendas.models;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Loja {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String loja;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLoja() {
return loja;
}
public void setLoja(String loja) {
this.loja = loja;
}
}
package br.com.encomendas.controller;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import br.com.encomendas.dao.CategoriaDAO;
import br.com.encomendas.dao.LojaDAO;
import br.com.encomendas.dao.ProdutoDAO;
import br.com.encomendas.models.Categoria;
import br.com.encomendas.models.Loja;
import br.com.encomendas.models.Produto;
import br.com.encomendas.models.Status;
@Controller
public class EncomendasController {
@Autowired
private ProdutoDAO dao;
@Autowired
private LojaDAO lojaDAO;
@Autowired
private CategoriaDAO categoriaDao;
@RequestMapping("/")
public String index(){
return "redirect:produtos";
}
@RequestMapping("/produtos/form")
public ModelAndView encomendas(){
List<Loja> lojas = lojaDAO.listar();
List<Categoria> categorias = categoriaDao.listar();
ModelAndView modelAndView = new ModelAndView("produtos/form");
modelAndView.addObject("status", Status.TRANSPORTE);
modelAndView.addObject("lojas",lojas);
modelAndView.addObject("categorias",categorias);
return modelAndView ;
}
@RequestMapping(value="produtos", method=RequestMethod.POST)
public String gravar(Produto produto){
Date data = new Date();
Calendar dataAtual = Calendar.getInstance();
dataAtual.setTime(data);
dataAtual.set(Calendar.MONTH, dataAtual.get(Calendar.MONTH) + 1);
produto.setDataPedido(Calendar.getInstance());
produto.setDataLimite(dataAtual);
dao.gravar(produto);
return "redirect:produtos";
}
@RequestMapping(value="produtos",method=RequestMethod.GET)
public ModelAndView listar(){
Calendar calendar = new GregorianCalendar();
Date trialTime = new Date();
calendar.setTime(trialTime);
//ValidaData data = new ValidaData();
List<Produto> produtos = dao.listar();
ModelAndView modelAndView = new ModelAndView("/produtos/lista");
modelAndView.addObject("produtos", produtos);
modelAndView.addObject("form",getTotal());
return modelAndView;
}
@RequestMapping("editaEncomendas")
public ModelAndView editar(Integer id){
List<Loja> lojas = lojaDAO.listar();
List<Categoria> categorias = categoriaDao.listar();
ModelAndView modelAndView = new ModelAndView("/produtos/editar");
Produto produto = dao.mostra(id);
modelAndView.addObject("produtos", produto);
modelAndView.addObject("lojas",lojas);
modelAndView.addObject("categorias",categorias);
return modelAndView;
}
@RequestMapping("editaEncomendasFinalizadas")
public ModelAndView editarFinalizados(Integer id){
List<Loja> lojas = lojaDAO.listar();
List<Categoria> categorias = categoriaDao.listar();
ModelAndView modelAndView = new ModelAndView("/produtos/editarFinalizado");
Produto produto = dao.mostra(id);
modelAndView.addObject("produtos", produto);
modelAndView.addObject("lojas",lojas);
modelAndView.addObject("categorias",categorias);
return modelAndView;
}
@RequestMapping("encomendaRecebida")
public ModelAndView recebido(Integer id){
ModelAndView modelAndView = new ModelAndView("redirect:produtos");
Produto produto = dao.mostra(id);
produto.setDataRecebida(Calendar.getInstance());
produto.setStatus(Status.RECEBIDO);
dao.merge(produto);
return modelAndView;
}
@RequestMapping("encomendaFinalizada")
public ModelAndView finalizada(Integer id, BigDecimal valor){
ModelAndView modelAndView = new ModelAndView("redirect:produtos");
Produto produto = dao.mostra(id);
System.out.println(valor);
produto.setDataVenda(Calendar.getInstance());
produto.setStatus(Status.FINALIZADA);
dao.merge(produto);
return modelAndView;
}
@RequestMapping(value="produtos/finalizado",method=RequestMethod.GET)
public ModelAndView listaFinalizados(){
List<Produto> produtos = dao.finalizados();
ModelAndView modelAndView = new ModelAndView("/produtos/finalizado");
modelAndView.addObject("produtos", produtos);
modelAndView.addObject("pago", getTotalPagoFinalizados());
modelAndView.addObject("venda", dao.somaValorVenda());
modelAndView.addObject("lucro", dao.lucro());
return modelAndView;
}
@RequestMapping("alteraEncomenda")
public ModelAndView altera(Produto produto){
ModelAndView modelAndView = new ModelAndView("redirect:produtos");
dao.merge(produto);
return modelAndView;
}
@RequestMapping("alteraEncomendaFinalizada")
public ModelAndView alteraFinalizados(Produto produto){
ModelAndView modelAndView = new ModelAndView("redirect:produtos/finalizado");
dao.merge(produto);
return modelAndView;
}
@RequestMapping("excluiEncomenda")
public ModelAndView excluir(Integer id){
ModelAndView modelAndView = new ModelAndView("redirect:produtos");
dao.exclui(id);
return modelAndView;
}
public BigDecimal getTotal(){
List<Produto> valores = dao.listar();
return valores.stream().map(Produto::getValor).reduce(BigDecimal.ZERO, BigDecimal::add);
}
public BigDecimal getTotalPagoFinalizados(){
List<Produto> valores = dao.finalizados();
return valores.stream().map(Produto::getValor).reduce(BigDecimal.ZERO, BigDecimal::add);
}
}