@RequestMapping("/freteConfirmado/{idPedido}")
  public ModelAndView freteConfirmado(@PathVariable Long idPedido) {
    Pedido pedido = pedidoService.get(idPedido);
    pedido.setFreteConfirmar(false);

    pedidoService.salvar(pedido);
    return lista();
  }
 @RequestMapping("/aprovarArte/{idPedido}")
 public ModelAndView aprovarArte(@PathVariable Long idPedido) {
   Pedido pedido = pedidoService.get(idPedido);
   pedido.setArteAprovada(true);
   pedido.setDataAprovacaoArte((new DateTime()).toDate());
   pedidoService.salvar(pedido);
   return listaAguardandoAprovacao();
 }
  @RequestMapping("/fretePago/{idPedido}")
  public ModelAndView fretePago(@PathVariable Long idPedido) {
    Pedido pedido = pedidoService.get(idPedido);
    pedido.setFretePago(true);
    if (pedido.isFreteConfirmar()) {
      pedido.setDataPagamentoFrete(pedido.getDataPagamentoPedido());
    } else {
      pedido.setDataPagamentoFrete((new DateTime()).toDate());
    }
    pedido.setFreteConfirmar(false);

    pedidoService.salvar(pedido);
    return lista();
  }
  @RequestMapping("/etiqueta/imprimir")
  public ModelAndView imprimirEtiqueta(@RequestParam(value = "chkPedidos") long[] chkPedidosIds) {
    logger.info("===> imprimirEtiqueta");
    List<Pedido> listPedidos = new ArrayList<>();
    for (long pedidoId : chkPedidosIds) {
      Pedido pedido = pedidoService.get(pedidoId);
      pedido.setEntregue(true);
      pedido.setDataPostagem((new DateTime()).toDate());
      pedidoService.salvar(pedido);
      listPedidos.add(pedido);
    }

    return new ModelAndView("pdfEtiquetaView", "listPedidos", listPedidos);
  }
 @RequestMapping("/enviarStatus/{idPedido}")
 public ModelAndView enviarStatus(@PathVariable Long idPedido)
     throws GeneralSecurityException, IOException, MessagingException {
   logger.info("===> enviarStatus");
   pedidoService.enviarStatus(idPedido);
   return lista();
 }
 @RequestMapping("/listaPedidoEtiqueta")
 public ModelAndView listaPedidoEtiqueta() {
   List<Pedido> listPedidos = pedidoService.getListaPedidoEtiqueta();
   ModelAndView modelAndView =
       new ModelAndView("pedido/listaPedidoEtiqueta", "listPedidos", listPedidos);
   modelAndView.addObject("listPedidoEtiqueta", new ArrayList<Pedido>());
   return modelAndView;
 }
  @RequestMapping(value = "/gravar", method = RequestMethod.POST)
  public ModelAndView gravarPedido(@ModelAttribute Pedido pedido, BindingResult result) {

    String cep = tratarCep(pedido.getCep());
    pedido.setCep(cep);

    pedidoService.salvar(pedido);

    return new ModelAndView("redirect:/pedido/lista");
  }
  @RequestMapping(
      value = "/importar/precadastro",
      method = RequestMethod.POST,
      consumes = MediaType.APPLICATION_JSON_VALUE)
  public @ResponseBody void importarPrecadastro(@RequestBody Pedido pedido) {

    logger.info("===> importarPrecadastro: " + pedido.toString());

    if (pedido.getDataPreCadastro() == null) {
      pedido.setDataPreCadastro(DateTime.now().toDate());
    }
    pedido.setPreCadastro(true);

    pedidoService.salvarPreCadastro(pedido);
  }
  @SuppressWarnings("unchecked")
  @RequestMapping("/importar/web")
  public ModelAndView importarWeb(String pedidoJson, String dataEnvio)
      throws JsonParseException, JsonMappingException, IOException, GeneralSecurityException,
          MessagingException {

    logger.info("===> importarWeb(" + dataEnvio + "): " + pedidoJson);

    ObjectMapper mapper = new ObjectMapper();
    Map<String, String> map = mapper.readValue(pedidoJson, Map.class);

    Pedido pedido = new Pedido();

    pedido.setNomeCliente(map.get("Nome completo"));
    pedido.setEmailMLFormulario(map.get("E-mail cadastrado no MercadoLivre"));
    pedido.setEmailAlternativo(map.get("E-mail alternativo"));
    pedido.setEndereco(map.get("Endereço"));
    pedido.setNumero(map.get("Número"));
    pedido.setComplemento(map.get("Complemento"));
    pedido.setBairro(map.get("Bairro"));
    pedido.setCidade(map.get("Cidade"));
    pedido.setUf(map.get("UF"));

    String cep = tratarCep(map.get("CEP"));
    pedido.setCep(cep);

    pedido.setFormaEnvio(FormaEnvio.getEnum(map.get("Forma de envio")));
    pedido.setItens(map.get("Quais foram os itens e a quantidade adquiridos?"));
    pedido.setTema(map.get("Qual é o tema a ser desenvolvido na arte?"));
    pedido.setCorPredominante(map.get("Qual é a cor predominante da sua arte?"));
    pedido.setMensagem(map.get("Qual a mensagem ou nome a ser personalizado?"));
    pedido.setPossuiFoto("Sim".equalsIgnoreCase(map.get("Deseja colocar alguma fotografia?")));
    pedido.setTelefone(map.get("Qual seu telefone fixo para contato?"));
    pedido.setDetalhes(map.get("Adicione mais detalhes de como você quer a sua personalização"));
    pedido.setUsuarioML(map.get("Usuário ML (não altere este campo)"));

    DateTimeFormatter formatDataEvento = DateTimeFormat.forPattern("YYYYY-MM-dd");
    DateTime dataEvento = formatDataEvento.parseDateTime(map.get("Qual a data do evento?"));
    pedido.setDataEvento(dataEvento.toDate());

    DateTimeFormatter formatDataEnvio = DateTimeFormat.forPattern("dd/MM/YYYY");
    DateTime dataEnvioFormulario = formatDataEnvio.parseDateTime(dataEnvio);
    pedido.setDataEnvioFormulario(dataEnvioFormulario.toDate());

    pedidoService.salvarFormulario(pedido);

    return new ModelAndView("redirect:/pedido/edit/" + pedido.getId());
  }
  @RequestMapping(
      value = "/importar/formulario",
      method = RequestMethod.POST,
      consumes = MediaType.APPLICATION_JSON_VALUE)
  public @ResponseBody String importarFormulario(@RequestBody Pedido pedido)
      throws GeneralSecurityException, IOException, MessagingException {

    logger.info("===> importarFormulario: " + pedido.toString());

    if (pedido.getDataEnvioFormulario() == null) {
      pedido.setDataEnvioFormulario(DateTime.now().toDate());
    }

    String cep = tratarCep(pedido.getCep());
    pedido.setCep(cep);

    pedidoService.salvarFormulario(pedido);
    return pedido.getDataEvento().toString();
  }
 @RequestMapping("/listaPostagemPendente")
 public ModelAndView listaPostagemPendente() {
   List<Pedido> listPedidos = pedidoService.getPostagemPendente();
   return new ModelAndView("pedido/listaPostagemPendente", "listPedidos", listPedidos);
 }
 @RequestMapping("/pesquisar")
 public ModelAndView pesquisarPedido(String chavePesquisa) {
   List<Pedido> listPedidos = pedidoService.pesquisarPedidos(chavePesquisa.trim());
   return new ModelAndView("pedido/lista", "listPedidos", listPedidos);
 }
 @RequestMapping("/solicitarFormularioTodos")
 public ModelAndView solicitarformularioTodos()
     throws GeneralSecurityException, IOException, MessagingException {
   pedidoService.solicitarFormularioPreCadastro();
   return listaPreCadastro();
 }
 @RequestMapping("/solicitarFormulario/{idPedido}")
 public ModelAndView solicitarformulario(@PathVariable Long idPedido)
     throws GeneralSecurityException, IOException, MessagingException {
   pedidoService.solicitarFormulario(idPedido);
   return listaPreCadastro();
 }
 @RequestMapping("/listaPreCadastro")
 public ModelAndView listaPreCadastro() {
   List<Pedido> listPedidos = pedidoService.getPreCadastro();
   return new ModelAndView("pedido/listaPreCadastro", "listPedidos", listPedidos);
 }
 @RequestMapping("/lista")
 public ModelAndView lista() {
   logger.info("===> lista");
   List<Pedido> listPedidos = pedidoService.getAbertos();
   return new ModelAndView("pedido/lista", "listPedidos", listPedidos);
 }
 @RequestMapping("/edit/{idPedido}")
 public ModelAndView edit(@PathVariable Long idPedido) {
   Pedido pedido = pedidoService.get(idPedido);
   return new ModelAndView("pedido/pedido", "pedido", pedido);
 }
 @RequestMapping("/listaEntreguesCancelados")
 public ModelAndView listaEntreguesCancelados() {
   List<Pedido> listPedidos = pedidoService.getEntreguesCancelados();
   return new ModelAndView("pedido/listaEntreguesCancelados", "listPedidos", listPedidos);
 }
 @RequestMapping("/listaAguardandoAprovacao")
 public ModelAndView listaAguardandoAprovacao() {
   List<Pedido> listPedidos = pedidoService.getAguardandoAprovacao();
   return new ModelAndView("pedido/listaAguardandoAprovacao", "listPedidos", listPedidos);
 }