/// <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); }
/// <summary> /// Atualiza ou incluir dados de clientes, endereços e taxas /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> private bool AtualizarCadastros(RequisicaoEntidadeDto <PedidoDto> requisicaoDto, ref RetornoDto retornoDto) { string mensagemErro = ""; // Incluir/editar cliente if (requisicaoDto.EntidadeDto.Cliente != null && requisicaoDto.EntidadeDto.Cliente.Id != Guid.Empty) { ClienteBll clienteBll = new ClienteBll(pizzaByteContexto, false); if (!clienteBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Cliente, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = mensagemErro; return(false); } // Verificar endereço if (requisicaoDto.EntidadeDto.Entrega.ClienteEndereco != null && requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Id != Guid.Empty) { CepBll cepBll = new CepBll(pizzaByteContexto, false); if (!cepBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = mensagemErro; return(false); } // Incluir/editar endereço do cliente requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.IdCliente = requisicaoDto.EntidadeDto.Cliente.Id; ClienteEnderecoBll clienteEnderecoBll = new ClienteEnderecoBll(pizzaByteContexto, false); if (!clienteEnderecoBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Entrega.ClienteEndereco, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = mensagemErro; return(false); } // Incluir/editar a taxa de entrega, se houver if (requisicaoDto.EntidadeDto.TaxaEntrega > 0 && !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Bairro) && !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Cidade)) { TaxaEntregaBll taxaEntregaBll = new TaxaEntregaBll(pizzaByteContexto, false); TaxaEntregaDto taxaDto = new TaxaEntregaDto() { BairroCidade = requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Bairro.Trim() + "_" + requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Cidade, ValorTaxa = requisicaoDto.EntidadeDto.TaxaEntrega }; if (!taxaEntregaBll.IncluirEditar(requisicaoDto, taxaDto, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = mensagemErro; return(false); } } } } // Se for do tipo entrega if (requisicaoDto.EntidadeDto.Tipo == TipoPedido.Entrega) { requisicaoDto.EntidadeDto.Entrega.IdPedido = requisicaoDto.EntidadeDto.Id; requisicaoDto.EntidadeDto.Entrega.IdEndereco = requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Id; PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false); if (!pedidoEntregaBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Entrega, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = mensagemErro; return(false); } } return(true); }
/// <summary> /// Obtém um pedido pelo ID /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <PedidoDto> retornoDto) { if (!base.Obter(requisicaoDto, ref retornoDto)) { return(false); } string mensagemErro = ""; PedidoVo pedidoVo; if (!ObterPorIdBd(requisicaoDto.Id, out pedidoVo, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao obter o pedido: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterPedido, requisicaoDto.Id, retornoDto.Mensagem); return(false); } PedidoDto pedidoDto = new PedidoDto(); if (!ConverterVoParaDto(pedidoVo, ref pedidoDto, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao converter o pedido: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterPedido, requisicaoDto.Id, retornoDto.Mensagem); return(false); } retornoDto.Entidade = pedidoDto; //Obter itens PedidoItemBll pedidoItemBll = new PedidoItemBll(true); RequisicaoObterListaDto requisicaoItensDto = new RequisicaoObterListaDto() { CampoOrdem = "DESCRICAOPRODUTO", NaoPaginarPesquisa = true, Identificacao = requisicaoDto.Identificacao, IdUsuario = requisicaoDto.IdUsuario }; requisicaoItensDto.ListaFiltros.Add("IDPEDIDO", requisicaoDto.Id.ToString()); RetornoObterListaDto <PedidoItemDto> retornoItemDto = new RetornoObterListaDto <PedidoItemDto>(); if (!pedidoItemBll.ObterListaFiltrada(requisicaoItensDto, ref retornoItemDto)) { return(false); } retornoDto.Entidade.ListaItens = retornoItemDto.ListaEntidades; //Obter entrega if (pedidoDto.Tipo == TipoPedido.Entrega) { PedidoEntregaDto entregaDto = new PedidoEntregaDto(); PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false); if (!pedidoEntregaBll.ObterEntregaPorIdPedido(requisicaoDto, ref entregaDto, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao obter a entrega do pedido: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterPedido, requisicaoDto.Id, retornoDto.Mensagem); return(false); } pedidoDto.Entrega = entregaDto; } //Obter cliente if (pedidoDto.IdCliente != null && pedidoDto.IdCliente != Guid.Empty) { requisicaoDto.Id = pedidoDto.IdCliente.Value; ClienteBll clienteBll = new ClienteBll(false); RetornoObterDto <ClienteDto> retornoClienteDto = new RetornoObterDto <ClienteDto>(); if (!clienteBll.Obter(requisicaoDto, ref retornoClienteDto) && retornoClienteDto.Mensagem != "Erro ao obter o cliente: Cadastro não encontrado") { retornoDto.Mensagem = retornoClienteDto.Mensagem; retornoDto.Retorno = false; return(false); } if (retornoClienteDto.Mensagem == "Erro ao obter o cliente: Cadastro não encontrado") { pedidoDto.Cliente.Nome = "Cadastro não encontro"; } else { pedidoDto.Cliente = retornoClienteDto.Entidade; } } retornoDto.Mensagem = "Ok"; retornoDto.Retorno = true; return(true); }
/// <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); }
/// <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); }