コード例 #1
0
        public List <AmigosProximos> ObterAmigosProximos(string jsonInput)
        {
            var _calculoHistoricoLogService = new CalculoHistoricoLogService();
            var localizacaoAtual            = JsonConvert.DeserializeObject <ProjetoTeste.Domain.Entities.Amigo>(jsonInput);
            var listAmigos = _amigoRepositorio.GetAll().ToList();

            #region Calculo
            var oListAmigosProximos = new List <AmigosProximos>();
            foreach (var item in listAmigos)
            {
                var oAmigosProximos = new AmigosProximos();
                oAmigosProximos.idAmigo   = item.Id;
                oAmigosProximos.Idade     = item.Idade;
                oAmigosProximos.Nome      = item.Nome;
                oAmigosProximos.latitude  = item.latitude;
                oAmigosProximos.longitude = item.longitude;
                oAmigosProximos.distancia = (int)CalcularDistancia(localizacaoAtual.latitude, localizacaoAtual.longitude, item.latitude, item.longitude);
                oListAmigosProximos.Add(oAmigosProximos);
            }
            oListAmigosProximos.Sort((x, y) => x.distancia - y.distancia);
            oListAmigosProximos = oListAmigosProximos.Take(3).ToList();
            #endregion

            #region Log
            var _calculoHistoricoLog = new CalculoHistoricoLog();
            _calculoHistoricoLog.LatitudeAtual  = localizacaoAtual.latitude;
            _calculoHistoricoLog.LongitudeAtual = localizacaoAtual.longitude;
            _calculoHistoricoLog.Resultado      = JsonConvert.SerializeObject(oListAmigosProximos);
            _calculoHistoricoLogService.SalvarLog(_calculoHistoricoLog);
            #endregion

            return(oListAmigosProximos);
        }
コード例 #2
0
        public List <Tracking> ObterAmigosMaisProximo(string Nome)
        {
            List <Tracking> tracking = new List <Tracking>();

            double distancia = 0;

            try
            {
                var pessoas = _uow._db.Pessoas.Where(x => x.Nome.Trim().ToLower() == Nome.Trim().ToLower());

                if (pessoas == null || pessoas.Count() == 0)
                {
                    return(tracking);
                }

                var pessoaOrigem = pessoas.ToList().FirstOrDefault();

                var outrasPessoas = _uow._db.Pessoas.Where(x => x.Id != pessoaOrigem.Id).ToList();

                foreach (var pessoa in outrasPessoas)
                {
                    var localizacaoOrigem = new Localizacao()
                    {
                        Latitude  = Convert.ToDouble(pessoaOrigem.Latitude),
                        Longitude = Convert.ToDouble(pessoaOrigem.Longitude)
                    };

                    var localizacaoDestino = new Localizacao()
                    {
                        Latitude  = Convert.ToDouble(pessoa.Longitude),
                        Longitude = Convert.ToDouble(pessoa.Longitude)
                    };

                    distancia = TrackingHelper.CalculateDistance(localizacaoOrigem, localizacaoDestino);

                    tracking.Add(new Tracking
                    {
                        PessoaId  = pessoa.Id,
                        Nome      = pessoa.Nome,
                        Distancia = Math.Round(distancia, 2)
                    });

                    // Salvar Histórico
                    var historico = new CalculoHistoricoLog
                    {
                        PessoaOrigemID  = pessoaOrigem.Id,
                        PessoaDestinoID = pessoa.Id,
                        Distancia       = Convert.ToDecimal(Math.Round(distancia, 2))
                    };

                    var Novohistorico = new CalculoHistoricoLogRepository(_uow).Save(historico);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return(tracking.OrderBy(x => x.Distancia).Take(3).ToList());
        }
コード例 #3
0
 public bool SalvarLog(CalculoHistoricoLog obj)
 {
     try
     {
         _calculoHistoricoLogRepositorio.Insert(ref obj);
         return(true);
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
コード例 #4
0
 public CalculoHistoricoLog Save(CalculoHistoricoLog entity)
 {
     try
     {
         entity.UltimaAtualizacao = System.DateTime.Now;
         _uow._db.Add(entity);
         _uow._db.SaveChanges();
         return(entity);
     }
     catch (Exception ex)
     {
         string erro = ex.Message;
         throw;
     }
 }
 public void HistoricoLog(DateTime dateLog, int latitude, int longitude, int friendLatitude, int friendLongitude, double result)
 {
     using (var context = new LocalizacaoAmigosContext())
     {
         CalculoHistoricoLog calculoHistoricoLog = new CalculoHistoricoLog
         {
             DateLog         = dateLog,
             Latitude        = latitude,
             Longitude       = longitude,
             FriendLatitude  = friendLatitude,
             FriendLongitude = friendLongitude,
             Result          = result
         };
         context.CalculoHistoricoLog.Add(calculoHistoricoLog);
         context.SaveChanges();
     }
 }
コード例 #6
0
        public IHttpActionResult Post(CalculoHistoricoLog calculoHistoricoLog)
        {
            //  Retorna o erro 400.
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //  Se valido, adiciona o registro.
            db.CalculosHistoricosLogs.Add(calculoHistoricoLog);
            db.SaveChanges();

            //  Retorna 201
            return(CreatedAtRoute("DefaultApi", new
            {
                id = calculoHistoricoLog.CalculoHistoricoLogId
            }, calculoHistoricoLog));
        }
コード例 #7
0
        public IHttpActionResult Put(int id, CalculoHistoricoLog calculoHistoricoLog)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState)); // Erro 400
            }
            if (id != calculoHistoricoLog.CalculoHistoricoLogId)
            {
                return(BadRequest("O id informado a URL é diferente do id informado no corpo da requisição"));
            }

            if (db.CalculosHistoricosLogs.Count(c => c.CalculoHistoricoLogId == id) == 0)
            {
                return(NotFound());
            }

            db.Entry(calculoHistoricoLog).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #8
0
 public void Adicionar(CalculoHistoricoLog calculoHistoricoLog)
 {
     _iCalculoHistoricoLogRepository.Adicionar(calculoHistoricoLog);
 }
コード例 #9
0
 public CalculoHistoricoLogBuilder()
 {
     calculoHistoricoLog         = new CalculoHistoricoLog();
     historicoCalculoLocalizacao = new List <Repositorio.Collection.Amigo>();
 }
コード例 #10
0
 public void Update(CalculoHistoricoLog entity)
 {
     _uow._db.Update(entity);
     _uow._db.SaveChanges();
 }
コード例 #11
0
 public List <CalculoHistoricoLog> Search(CalculoHistoricoLog entity)
 {
     throw new NotImplementedException();
 }
コード例 #12
0
 public void Delete(CalculoHistoricoLog entity)
 {
     _uow._db.Remove(entity);
     _uow._db.SaveChanges();
 }