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); }
public AmigoService() { _amigoRepositorio = new AmigoRepositorio(); }