示例#1
0
        /// <summary>
        /// Cancela um pedido e sua entrega, se houver
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool CancelarPedido(RequisicaoCancelarPedidoDto requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            PedidoVo pedidoVo = new PedidoVo();

            if (!ObterPorIdBd(requisicaoDto.Id, out pedidoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas para encontrar o pedido: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Mudar o inativo que se refere ao cancelado para true
            pedidoVo.Inativo = true;
            pedidoVo.JustificativaCancelamento = string.IsNullOrWhiteSpace(requisicaoDto.Justificativa) ? "" : requisicaoDto.Justificativa.Trim();
            if (!EditarBd(pedidoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao cancelar o pedido: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Cancelar a entrega se houver
            if (pedidoVo.Tipo == TipoPedido.Entrega)
            {
                PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false);
                if (!pedidoEntregaBll.CancelarEntrega(requisicaoDto, ref retornoDto))
                {
                    retornoDto.Retorno = false;
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            // Cancelar contas
            ContaReceberBll contaReceberBll = new ContaReceberBll(pizzaByteContexto, false);

            if (!contaReceberBll.EstornarContasPedido(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            // Cancelar itens
            PedidoItemBll pedidoItemBll = new PedidoItemBll(pizzaByteContexto, false);

            if (!pedidoItemBll.EstornarLista(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao salvar o cancelamento: " + mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, "Pedido cancelado.");
            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
示例#2
0
        /// <summary>
        /// Inclui um pedido, seus itens, sua entrega e seu cliente no banco de dados
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Incluir(RequisicaoEntidadeDto <PedidoDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            // Valida a requisição
            if (!base.Incluir(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            // Se não houver cliente, deixar o id Nulo
            if (requisicaoDto.EntidadeDto.Cliente == null || requisicaoDto.EntidadeDto.Cliente.Id == Guid.Empty)
            {
                requisicaoDto.EntidadeDto.IdCliente = null;
            }

            // Converte para VO a ser incluída no banco de dados
            string   mensagemErro = "";
            PedidoVo pedidoVo     = new PedidoVo();

            if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref pedidoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao converter o pedido para VO: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirPedido, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            // Prepara a inclusão no banco de dados
            if (!IncluirBd(pedidoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao converter o pedido para VO: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirPedido, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            //Incluir Itens
            PedidoItemBll pedidoItemBll = new PedidoItemBll(pizzaByteContexto, false);
            RequisicaoListaEntidadesDto <PedidoItemDto> requisicaoItensDto = new RequisicaoListaEntidadesDto <PedidoItemDto>()
            {
                IdComum           = pedidoVo.Id,
                Identificacao     = requisicaoDto.Identificacao,
                IdUsuario         = requisicaoDto.IdUsuario,
                ListaEntidadesDto = requisicaoDto.EntidadeDto.ListaItens
            };

            if (!pedidoItemBll.IncluirLista(requisicaoItensDto, ref retornoDto))
            {
                return(false);
            }

            // Incluir/editar cliente, enredeço e taxas
            if (!AtualizarCadastros(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            // Se houver pagamentos, incluir as contas a receber
            if (requisicaoDto.EntidadeDto.RecebidoCredito != 0 ||
                requisicaoDto.EntidadeDto.RecebidoDebito != 0 ||
                requisicaoDto.EntidadeDto.RecebidoDinheiro != 0)
            {
                RequisicaoListaEntidadesDto <ContaReceberDto> requisicaoContasDto = new RequisicaoListaEntidadesDto <ContaReceberDto>()
                {
                    IdUsuario     = requisicaoDto.IdUsuario,
                    Identificacao = requisicaoDto.Identificacao,
                    IdComum       = requisicaoDto.EntidadeDto.Id
                };

                requisicaoDto.EntidadeDto.DataInclusao = DateTime.Now.AddHours(4);
                List <ContaReceberDto> listaContas = new List <ContaReceberDto>();
                if (!GerarListaContas(requisicaoDto.EntidadeDto, ref listaContas, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Falha ao gerar as contas: " + mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirPedido, Guid.Empty, retornoDto.Mensagem);
                    return(false);
                }

                requisicaoContasDto.ListaEntidadesDto = listaContas;

                ContaReceberBll contaReceberBll = new ContaReceberBll(pizzaByteContexto, false);
                if (!contaReceberBll.IncluirContasPedido(requisicaoContasDto, ref retornoDto))
                {
                    return(false);
                }
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirPedido, Guid.Empty, retornoDto.Mensagem);
                    return(false);
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
示例#3
0
        /// <summary>
        /// Edita um pedido, seus itens, entrega e cliente, se houver
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Editar(RequisicaoEntidadeDto <PedidoDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            if (!base.Editar(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            string   mensagemErro = "";
            PedidoVo pedidoVo     = new PedidoVo();

            if (!ObterPorIdBd(requisicaoDto.EntidadeDto.Id, out pedidoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas para encontrar o pedido: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Se não houver cliente, deixar o id Nulo
            if (requisicaoDto.EntidadeDto.Cliente == null || requisicaoDto.EntidadeDto.Cliente.Id == Guid.Empty)
            {
                requisicaoDto.EntidadeDto.IdCliente = null;
            }

            TipoPedido tipoAntigo = pedidoVo.Tipo;

            if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref pedidoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas ao converter o pedido para Vo: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                return(false);
            }

            if (!EditarBd(pedidoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao editar os novos dados do pedido: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                return(false);
            }

            //Editar itens
            PedidoItemBll pedidoItemBll = new PedidoItemBll(this.pizzaByteContexto, false);
            RequisicaoListaEntidadesDto <PedidoItemDto> requisicaoItensDto = new RequisicaoListaEntidadesDto <PedidoItemDto>()
            {
                IdComum           = pedidoVo.Id,
                Identificacao     = requisicaoDto.Identificacao,
                IdUsuario         = requisicaoDto.IdUsuario,
                ListaEntidadesDto = requisicaoDto.EntidadeDto.ListaItens
            };

            if (!pedidoItemBll.EditarLista(requisicaoItensDto, ref retornoDto))
            {
                return(false);
            }

            // Incluir/editar cliente, enredeço e taxas
            if (!AtualizarCadastros(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            //Editar entrega
            if (tipoAntigo == TipoPedido.Entrega && pedidoVo.Tipo != TipoPedido.Entrega)
            {
                PedidoEntregaBll   pedidoEntregaBll      = new PedidoEntregaBll(pizzaByteContexto, false);
                RequisicaoObterDto requisicaoEntidadeDto = new RequisicaoObterDto()
                {
                    Id            = pedidoVo.Id,
                    Identificacao = requisicaoDto.Identificacao,
                    IdUsuario     = requisicaoDto.IdUsuario
                };

                if (!pedidoEntregaBll.ExcluirPorIdPedido(requisicaoEntidadeDto, ref retornoDto))
                {
                    return(false);
                }
            }

            // Editar contas, se houver pagamentos alterados
            RequisicaoListaEntidadesDto <ContaReceberDto> requisicaoContasDto = new RequisicaoListaEntidadesDto <ContaReceberDto>()
            {
                IdUsuario     = requisicaoDto.IdUsuario,
                Identificacao = requisicaoDto.Identificacao,
                IdComum       = requisicaoDto.EntidadeDto.Id
            };

            requisicaoDto.EntidadeDto.DataInclusao = pedidoVo.DataInclusao;
            List <ContaReceberDto> listaContas = new List <ContaReceberDto>();

            if (!GerarListaContas(requisicaoDto.EntidadeDto, ref listaContas, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao gerar as contas: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirPedido, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            requisicaoContasDto.ListaEntidadesDto = listaContas;
            ContaReceberBll contaReceberBll = new ContaReceberBll(pizzaByteContexto, false);

            if (!contaReceberBll.EditarContasPedido(requisicaoContasDto, ref retornoDto))
            {
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao salvar os novos dados: " + mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
示例#4
0
        /// <summary>
        /// Exclui um pedido do banco de dados a partir do ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Excluir(RequisicaoObterDto requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarUsuarioAdm(requisicaoDto.Identificacao, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Este usuário não é administrador. Para excluir pedidos é necessário " +
                                      $"logar com um usuário administrador. {mensagemErro}";

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            if (!base.Excluir(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            //Excluir itens
            PedidoItemBll pedidoItemBll = new PedidoItemBll(pizzaByteContexto, false);

            if (!pedidoItemBll.ExcluirItensPedido(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            //Excluir entregas, se houver
            PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false);

            if (!pedidoEntregaBll.ExcluirPorIdPedido(requisicaoDto, ref retornoDto))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Excluir as contas
            ContaReceberBll contaReceberBll = new ContaReceberBll(pizzaByteContexto, false);

            if (!contaReceberBll.ExcluirContasPedido(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, "Pedido excluído.");
            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }