using AgroBase.Models; using AgroBase.Services; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AgroMonitor { public class VariaveisMonitoramento { public static LoRaService ComunicacaoLoRa = new LoRaService(); public static Dictionary EquipamentosConectados { get { var Equipamentos = new Dictionary() { { ComunicacaoLoRa.parametros.address, new LoRaProtocoloTransmissaoModel() } }; if (LoRaService.Iniciado) { // Mensagens dos equipamentos conectados dentro dos ultimos 10 segundos var Mensagens = LoRaService.LeituraDadosOperacao.Where(x => x.Momento.AddMilliseconds(VariaveisEquipamento.TempoEntrePingsConexao) < DateTime.Now).ToList(); var _equipamentos = Mensagens .GroupBy(x => x.EnderecoCarro) .OrderBy(x => x.Key) .ToDictionary(x => x.Key, x => x.OrderByDescending(y => y.Momento).FirstOrDefault()); foreach (var item in _equipamentos) { Equipamentos.Add(item.Key, item.Value); } } return Equipamentos; } } public static Dictionary> EquipamentosConectadosLogs { get { var Equipamentos = new Dictionary>() { { ComunicacaoLoRa.parametros.address, new List() } }; if (LoRaService.Iniciado) { // Mensagens dos equipamentos conectados dentro dos ultimos 10 segundos var Mensagens = LoRaService.LeituraDadosOperacao.Where(x => x.Momento.AddMilliseconds(VariaveisEquipamento.TempoEntrePingsConexao) < DateTime.Now).ToList(); var _equipamentos = Mensagens .GroupBy(x => x.EnderecoCarro) .ToDictionary(x => x.Key, x => x.OrderBy(y => y.Momento).ToList()); foreach (var item in _equipamentos) { Equipamentos.Add(item.Key, item.Value); } } return Equipamentos; } } } }