Example #1
0
        internal bool Valida(Anuncio anuncio)
        {
            bool   res    = true;
            object locket = new object();

            Parallel.ForEach(Parametros, (filtro, loopState) =>
            {
                bool fres = true;
                switch (filtro.Nome)
                {
                case "Preco": fres = anuncio.Preco != null ? filtro.Valida(anuncio.Preco.Value) : true; break;

                case "Area": fres = anuncio.Imovel.Area != null ? filtro.Valida(anuncio.Imovel.Area) : true; break;

                case "TipoImovel": fres = filtro.Valida(getTipoImovelDescendencia(anuncio.Imovel.Tipo)); break;

                case "TipoAnuncio": fres = filtro.Valida(anuncio.TipoAnuncio); break;

                case "Mediador": fres = filtro.Valida(anuncio.Mediador); break;

                case "Tipologia": fres = filtro.Valida(anuncio.Imovel.Tipologia); break;

                case "Localidade": fres = filtro.Valida(getRegiaoDescendencia(anuncio.Imovel.Local.Localidade)); break;

                default: break;
                }

                if (!fres)
                {
                    loopState.Stop();
                    lock (locket)
                    {
                        res = false;
                    }
                    return;
                }
            });
            return(res);
        }
Example #2
0
        public List <Anuncio> Filter(int[] _array)
        {
            int _tipo = _array[0], _estado = _array[1], _bairro = _array[2], _cidade = _array[3], _valorInicial = _array[4], _valorFinal = _array[5], _tipoAnuncio = _array[6];

            try
            {
                DBConn db  = new DBConn();
                var    ret = db.Enderecos.Join
                             (
                    db.Anuncios, p => p.AnundioId, an => an.Id, (p, an) => new { p = p, an = an }
                             ).Where
                                 (x => (
                                     (x.an.Tipo == _tipo) &&
                                     (x.an.Ativo == true) &&
                                     (x.an.TipoAnuncio == (_tipoAnuncio == 0 ? x.an.TipoAnuncio : _tipoAnuncio)) &&
                                     (x.p.EstadoId == (_estado == 0 ? x.p.EstadoId : _estado)) &&
                                     (x.p.CidadeId == (_cidade == 0 ? x.p.CidadeId : _cidade)) &&
                                     (x.p.BairroId == (_bairro == 0 ? x.p.BairroId : _bairro)) &&
                                     (x.an.Valor >= (_valorInicial == 0 ? 0 : _valorInicial) && x.an.Valor <= (_valorFinal == 0 ? 90000000000 : _valorFinal))
                                     )
                                 ).OrderBy(x => x.an.Valor)
                             .Select(
                    w =>
                    new
                {
                    Id        = w.p.AnundioId,
                    Titulo    = w.an.Titulo,
                    Descricao = w.an.Descricao,
                    Suite     = w.an.Suite,
                    Vagas     = w.an.Vagas,
                    Valor     = w.an.Valor,
                    Dorms     = w.an.Dorms,
                    Area      = w.an.Area,
                    Imagens   = w.an.Imagens
                }
                    ).ToList();

                List <Anuncio> _list = new List <Anuncio>();
                ret.ForEach(c => {
                    var item = new Anuncio()
                    {
                        Id        = c.Id,
                        Area      = c.Area,
                        Descricao = c.Descricao,
                        Dorms     = c.Dorms,
                        Titulo    = c.Titulo,
                        Suite     = c.Suite,
                        Vagas     = c.Vagas,
                        Valor     = c.Valor,
                        Imagens   = c.Imagens
                    };

                    _list.Add(item);
                });
                return(_list);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }