public IActionResult AprovarDevolucaoBoleto(int id, [FromForm] PedidoVisualizacaoViewModel viewModel)
        {
            ValidarFormulario("estornoBoleto");
            Pedido pedido = _pedidoRepository.ObterPedido(id);

            if (ModelState.IsValid)
            {
                if (pedido.Situacao != PedidoSituacaoConstant.DEVOLVER_ENTREGUE)
                {
                    return(new BadRequestResult());
                }
                pedido.Situacao = PedidoSituacaoConstant.DEVOLUCAO_ACEITA;

                if (_gerenciarPagarMe.EstornoBoleto(pedido.TransactionId, viewModel.estornoBoleto))
                {
                    _produtoRepository.DevolverEstoque(pedido);
                    _pedidoRepository.Atualizar(pedido);
                    SalvarPedidoSituacao(pedido, PedidoSituacaoConstant.DEVOLUCAO_ACEITA, viewModel.estornoBoleto);
                    SalvarPedidoSituacao(pedido, PedidoSituacaoConstant.DEVOLVER_ESTORNO);
                }
                else
                {
                    TempData["MSG_E"] = "Erro na comunicação com o servidor. Tente novamente";
                }
                return(RedirectToAction("Visualizar", "Pedido", new { area = "colaborador", id = id }));
            }
            ViewBag.MODAL_ID = "#modalBoletoDevolucao";
            viewModel.pedido = pedido;
            return(View("Visualizar", viewModel));
        }
        public IActionResult Visualizar(int id)
        {
            Pedido pedido = _pedidoRepository.ObterPedido(id);
            PedidoVisualizacaoViewModel viewModel = new PedidoVisualizacaoViewModel()
            {
                pedido = pedido
            };

            return(View(viewModel));
        }
        private void ValidarFormulario(string formulario, params string[] formulariosRemover)
        {
            var campos = new PedidoVisualizacaoViewModel().GetType().GetProperties();

            foreach (var campo in campos)
            {
                if (campo.Name != formulario)
                {
                    ModelState.Remove(campo.Name);
                }
            }
            foreach (string formularioRemover in formulariosRemover)
            {
                ModelState.Remove(formularioRemover);
            }
        }
        public IActionResult CodRastreamento(int id, [FromForm] PedidoVisualizacaoViewModel viewModel)
        {
            Pedido pedido = _pedidoRepository.ObterPedido(id);

            ValidarFormulario("CodRastreamento");
            if (ModelState.IsValid)
            {
                pedido.Situacao             = PedidoSituacaoConstant.EM_TRANSPORTE;
                pedido.FreteCodRastreamento = viewModel.CodRastreamento;

                _pedidoRepository.Atualizar(pedido);
                SalvarPedidoSituacao(pedido, PedidoSituacaoConstant.EM_TRANSPORTE);

                return(RedirectToAction("Visualizar", "Pedido", new { area = "colaborador", id = id }));
            }
            ViewBag.MODAL_ID = "#modalCodRastreamento";
            viewModel.pedido = pedido;
            return(View("Visualizar", viewModel));
        }
        public IActionResult NFE(int id, [FromForm] PedidoVisualizacaoViewModel viewModel)
        {
            Pedido pedido = _pedidoRepository.ObterPedido(id);

            ValidarFormulario("NFE");
            if (ModelState.IsValid)
            {
                pedido.Situacao = PedidoSituacaoConstant.NF_EMITIDA;
                pedido.NFE      = viewModel.NFE;

                _pedidoRepository.Atualizar(pedido);
                SalvarPedidoSituacao(pedido, PedidoSituacaoConstant.NF_EMITIDA);

                return(RedirectToAction("Visualizar", "Pedido", new { area = "colaborador", id = id }));
            }
            ViewBag.MODAL_ID = "#modalNFE";
            viewModel.pedido = pedido;
            return(View("Visualizar", viewModel));
        }
        public IActionResult RejeitarDevolucao(int id, [FromForm] PedidoVisualizacaoViewModel viewModel)
        {
            ValidarFormulario("RejeitarDevolucao");
            Pedido pedido = _pedidoRepository.ObterPedido(id);

            if (ModelState.IsValid)
            {
                if (pedido.Situacao != PedidoSituacaoConstant.DEVOLVER_ENTREGUE)
                {
                    return(new BadRequestResult());
                }
                pedido.Situacao = PedidoSituacaoConstant.DEVOLUCAO_REJEITADA;

                SalvarPedidoSituacao(pedido, PedidoSituacaoConstant.DEVOLUCAO_REJEITADA, viewModel.RejeitarDevolucao);
                _pedidoRepository.Atualizar(pedido);

                return(RedirectToAction("Visualizar", "Pedido", new { area = "colaborador", id = id }));
            }
            ViewBag.MODAL_ID = "#modalRejeitar";
            viewModel.pedido = pedido;
            return(View("Visualizar", viewModel));
        }
        public IActionResult CancelarCartaoCompra(int id, [FromForm] PedidoVisualizacaoViewModel viewModel)
        {
            Pedido pedido = _pedidoRepository.ObterPedido(id);

            ValidarFormulario("estornoCartao");
            if (ModelState.IsValid)
            {
                if (pedido.FormaPagamento != TipoPagamentoConstant.CARTAO_CREDITO)
                {
                    return(new BadRequestResult());
                }
                pedido.Situacao = PedidoSituacaoConstant.ESTORNO;

                _gerenciarPagarMe.EstornoCartao(pedido.TransactionId);
                _pedidoRepository.Atualizar(pedido);
                SalvarPedidoSituacao(pedido, PedidoSituacaoConstant.ESTORNO, viewModel.estornoCartao);
                _produtoRepository.DevolverEstoque(pedido);

                return(RedirectToAction("Visualizar", "Pedido", new { area = "colaborador", id = id }));
            }
            ViewBag.MODAL_ID = "#modalCartao";
            viewModel.pedido = pedido;
            return(View("Visualizar", viewModel));
        }