Пример #1
0
        //Retorna procura de fornecedores
        public List <Fornecedor> GetProcuraFornecedores(Procura _procura)
        {
            var procura             = _procura.StringProcura;
            var procuraPorDistancia = _procura.ProcuraPorDistancia;
            var distancia           = _procura.Distancia;
            var subCategoria        = _procura.IdSubCategoria;
            var categoria           = _procura.IdCategoria;

            try
            {
                var fornecedores = new List <Fornecedor>();
                using (var conn = new SQLiteConnection(dbFile))
                {
                    if (subCategoria == 0 && categoria == 0)
                    {
                        if (String.IsNullOrEmpty(procura))
                        {
                            fornecedores = conn.Table <Fornecedor>().OrderBy(f => f.NomeFantasia).ToList();
                        }
                        else
                        {
                            fornecedores = conn.Table <Fornecedor>().Where(f => f.NomeFantasia.Contains(procura) || f.NomeRazaoSocial.Contains(procura) || f.Resumo.Contains(procura) || f.Descricao.Contains(procura) || f.Chamada.Contains(procura)).OrderBy(f => f.NomeFantasia).ToList();
                        }
                    }
                    else
                    {
                        if (subCategoria == 0)
                        {
                            if (String.IsNullOrEmpty(procura))
                            {
                                fornecedores = conn.Table <Fornecedor>().Where(f => f.Categoria == categoria).OrderBy(s => s.NomeFantasia).ToList();
                            }
                            else
                            {
                                fornecedores = conn.Table <Fornecedor>().Where(f => (f.Categoria == categoria) && (f.NomeFantasia.Contains(procura) || f.NomeRazaoSocial.Contains(procura) || f.Resumo.Contains(procura) || f.Descricao.Contains(procura) || f.Chamada.Contains(procura))).OrderBy(f => f.NomeFantasia).ToList();
                            }
                        }
                        else
                        {
                            if (String.IsNullOrEmpty(procura))
                            {
                                fornecedores = conn.Table <Fornecedor>().Where(f => f.Subcategoria == subCategoria).OrderBy(s => s.NomeFantasia).ToList();
                            }
                            else
                            {
                                fornecedores = conn.Table <Fornecedor>().Where(f => (f.Subcategoria == subCategoria) && (f.NomeFantasia.Contains(procura) || f.NomeRazaoSocial.Contains(procura) || f.Resumo.Contains(procura) || f.Descricao.Contains(procura) || f.Chamada.Contains(procura))).OrderBy(f => f.NomeFantasia).ToList();
                            }
                        }
                    }
                }

                if (procuraPorDistancia)
                {
                    var fornecedoresNaDistancia = new List <Fornecedor>();
                    var fornServicos            = new FornecedorService();
                    foreach (var fornecedor in fornecedores)
                    {
                        if (fornServicos.DistanciaDoLocal(fornecedor.Latitude, fornecedor.Longitude) <= distancia)
                        {
                            fornecedoresNaDistancia.Add(fornecedor);
                        }
                    }
                    fornecedores = fornecedoresNaDistancia;
                }

                return(fornecedores);
            }
            catch (Exception ex)
            {
                StatusMessage = string.Format($"Não pude acessar o banco. {ex.Message}");
                return(null);
                //throw ex;
            }
        }