Exemplo n.º 1
0
        static void Main(string[] args)
        {
            var k = new SalaDeReuniaoBS().getRoomLists();

            foreach (var item in k)
            {
                Console.WriteLine(item.ToString());
            }
        }
Exemplo n.º 2
0
        public static void Robo(bool debug = false)
        {
            string storeId = "";
            string smtp    = "";

            // Teste de funções gerais
            var disponibilidade = new SalaDeReuniaoBS().obterDisponibilidadeSalaReuniao();

            foreach (var sala in disponibilidade)
            {
                var k = listaSala.Where(x => x.ID == sala.Smtp).ToList();
                if (k == null)
                {
                    Sala room = new Sala();
                    room.ID            = sala.Smtp;
                    room.EnviouEmail15 = false;
                    room.EnviouEmail30 = false;
                    listaSala.Add(room);
                }


                switch (sala.Status.StatusDisponibilidade)
                {
                case StatusDisponibilidade.EmReuniao:
                    //
                    if (debug)
                    {
                        Console.WriteLine("Opa! Encontrei um evento que indica reunião com 15 minutos de vida.");
                        Console.WriteLine(" ");
                    }
                    bool arduinoStatusAviso  = true;
                    var  salasDeReuniaoAviso = GetSalas().Result;
                    var  procurarSalaAviso   = salasDeReuniaoAviso.Where(x => x.Smtp.ToLower().Equals(sala.Smtp.ToLower())).FirstOrDefault();
                    if (procurarSalaAviso != null)
                    {
                        arduinoStatusAviso = procurarSalaAviso.HasPeople == null ? false : Convert.ToBoolean(procurarSalaAviso.HasPeople);
                    }
                    if (!arduinoStatusAviso)
                    {
                        if (debug)
                        {
                            Console.WriteLine(" ");
                            Console.WriteLine("Opa! Verifiquei ainda que não existem pessoas na sala.");
                        }
                        foreach (var evento in sala.Status.ListaEventos)
                        {
                            if (debug)
                            {
                                Console.WriteLine(" ");
                                Console.WriteLine("O assunto dela é " + evento.Details.Subject);
                            }
                            storeId = evento.Details.StoreId;
                            smtp    = sala.Smtp;

                            var pegaSalaDaLista = listaSala.Where(x => x.ID == sala.Smtp).FirstOrDefault();
                            if (pegaSalaDaLista != null)
                            {
                                if (!pegaSalaDaLista.EnviouEmail15)
                                {
                                    //enviouEmailAviso = true;
                                    new SalaDeReuniaoBS().AlertaSalaVazia(storeId, smtp);
                                    pegaSalaDaLista.EnviouEmail15 = true;
                                    if (debug)
                                    {
                                        Console.WriteLine(" ");
                                        Console.WriteLine("Informei aos seus membros que a sala encontra-se vazia.");
                                    }
                                }
                            }
                        }
                    }
                    //
                    break;

                case StatusDisponibilidade.EmReuniao30:
                    //
                    if (debug)
                    {
                        Console.WriteLine("Opa! Encontrei um evento que indica reunião com 30 minutos de vida.");
                        Console.WriteLine(" ");
                        Console.WriteLine("Verificando pelo dispositivo se existe alguém na sala... um momento...");
                    }
                    bool arduinoStatus  = true;
                    var  salasDeReuniao = GetSalas().Result;
                    var  procurarSala   = salasDeReuniao.Where(x => x.Smtp.ToLower().Equals(sala.Smtp.ToLower())).FirstOrDefault();
                    if (procurarSala != null)
                    {
                        arduinoStatus = procurarSala.HasPeople == null ? false : Convert.ToBoolean(procurarSala.HasPeople);
                    }
                    if (!arduinoStatus)
                    {
                        if (debug)
                        {
                            Console.WriteLine(" ");
                            Console.WriteLine("Opa! Verifiquei ainda que não existem pessoas na sala.");
                        }
                        foreach (var evento in sala.Status.ListaEventos)
                        {
                            if (debug)
                            {
                                Console.WriteLine(" ");
                                Console.WriteLine("O assunto dela é " + evento.Details.Subject);
                            }
                            storeId = evento.Details.StoreId;
                            smtp    = sala.Smtp;
                            var cancelou = new SalaDeReuniaoBS().CancelarEvento(storeId, smtp);
                            if (cancelou)
                            {
                                var pegaSalaDaLista = listaSala.Where(x => x.ID == sala.Smtp).FirstOrDefault();
                                if (pegaSalaDaLista != null)
                                {
                                    pegaSalaDaLista.EnviouEmail15 = false;
                                    pegaSalaDaLista.EnviouEmail30 = true;
                                }

                                if (debug)
                                {
                                    Console.WriteLine(" ");
                                    Console.WriteLine("Reunião cancelada e seus membros notificados.");
                                }
                            }
                        }
                    }
                    break;

                default:
                    if (debug)
                    {
                        Console.WriteLine(string.Format("Nada a processar para a sala de reunião {0}.", sala.Smtp.ToString()));
                    }
                    break;
                }
            }
            disponibilidade = null;
        }
Exemplo n.º 3
0
        public static void Disponibilidade()
        {
            var disponibilidade = new SalaDeReuniaoBS().obterDisponibilidadeSalaReuniao();

            if (disponibilidade != null && disponibilidade.Count > 0)
            {
                System.Console.Clear();
                System.Console.WriteLine("========================================");
                System.Console.WriteLine("           STATUS FROM ROOMS            ");
                System.Console.WriteLine(
                    string.Format("       UTC = {0}", DateTime.Now.ToUniversalTime()));
                System.Console.WriteLine("========================================");
                foreach (var item in disponibilidade)
                {
                    string situacao = "";

                    if (item.Status.StatusDisponibilidade == StatusDisponibilidade.EmReuniao)
                    {
                        // verifica status do arduino
                        // se não tiver ninguém na sala, envia e-mail avisando
                        bool arduinoStatus = false;
                        if (arduinoStatus)
                        {
                            situacao = "Reunião encontrada com pessoas.";
                        }
                        else
                        {
                            situacao = "Reunião iniciada há mais de 15 minutos e menos de 30, sem pessoas na sala. Enviamos um e-mail de alerta informando que a reunião será cancelada em 15 minutos.";
                            //new SendMailBS().Sendmail("*****@*****.**", situacao);
                        }
                    }

                    if (item.Status.StatusDisponibilidade == StatusDisponibilidade.EmReuniao30)
                    {
                        // verifica status do arduino
                        // se não tiver ninguém na sala, envia e-mail avisando que a reunião está sendo cancelada pelo Ímpeto Conference Auditor
                        bool arduinoStatus = false;
                        if (arduinoStatus)
                        {
                            situacao = "Reunião iniciada há mais de 30 minutos com pessoas.";
                        }
                        else
                        {
                            situacao = "Reunião iniciada há mais de 30 minutos SEM pessoas na sala. Enviamos um e-mail de alerta informando que a reunião foi cancelada.";
                            //new SendMailBS().Sendmail("*****@*****.**",situacao);
                        }
                    }

                    System.Console.WriteLine("NAME       = " + (item.Nome != null ? item.Nome.ToString() : ""));
                    System.Console.WriteLine("SMTP       = " + item.Smtp.ToString());
                    System.Console.WriteLine("TYPE       = " + item.Tipo.ToString());
                    System.Console.WriteLine("STATUS     = " + item.Status.StatusDisponibilidade.ToString());
                    System.Console.WriteLine("SUGGESTION = " + item.Status.SugestaoProximaReuniao.ToString());
                    System.Console.WriteLine("MESSAGE    = " + item.Status.Mensagem.ToString());
                    System.Console.WriteLine("PLOFT FLAG = " + situacao);
                    System.Console.WriteLine("===================================");
                }
            }
            else
            {
                System.Console.WriteLine("No rooms were found.");
            }
        }
Exemplo n.º 4
0
        public ActionResult GetExchangeRooms(int?id)
        {
            var usuario = db.ClienteModels.FirstOrDefault(u => u.Smtp == User.Identity.Name);

            if ((id == null) || (id != usuario.Codigo))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            int codigoCliente = Convert.ToInt32(id);

            var cliente = db.ClienteModels.Where(t => t.Codigo == codigoCliente).FirstOrDefault();

            string email = cliente.Smtp;
            string senha = cliente.Senha;

            Configuration.svcExchange.FusionExchangeServiceClient client = new Configuration.svcExchange.FusionExchangeServiceClient();

            #region Obter Disponibilidade

            if (cliente != null && !string.IsNullOrEmpty(cliente.Smtp))
            {
                var disponibilidade = client.obterDisponibilidadeTimeZoneFull(email, senha, "E. South America Standard Time");

                if (disponibilidade.Count() > 0)
                {
                    string listagem = "<table class='table' width='90%'>";

                    listagem += "<tr>";
                    listagem += "<td>SMTP</td>";
                    listagem += "<td>STATUS</td>";
                    listagem += "</tr>";

                    foreach (var sala in disponibilidade)

                    {
                        listagem += "<tr>";
                        listagem += "<td>" + sala.Smtp + "</td>";
                        listagem += "<td>" + sala.Status.StatusDisponibilidade.ToString() + "</td>";
                        listagem += "</tr>";
                    }
                    listagem += "</table>";

                    ViewBag.O365 = listagem;
                }
                else
                {
                    string listagem  = string.Empty;
                    var    roomLists = new SalaDeReuniaoBS().getRoomLists();
                    if (roomLists != null && roomLists.Count() > 0)
                    {
                        foreach (var room in roomLists)
                        {
                            var rooms = new SalaDeReuniaoBS().getRooms(room.ToString());
                            listagem  = "<table class='table' width='90%'>";
                            listagem += "<tr>";
                            listagem += "<td>SMTP</td>";
                            listagem += "</tr>";
                            foreach (var item in rooms)
                            {
                                listagem += "<tr>";
                                listagem += "<td>" + item.ToString() + "</td>";
                                listagem += "</tr>";
                            }
                            listagem += "</table>";
                        }
                    }
                    else
                    {
                        listagem  = "<table class='table' width='90%'>";
                        listagem += "<tr>";
                        listagem += "<td>Não foram encontradas salas de reunião disponíveis.</td>";
                        listagem += "</tr>";
                        listagem += "</table>";
                    }
                    ViewBag.O365 = listagem;
                }
            }
            else
            {
                string listagem = "<table class='table' width='90%'>";
                listagem    += "<tr>";
                listagem    += "<td>Não existem dispositivos vinculados à(s) sala(s) de reunião.</td>";
                listagem    += "</tr>";
                listagem    += "</table>";
                ViewBag.O365 = listagem;
            }
            #endregion

            return(View());
        }
Exemplo n.º 5
0
        public void processarSalasDeReuniao()
        {
            #region Criar Arquivo de Log
            var path = Directory.GetCurrentDirectory() + "\\Logs";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            string     arquivo = @path + "\\SalaDeReuniao_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log";
            TextWriter log     = File.CreateText(arquivo);
            #endregion

            SalaDeReuniaoContexto SalaDeReuniaoContexto = new SalaDeReuniaoContexto();

            var salas = SalaDeReuniaoContexto.DispositivoModels
                        .Include(x => x.Cliente)
                        .Where(x => x.Ativo == true && x.CodigoCliente != null && x.Smtp != "")
                        .ToList();

            if (salas.Count > 0)
            {
                foreach (var sala in salas)
                {
                    string storeId = "";
                    string smtp    = "";

                    var client = new svcExchange.FusionExchangeServiceClient();


                    var disponibilidadeSalaDispositivo = client.obterDisponibilidadeExchange(sala.Cliente.Smtp,
                                                                                             sala.Cliente.Senha,
                                                                                             sala.Smtp,
                                                                                             sala.TimeZone);

                    try
                    {
                        gravarDisponibilidade(disponibilidadeSalaDispositivo);
                    }
                    catch { }

                    bool enviouEmailAviso = false;

                    switch (disponibilidadeSalaDispositivo.StatusDisponibilidade)
                    {
                    case StatusDisponibilidade.EmReuniao:
                        //
                        log.WriteLine("Opa! Encontrei um evento que indica reunião com 15 minutos de vida.");

                        bool arduinoStatusAviso  = true;
                        var  salasDeReuniaoAviso = GetSalas().Result;
                        var  procurarSalaAviso   = salasDeReuniaoAviso.Where(x => x.Smtp.ToLower().Equals(sala.Serial.ToLower()))
                                                   .FirstOrDefault();

                        if (procurarSalaAviso != null)
                        {
                            if (procurarSalaAviso.DataAtualizacao < DateTime.Now.AddMinutes(-3))
                            {
                                string msg = "O dispositivo " + sala.Serial + " está sem atualizar o status há mais de 3 minutos.";
                                notificarNaoFuncionamento(sala.Serial, msg);
                                break;
                            }
                            else
                            {
                                arduinoStatusAviso = procurarSalaAviso.HasPeople == null ? false : Convert.ToBoolean(procurarSalaAviso.HasPeople);
                            }
                        }



                        if (!arduinoStatusAviso)
                        {
                            log.WriteLine("Opa! Verifiquei ainda que não existem pessoas na sala.");
                            foreach (var evento in disponibilidadeSalaDispositivo.ListaEventos)
                            {
                                log.WriteLine("O assunto dela é " + evento.Details.Subject);

                                storeId = evento.Details.StoreId;
                                smtp    = sala.Smtp;

                                // Obtém a informação se o e-mail de AVISO já foi enviado anteriormente
                                var emailEnviado = SalaDeReuniaoContexto.DisponibilidadeEmailModels.Where(x => x.Smtp.Equals(smtp) && x.StoreId.Equals(storeId) && x.StatusEnvio.Equals("A")).FirstOrDefault();
                                enviouEmailAviso = (emailEnviado != null);

                                if (!enviouEmailAviso)
                                {
                                    enviouEmailAviso = true;

                                    var bs = new SalaDeReuniaoBS();
                                    bs.email = sala.Cliente.Smtp;
                                    bs.senha = sala.Cliente.Senha;
                                    bs.AlertaSalaVazia(storeId, smtp);

                                    try
                                    {
                                        // Registra envio na tabela
                                        var email = new ExchangeAvaiabilityEmail(smtp, storeId, "A");
                                        SalaDeReuniaoContexto.DisponibilidadeEmailModels.Add(email);
                                        SalaDeReuniaoContexto.SaveChanges();
                                    }
                                    catch { }

                                    log.WriteLine("Informei aos seus membros que a sala encontra-se vazia.");
                                }
                                else
                                {
                                    log.WriteLine("Já enviei o aviso de 15 minutos de reunião anteriormente. O status permanece o mesmo.");
                                }
                            }
                        }
                        //
                        break;

                    case StatusDisponibilidade.EmReuniao30:
                        //
                        log.WriteLine("Opa! Encontrei um evento que indica reunião com 30 minutos de vida.");
                        log.WriteLine("Verificando pelo dispositivo se existe alguém na sala... um momento...");

                        bool arduinoStatus  = true;
                        var  salasDeReuniao = GetSalas().Result;
                        var  procurarSala   = salasDeReuniao.Where(x => x.Smtp.ToLower().Equals(sala.Serial.ToLower())).FirstOrDefault();

                        if (procurarSala != null)
                        {
                            if (procurarSala.DataAtualizacao < DateTime.Now.AddMinutes(-3))
                            {
                                string msg = "O dispositivo " + sala.Serial + " está sem atualizar o status há mais de 3 minutos.";
                                notificarNaoFuncionamento(sala.Serial, msg);
                                break;
                            }
                            else
                            {
                                arduinoStatus = procurarSala.HasPeople == null ? false : Convert.ToBoolean(procurarSala.HasPeople);
                            }
                        }

                        if (!arduinoStatus)
                        {
                            log.WriteLine("Opa! Verifiquei ainda que não existem pessoas na sala.");
                            foreach (var evento in disponibilidadeSalaDispositivo.ListaEventos)
                            {
                                log.WriteLine("O assunto dela é " + evento.Details.Subject);

                                storeId = evento.Details.StoreId;
                                smtp    = sala.Smtp;

                                var bs = new SalaDeReuniaoBS();
                                bs.email = sala.Cliente.Smtp;
                                bs.senha = sala.Cliente.Senha;

                                try
                                {
                                    var email = new ExchangeAvaiabilityEmail(smtp.Trim(), storeId.Trim(), "C");
                                    SalaDeReuniaoContexto.DisponibilidadeEmailModels.Add(email);
                                    SalaDeReuniaoContexto.SaveChanges();
                                }
                                catch { }

                                var cancelou = bs.CancelarEvento(storeId, smtp);
                                if (cancelou)
                                {
                                    log.WriteLine("Reunião cancelada e seus membros notificados.");
                                }
                            }
                        }
                        break;

                    default:
                        log.WriteLine(string.Format("Nada a processar para a sala de reunião {0}.", sala.Smtp.ToString()));
                        break;
                    }
                    // END SWITCH
                }
                // END FOREACH
            }
            // END IF COUNT
            else
            {
                log.WriteLine("Nada a processar.");
            }
            log.Flush();
            log.Close();
            log.Dispose();
        }