Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }