static void Main(string[] args) { var k = new SalaDeReuniaoBS().getRoomLists(); foreach (var item in k) { Console.WriteLine(item.ToString()); } }
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; }
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."); } }
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()); }
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(); }