/// <summary>
        /// Obtem todas as salas de reunião e suas disponibilidades
        /// /*ATENCAO*/ CODIGO IMPORTANTE DA REGRA DE NEGOCIO. CUIDADO.
        /// </summary>
        /// <returns></returns>
        public List <ResultadoDisponibilidadeSalaReuniao> obterDisponibilidadeSalaReuniao(string zoneId = "")
        {
            List <ResultadoDisponibilidadeSalaReuniao> retorno = new List <ResultadoDisponibilidadeSalaReuniao>();

            try
            {
                // obtem a lista de salas de reuniao
                List <AttendeeInfo> listaParticipantes = getSalasDeReuniao(this.service);

                foreach (var salaDeReuniao in listaParticipantes)
                {
                    ResultadoDisponibilidadeSalaReuniao resultado = new ResultadoDisponibilidadeSalaReuniao();
                    resultado.Nome = salaDeReuniao.SmtpAddress;
                    resultado.Smtp = salaDeReuniao.SmtpAddress;
                    resultado.Tipo = salaDeReuniao.AttendeeType;

                    if (zoneId == null || zoneId == "")
                    {
                        resultado.Status = obterDisponibilidadeExchange(salaDeReuniao.SmtpAddress);
                    }
                    else
                    {
                        resultado.Status = obterDisponibilidadeExchange(salaDeReuniao.SmtpAddress, zoneId);
                    }
                    resultado.Mensagem = resultado.Status.Mensagem;

                    retorno.Add(resultado);
                }
            }
            catch
            {
                return(retorno);
            }
            return(retorno);
        }
        public List <ResultadoDisponibilidadeSalaReuniao> obterDisponibilidadeSalaReuniao(GetRoomTipo roomTipo = GetRoomTipo.ConfiguracaoPorExchange)
        {
            // FindMailboxes lê através de busca pelo AD
            //var k = FindMailboxes(7);
            //var q = FindMailboxes(8);

            List <ResultadoDisponibilidadeSalaReuniao> retorno = new List <ResultadoDisponibilidadeSalaReuniao>();

            List <AttendeeInfo> listaParticipantes = null;

            try
            {
                switch (roomTipo)
                {
                case GetRoomTipo.ConfiguracaoPorExchange:
                    // obtem a lista de salas de reuniao
                    listaParticipantes = getSalasDeReuniao(this.service);
                    break;

                case GetRoomTipo.ConfiguracaoPorArquivo:
                    // obtem a lista de salas de reuniao pelo web.config
                    listaParticipantes = getSalasDeReuniaoPorWebConfig();
                    break;
                }

                foreach (var sala in listaParticipantes)
                {
                    ResultadoDisponibilidadeSalaReuniao resultado = new ResultadoDisponibilidadeSalaReuniao();
                    resultado.Nome     = sala.SmtpAddress;
                    resultado.Smtp     = sala.SmtpAddress;
                    resultado.Tipo     = MeetingAttendeeType.Room;
                    resultado.Status   = obterDisponibilidadeExchange(sala.SmtpAddress);
                    resultado.Mensagem = resultado.Status.Mensagem;

                    retorno.Add(resultado);
                }
            }
            catch
            {
                return(retorno);
            }

            return(retorno);
        }