Ejemplo n.º 1
0
        /// <summary>
        /// Obtem uma lista de endereços de cliente pelos IDs
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        internal bool ObterListaPorId(RequisicaoListaGuidsDto requisicaoDto, ref RetornoObterListaDto <ClienteEnderecoDto> retornoDto)
        {
            // Obter a query primária
            string mensagemErro = ""; IQueryable <ClienteEnderecoVo> query;

            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar os endereços de clientes: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            List <ClienteEnderecoVo> listaVo     = query.Where(p => requisicaoDto.ListaGuids.Contains(p.Id)).ToList();
            List <CepVo>             listaCepsVo = new List <CepVo>();

            // Obter CEPs
            CepBll cepBll = new CepBll(false);

            if (!cepBll.ObterListaEnderecosPorId(listaVo.Select(p => p.IdCep).ToList(), ref listaCepsVo, ref mensagemErro))
            {
                retornoDto.Mensagem = mensagemErro;
                retornoDto.Retorno  = false;

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

            // Converter
            foreach (var clienteEndereco in listaVo)
            {
                CepVo cepDto = listaCepsVo.Where(p => p.Id == clienteEndereco.IdCep).FirstOrDefault();
                ClienteEnderecoDto clienteEnderecoDto = new ClienteEnderecoDto();
                if (!ConverterVoParaDto(clienteEndereco, ref clienteEnderecoDto, ref mensagemErro))
                {
                    retornoDto.Mensagem = "Erro ao converter para DTO: " + mensagemErro;
                    retornoDto.Retorno  = false;

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

                //Preencher dados do endereço
                clienteEnderecoDto.Endereco = new CepDto()
                {
                    Bairro     = cepDto == null ? "" : cepDto.Bairro,
                    Cep        = cepDto == null ? "" : cepDto.Cep,
                    Cidade     = cepDto == null ? "" : cepDto.Cidade,
                    Logradouro = cepDto == null ? "" : cepDto.Logradouro,
                    Id         = cepDto == null ? Guid.Empty : cepDto.Id
                };

                retornoDto.ListaEntidades.Add(clienteEnderecoDto);
            }

            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Obtém um fornecedor pelo ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <FornecedorDto> retornoDto)
        {
            if (!base.Obter(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            string       mensagemErro = "";
            FornecedorVo fornecedorVo;

            if (!ObterPorIdBd(requisicaoDto.Id, out fornecedorVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao obter o fornecedor: " + mensagemErro;
                retornoDto.Retorno  = false;

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

            FornecedorDto fornecedorDto = new FornecedorDto();

            if (!ConverterVoParaDto(fornecedorVo, ref fornecedorDto, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao converter o fornecedor: " + mensagemErro;
                retornoDto.Retorno  = false;

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

            if (fornecedorDto.Endereco.Id != Guid.Empty)
            {
                RequisicaoObterDto requisicaoObterCep = new RequisicaoObterDto()
                {
                    Id            = fornecedorDto.Endereco.Id,
                    IdUsuario     = requisicaoDto.IdUsuario,
                    Identificacao = requisicaoDto.Identificacao
                };

                RetornoObterDto <CepDto> retornoCepDto = new RetornoObterDto <CepDto>();
                CepBll cepBll = new CepBll(true);

                if (!cepBll.Obter(requisicaoObterCep, ref retornoCepDto))
                {
                    retornoDto.Mensagem = "Erro ao obter o endereço: " + mensagemErro;
                    retornoDto.Retorno  = false;
                    return(false);
                }

                fornecedorDto.Endereco = (retornoCepDto.Entidade == null ? new CepDto() : retornoCepDto.Entidade);
            }

            retornoDto.Entidade = fornecedorDto;
            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "Ok";
            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Obtém um endereço de cliente pelo ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <ClienteEnderecoDto> retornoDto)
        {
            if (!base.Obter(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            string mensagemErro = ""; ClienteEnderecoVo clienteEnderecoVo;

            if (!ObterPorIdBd(requisicaoDto.Id, out clienteEnderecoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao obter o endereço do cliente: " + mensagemErro;
                retornoDto.Retorno  = false;

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

            ClienteEnderecoDto clienteEnderecoDto = new ClienteEnderecoDto();

            if (!ConverterVoParaDto(clienteEnderecoVo, ref clienteEnderecoDto, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao converter o endereço do cliente: " + mensagemErro;
                retornoDto.Retorno  = false;

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

            if (clienteEnderecoDto.IdCep != Guid.Empty)
            {
                RequisicaoObterDto requisicaoObterCep = new RequisicaoObterDto()
                {
                    Id            = clienteEnderecoDto.IdCep,
                    IdUsuario     = requisicaoDto.IdUsuario,
                    Identificacao = requisicaoDto.Identificacao
                };

                RetornoObterDto <CepDto> retornoCepDto = new RetornoObterDto <CepDto>();
                CepBll cepBll = new CepBll(true);

                if (!cepBll.Obter(requisicaoObterCep, ref retornoCepDto))
                {
                    retornoDto.Mensagem = $"Erro ao obter o endereço: {retornoCepDto.Mensagem}";
                    retornoDto.Retorno  = false;
                    return(false);
                }

                clienteEnderecoDto.Endereco = (retornoCepDto.Entidade == null ? new CepDto() : retornoCepDto.Entidade);
            }

            retornoDto.Entidade = clienteEnderecoDto;
            retornoDto.Mensagem = "Ok";
            retornoDto.Retorno  = true;
            return(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Obtém um taxaEntrega pelo ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <TaxaEntregaDto> retornoDto)
        {
            if (!base.Obter(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            string        mensagemErro = "";
            TaxaEntregaVo taxaEntregaVo;

            if (!ObterPorIdBd(requisicaoDto.Id, out taxaEntregaVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao obter a taxa de entrega: " + mensagemErro;
                retornoDto.Retorno  = false;

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

            TaxaEntregaDto taxaEntregaDto = new TaxaEntregaDto();

            if (!ConverterVoParaDto(taxaEntregaVo, ref taxaEntregaDto, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao converter a taxa de entrega: " + mensagemErro;
                retornoDto.Retorno  = false;

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

            CepBll cepBll = new CepBll(false);
            string cidade = "";

            if (!cepBll.ObterCidadePorBairro(requisicaoDto, taxaEntregaDto.BairroCidade, ref cidade, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao obter a cidade que a taxa se refere: " + mensagemErro;
                retornoDto.Retorno  = false;
            }

            taxaEntregaDto.Cidade = cidade;
            retornoDto.Entidade   = taxaEntregaDto;

            retornoDto.Mensagem = "Ok";
            retornoDto.Retorno  = true;
            return(true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Inclui um endereço de cliente no banco de dados
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Incluir(RequisicaoEntidadeDto <ClienteEnderecoDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            // Valida a requisição
            if (!base.Incluir(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            // Se houver endereço preenchido e ele não existir ainda
            if (requisicaoDto.EntidadeDto.Endereco.Id == Guid.Empty &&
                !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Endereco.Cep))
            {
                CepBll cepBll = new CepBll(this.pizzaByteContexto, false);
                RequisicaoEntidadeDto <CepDto> requisicaoCepDto = new RequisicaoEntidadeDto <CepDto>()
                {
                    IdUsuario     = requisicaoDto.IdUsuario,
                    Identificacao = requisicaoDto.Identificacao,
                    EntidadeDto   = requisicaoDto.EntidadeDto.Endereco
                };

                requisicaoCepDto.EntidadeDto.Id = Guid.NewGuid();

                // Incluir o endereço
                if (!cepBll.Incluir(requisicaoCepDto, ref retornoDto))
                {
                    // Logado na classe de CEP
                    return(false);
                }
            }

            ClienteEnderecoVo clienteEnderecoVo = new ClienteEnderecoVo();
            string            mensagemErro      = "";

            // Converte para VO a ser incluída no banco de dados
            if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref clienteEnderecoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao converter o endereço do cliente para VO: " + mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirClienteEndereco, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            // Prepara a inclusão no banco de dados
            if (!IncluirBd(clienteEnderecoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao incluir o endereço do cliente no banco de dados: " + mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirClienteEndereco, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

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

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirClienteEndereco, Guid.Empty, mensagemErro);
                    return(false);
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Obtém uma lista de clienteEnderecoes com filtros aplicados, podendo ser paginada
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool ObterListaFiltrada(RequisicaoObterListaDto requisicaoDto, ref RetornoObterListaDto <ClienteEnderecoDto> retornoDto)
        {
            if (!base.ObterListaFiltrada(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            // Obter a query primária
            string mensagemErro = ""; IQueryable <ClienteEnderecoVo> query;

            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar os endereços de clientes: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            // Aplicar os filtros
            foreach (var filtro in requisicaoDto.ListaFiltros)
            {
                switch (filtro.Key)
                {
                case "IDCLIENTE":
                    Guid id;
                    if (!Guid.TryParse(filtro.Value, out id))
                    {
                        retornoDto.Mensagem = $"Falha ao converter o filtro de 'IdCliente'.";
                        retornoDto.Retorno  = false;
                        return(false);
                    }

                    query = query.Where(p => p.IdCliente == id);
                    break;

                case "IDCEP":
                    Guid idCep;
                    if (!Guid.TryParse(filtro.Value, out idCep))
                    {
                        retornoDto.Mensagem = $"Falha ao converter o filtro de 'IdCep'.";
                        retornoDto.Retorno  = false;
                        return(false);
                    }

                    query = query.Where(p => p.IdCep == idCep);
                    break;

                case "INATIVO":

                    bool filtroInativo;
                    if (!bool.TryParse(filtro.Value, out filtroInativo))
                    {
                        retornoDto.Mensagem = $"Fala ao converter o filtro de 'inativo'.";
                        retornoDto.Retorno  = false;
                        return(false);
                    }

                    query = query.Where(p => p.Inativo == filtroInativo);
                    break;

                default:
                    retornoDto.Mensagem = $"O filtro {filtro.Key} não está definido para esta pesquisa.";
                    retornoDto.Retorno  = false;

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

            requisicaoDto.CampoOrdem = string.IsNullOrWhiteSpace(requisicaoDto.CampoOrdem) ? "" : requisicaoDto.CampoOrdem.ToUpper().Trim();
            switch (requisicaoDto.CampoOrdem)
            {
            case "IDCLIENTE":
                query = query.OrderBy(p => p.IdCliente).ThenBy(p => p.IdCep);
                break;

            case "IDCEP":
                query = query.OrderBy(p => p.IdCep).ThenBy(p => p.IdCliente);
                break;

            default:
                query = query.OrderBy(p => p.IdCliente).ThenBy(p => p.IdCep);
                break;
            }

            double totalItens = query.Count();

            if (totalItens == 0)
            {
                retornoDto.NumeroPaginas = 0;
                retornoDto.Mensagem      = "Nenhum resultado encontrado.";
                retornoDto.Retorno       = true;
                return(true);
            }

            double paginas = totalItens <= requisicaoDto.NumeroItensPorPagina ? 1 : totalItens / requisicaoDto.NumeroItensPorPagina;

            retornoDto.NumeroPaginas = (int)Math.Ceiling(paginas);

            int pular = (requisicaoDto.Pagina - 1) * requisicaoDto.NumeroItensPorPagina;

            query = query.Skip(pular).Take(requisicaoDto.NumeroItensPorPagina);

            List <ClienteEnderecoVo> listaVo     = query.ToList();
            List <CepVo>             listaCepsVo = new List <CepVo>();

            CepBll cepBll = new CepBll(false);

            if (!cepBll.ObterListaEnderecosPorId(listaVo.Select(p => p.IdCep).ToList(), ref listaCepsVo, ref mensagemErro))
            {
                retornoDto.Mensagem = mensagemErro;
                retornoDto.Retorno  = false;

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

            foreach (var clienteEndereco in listaVo)
            {
                CepVo cepDto = listaCepsVo.Where(p => p.Id == clienteEndereco.IdCep).FirstOrDefault();
                ClienteEnderecoDto clienteEnderecoDto = new ClienteEnderecoDto();
                if (!ConverterVoParaDto(clienteEndereco, ref clienteEnderecoDto, ref mensagemErro))
                {
                    retornoDto.Mensagem = "Erro ao converter para DTO: " + mensagemErro;
                    retornoDto.Retorno  = false;

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

                //Preencher dados do endereço
                clienteEnderecoDto.Endereco = new CepDto()
                {
                    Bairro     = cepDto == null ? "" : cepDto.Bairro,
                    Cep        = cepDto == null ? "" : cepDto.Cep,
                    Cidade     = cepDto == null ? "" : cepDto.Cidade,
                    Logradouro = cepDto == null ? "" : cepDto.Logradouro,
                    Id         = cepDto == null ? Guid.Empty : cepDto.Id
                };

                retornoDto.ListaEntidades.Add(clienteEnderecoDto);
            }

            retornoDto.Mensagem = "Ok";
            retornoDto.Retorno  = true;
            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Edita um endereço de cliente
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Editar(RequisicaoEntidadeDto <ClienteEnderecoDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            if (!base.Editar(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            ClienteEnderecoVo clienteEnderecoVo = new ClienteEnderecoVo();
            string            mensagemErro      = "";

            // Obtém o endereço
            if (!ObterPorIdBd(requisicaoDto.EntidadeDto.Id, out clienteEnderecoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas para encontrar o endereço do cliente: " + mensagemErro;
                retornoDto.Retorno  = false;

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

            // Se houver endereço preenchido e ele não existir ainda
            if (requisicaoDto.EntidadeDto.Endereco.Id == Guid.Empty &&
                !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Endereco.Cep))
            {
                requisicaoDto.EntidadeDto.Endereco.Id = Guid.NewGuid();

                CepBll cepBll = new CepBll(this.pizzaByteContexto, false);
                RequisicaoEntidadeDto <CepDto> requisicaoCepDto = new RequisicaoEntidadeDto <CepDto>()
                {
                    IdUsuario     = requisicaoDto.IdUsuario,
                    Identificacao = requisicaoDto.Identificacao,
                    EntidadeDto   = requisicaoDto.EntidadeDto.Endereco
                };

                // Incluir o endereço
                if (!cepBll.Incluir(requisicaoCepDto, ref retornoDto))
                {
                    // Logado na BLL de CEP
                    return(false);
                }
            }

            if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref clienteEnderecoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas ao converter o endereço do cliente para Vo: " + mensagemErro;
                retornoDto.Retorno  = false;

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

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

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarClienteEndereco, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                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.EditarClienteEndereco, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
Ejemplo n.º 8
0
        /// <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);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Obtém uma lista com todos os bairros e suas respectivas taxas
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterListaBairrosComTaxa(BaseRequisicaoDto requisicaoDto, ref RetornoObterListaDto <TaxaEntregaDto> retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaBairrosComTaxas, Guid.Empty, mensagemErro);
                return(false);
            }

            CepBll cepBll = new CepBll(false);
            List <BairroCidadeDto> listaBairros = new List <BairroCidadeDto>();

            // Obter os bairros cadastrados
            if (!cepBll.ObterListaBairros(requisicaoDto, ref listaBairros, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                return(false);
            }

            // Obter a query primária
            IQueryable <TaxaEntregaVo> query;
            List <TaxaEntregaVo>       listaTaxasCadastradas;

            if (!this.ObterQueryBd(out query, ref mensagemErro, true))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar as taxas de entrega: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            try
            {
                query = query.OrderBy(p => p.BairroCidade);
                listaTaxasCadastradas = query.ToList();
            }
            catch (Exception)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = $"Houve um problema ao listar os bairros: {mensagemErro}";

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaBairrosComTaxas, Guid.Empty, mensagemErro);
                return(false);
            }

            // Para cada bairro
            foreach (var bairro in listaBairros)
            {
                // Iniciar taxa
                TaxaEntregaDto taxaDto = new TaxaEntregaDto()
                {
                    BairroCidade = bairro.Bairro + "_" + bairro.Cidade.Trim(),
                    Cidade       = bairro.Cidade,
                    Id           = Guid.Empty,
                    ValorTaxa    = 0
                };

                TaxaEntregaVo taxaVo = listaTaxasCadastradas.Where(p => p.BairroCidade.Trim() == (bairro.Bairro.Trim() + "_" + bairro.Cidade.Trim())).FirstOrDefault();
                if (taxaVo != null)
                {
                    if (!ConverterVoParaDto(taxaVo, ref taxaDto, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = $"Falha ao converter a taxa para DTO: {mensagemErro}";

                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaBairrosComTaxas, Guid.Empty, mensagemErro);
                        return(false);
                    }

                    if (taxaVo.Excluido)
                    {
                        taxaDto.ValorTaxa = 0;
                    }
                }

                retornoDto.ListaEntidades.Add(taxaDto);
            }

            retornoDto.ListaEntidades = retornoDto.ListaEntidades.OrderBy(p => p.Cidade).ThenBy(p => p.BairroCidade).ToList();
            retornoDto.Retorno        = true;
            retornoDto.Mensagem       = "OK";
            return(true);
        }