示例#1
0
        public IEnumerable <Amigo> Executar(IEnumerable <Amigo> amigos)
        {
            amigos.ValidarDuplicidade();

            var minhaLocalizacao   = amigos.Where(amigo => amigo.EstouAqui).First();
            var amigosMaisProximos = amigos.Where(amigo => amigo.Nome != minhaLocalizacao.Nome);

            amigosMaisProximos.ToList().ForEach(amigo =>
            {
                amigo.Localizacao.CarregarCoordenadas();
                amigo.Localizacao.CalcularDistancia(minhaLocalizacao.Localizacao.Latitude, minhaLocalizacao.Localizacao.Longitude);
            });

            var resultado = amigosMaisProximos.OrderBy(amigo => amigo.Localizacao.Distancia);

            var parametro = (Repositorio.Collection.CalculoHistoricoLog)Conversao.Transformar(resultado);

            AmigoRepositorio.Incluir(parametro);

            return(resultado.Take(3));
        }
        public static List <Amigo> ListaAmigosProximo(double Latitude, double Longitude, string login)
        {
            var _repositorio = new AmigoRepositorio();

            List <Amigo> LA               = new List <Amigo>();
            List <Amigo> lista            = _repositorio.Listar();
            Dictionary <double, Amigo> dc = new Dictionary <double, Amigo>();

            foreach (Amigo a in lista)
            {
                if (!(a.Latitude == Latitude && a.Longitude == Longitude))
                {
                    double distancia = CalcularDistancia(Latitude, Longitude, a.Latitude, a.Longitude);
                    a.Distancia = distancia;
                    dc.Add(distancia, a);
                }
            }

            var dic = dc.Keys.ToList();

            dic.Sort();

            int cont = 1;

            foreach (double a in dic)
            {
                if (cont < 4)
                {
                    LA.Add(dc[a]);
                    cont++;
                }
                else
                {
                    break;
                }
            }

            _repositorio.CalculoHistoricoLog_Insert(login, LA);
            return(LA);
        }
示例#3
0
 public AmigoService()
 {
     _amigoRepositorio = new AmigoRepositorio();
 }