private void incluirHistorico(string smtp, string haspeople) { bool ocupada = false; if (haspeople.Trim().Equals("1") || haspeople.ToLower().Trim().Equals("true") || haspeople.ToLower().Trim().Equals("sim") || haspeople.ToLower().Trim().Equals("yes")) { ocupada = true; } SalaDeReuniao novoEstado = new SalaDeReuniao(); novoEstado.Smtp = smtp.Trim(); novoEstado.HasPeople = ocupada; novoEstado.DataAtualizacao = DateTime.Now; if (_listHistorico.Count() >= 10) { var primeiro = _listHistorico.Select(x => x).OrderBy(x => x.DataAtualizacao).FirstOrDefault(); if (primeiro != null) { _listHistorico.Remove(primeiro); } } _listHistorico.Add(novoEstado); }
public string SaveOrUpdate(string smtp, string haspeople) { string retorno = BAD; // inclui o registro de histórico try { incluirHistorico(smtp, haspeople); } catch { } // inicia o processamento de armazenagem do estado bool Found = false; bool ocupada = false; if (haspeople.Trim().Equals("1") || haspeople.ToLower().Trim().Equals("true") || haspeople.ToLower().Trim().Equals("sim") || haspeople.ToLower().Trim().Equals("yes")) { ocupada = true; } foreach (var item in ModeloDeEstado.Instance.ListaDeModelosDeEstados) { if (item.Smtp.Trim() == smtp.Trim()) { try { Found = true; item.HasPeople = ocupada; item.DataAtualizacao = DateTime.Now; retorno = OK + SEP + item.Smtp + SEP + OK; } catch { // PRATICAMENTE IMPOSSIVEL OCORRER, MAS... // DEU ERRO NA ATUALIZACAO DO SINGLETON EM MEMORIA // SE DER ISSO AQUI, OU VERTICALIZA O SERVIÇO OU AUMENTA A INSTANCIA OU IMPLEMENTA LOCK NO SINGLETON // ESTE METODO NAO PODE SER ASYNC // DAR MAIS MEMORIA EH UMA OPCAO RAZOAVEL PARA ALTO CONSUMO DE BANDA SEM LOCK TIRANDO PERFORMANCE retorno = BAD + SEP + item.Smtp + SEP + BAD; } } } if (!Found) { SalaDeReuniao novoEstado = new SalaDeReuniao(); novoEstado.Smtp = smtp.Trim(); novoEstado.HasPeople = ocupada; novoEstado.DataAtualizacao = DateTime.Now; ModeloDeEstado.Instance.ListaDeModelosDeEstados.Add(novoEstado); bool vinculadoAumCliente = false; try { // foi implementado de forma a bypassar o catch // porque pode haver timeout na busca de informação Dispositivo dispositivo = GetDispositivo(smtp); // IDENTIFICA A VINCULACAO DO DISPOSITIVO if (dispositivo != null) { if (dispositivo.CodigoCliente != null && dispositivo.CodigoCliente > 0) { vinculadoAumCliente = true; LogEvento(dispositivo); } } else { if (dispositivo.Token.Contains("Timeout")) { retorno = OK + SEP + smtp.Trim() + SEP + BAD; } vinculadoAumCliente = false; } } catch { // DEU ERRO NA VERIFICACAO DA VINCULACAO vinculadoAumCliente = false; retorno = OK + SEP + smtp.Trim() + SEP + BAD; return(retorno); } if (vinculadoAumCliente) { // SE ESTA VINCULADO retorno = OK + SEP + smtp.Trim() + SEP + VNC; } else { // SE NAO ESTA VINCULADO ENTAO FOI CADASTRO NOVO retorno = OK + SEP + smtp.Trim() + SEP + CAD; } return(retorno); } return(retorno); }