public IEnumerable <VisitanteAcessoViewModel> ListVisitanteAcesso(Auth value)
        {
            Auth a = ValidarToken(value);

            if (a.Code != 0)
            {
                VisitanteAcessoViewModel visitanteAcessoViewModel = new VisitanteAcessoViewModel()
                {
                    mensagem = new Validate()
                    {
                        Code    = 202,
                        Message = "Acesso Negado. Suas credencias não estão autorizadas para executar esta operação."
                    }
                };
                List <VisitanteAcessoViewModel> ret = new List <VisitanteAcessoViewModel>();
                ret.Add(visitanteAcessoViewModel);
                return(ret);
            }

            // Listar
            PageSize = PageSize == null || PageSize == "" ? "8" : PageSize;
            Facade <VisitanteAcessoViewModel, VisitanteAcessoModel, ApplicationContext> facade = new Facade <VisitanteAcessoViewModel, VisitanteAcessoModel, ApplicationContext>();
            IEnumerable <VisitanteAcessoViewModel> list = facade.List(new ListViewVisitanteAcesso(), 0, int.Parse(PageSize), value.Token);

            return(list);
        }
        public Auth DeleteAcesso(VisitanteAcessoViewModel value)
        {
            Auth auth = new Auth()
            {
                Code     = 0,
                Mensagem = "Sucesso!",
                Token    = value.sessionId
            };

            VisitanteAcessoViewModel visitanteViewModel = (VisitanteAcessoViewModel)ValidarToken(value);

            if (visitanteViewModel.mensagem.Code != 0)
            {
                auth.Code     = 202;
                auth.Mensagem = "Acesso Negado.";
                return(auth);
            }

            SessaoLocal se = DWMSessaoLocal.GetSessaoLocal(value.sessionId);

            int?codUnidade    = 0;
            int?codEdificacao = 0;
            int empresaId     = se.empresaId;

            foreach (var un in se.Unidades)
            {
                codUnidade    = un.UnidadeID;
                codEdificacao = un.EdificacaoID;
            }

            VisitanteAcessoViewModel result = new VisitanteAcessoViewModel()
            {
                uri          = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString(),
                VisitanteID  = value.VisitanteID,
                AcessoID     = value.AcessoID,
                sessionId    = value.sessionId,
                CondominioID = value.CondominioID,
                EdificacaoID = codEdificacao,
                UnidadeID    = codUnidade,
            };

            try
            {
                FacadeLocalhost <VisitanteAcessoViewModel, VisitanteAcessoModel, ApplicationContext> facade = new FacadeLocalhost <VisitanteAcessoViewModel, VisitanteAcessoModel, ApplicationContext>();
                facade.Save(result, App_Dominio.Enumeracoes.Crud.EXCLUIR);
            }
            catch (Exception e)
            {
                auth.Mensagem = e.Message;
                Console.Write(e.Message);
            }

            return(auth);
        }
        public IEnumerable <EmailLogViewModel> List(params object[] param)
        {
            EmailLogViewModel        log    = (EmailLogViewModel)param [0];
            List <EmailLogViewModel> result = new List <EmailLogViewModel>();

            if (log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.INFORMATIVO || log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.OUTROS)
            {
                result = (from con in db.Condominos
                          join und in db.CondominoUnidades on con.CondominoID equals und.CondominoID
                          join gru in db.GrupoCondominoUsuarios on con.CondominoID equals gru.CondominoID into GRU
                          from gru in GRU.DefaultIfEmpty()
                          where con.CondominioID == sessaoCorrente.empresaId &&
                          und.CondominioID == sessaoCorrente.empresaId &&
                          und.DataFim == null && (!log.EdificacaoID.HasValue || (und.EdificacaoID == log.EdificacaoID)) && (!log.UnidadeID.HasValue || und.UnidadeID == log.UnidadeID) &&
                          (!log.GrupoCondominoID.HasValue || gru.GrupoCondominoID == log.GrupoCondominoID)
                          select new EmailLogViewModel()
                {
                    Nome = con.Nome,
                    Email = con.Email
                }).Union(from con in db.Condominos
                         join cre in db.Credenciados on con.CondominoID equals cre.CondominoID
                         join und in db.CondominoUnidades on con.CondominoID equals und.CondominoID
                         join gru in db.GrupoCondominoUsuarios on con.CondominoID equals gru.CondominoID into GRU
                         from gru in GRU.DefaultIfEmpty()
                         where con.CondominioID == sessaoCorrente.empresaId &&
                         und.CondominioID == sessaoCorrente.empresaId &&
                         und.DataFim == null && (!log.EdificacaoID.HasValue || und.EdificacaoID == log.EdificacaoID) && (!log.UnidadeID.HasValue || und.UnidadeID == log.UnidadeID) &&
                         cre.Email != null && cre.Email.Trim() != "" &&
                         (!log.GrupoCondominoID.HasValue || gru.GrupoCondominoID == log.GrupoCondominoID)
                         select new EmailLogViewModel()
                {
                    Nome  = cre.Nome,
                    Email = cre.Email
                }).ToList();
            }
            else if (log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.CADASTRO_CREDENCIADO ||
                     log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.FORGOT ||
                     log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.ATIVACAO_CONDOMINO)
            {
                result.Add(log);
            }
            else if (log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.CHAMADO)
            {
                ChamadoViewModel  r = (ChamadoViewModel)log.Repository;
                EmailLogViewModel l = new EmailLogViewModel()
                {
                    UsuarioID = r.UsuarioID,
                    Nome      = r.NomeUsuario,
                    Email     = r.LoginUsuario
                };

                if (r.FilaAtendimentoID != DWMSessaoLocal.FilaCondominoID(sessaoCorrente, db))
                {
                    if (!r.UsuarioFilaID.HasValue)
                    {
                        // Fila de direcioinamento do chamado
                        result = (from usu in db.FilaAtendimentoUsuarios
                                  where usu.FilaAtendimentoID == r.FilaAtendimentoID
                                  select new EmailLogViewModel()
                        {
                            UsuarioID = usu.UsuarioID,
                            Nome = usu.Nome,
                            Email = usu.Login
                        }).ToList();
                    }
                    else
                    {
                        // Responsável pelo chamado
                        EmailLogViewModel responsavel = new EmailLogViewModel()
                        {
                            UsuarioID = r.UsuarioFilaID,
                            Nome      = r.NomeUsuarioFila,
                            Email     = r.LoginUsuarioFila
                        };
                        result.Add(responsavel);
                    }
                }
                else
                {
                    // Encaminhar para o condômino
                    EmailLogViewModel condomino = new EmailLogViewModel()
                    {
                        UsuarioID = r.UsuarioFilaID,
                        Nome      = r.NomeUsuarioFila,
                        Email     = r.LoginUsuarioFila
                    };

                    result.Add(condomino);

                    // Encaminhar para o credenciado
                    if (r.CredenciadoID.HasValue && r.CredenciadoID > 0)
                    {
                        Credenciado       cred        = db.Credenciados.Find(r.CredenciadoID);
                        EmailLogViewModel credenciado = new EmailLogViewModel()
                        {
                            UsuarioID = cred.UsuarioID,
                            Nome      = cred.Nome,
                            Email     = cred.Email
                        };

                        result.Add(credenciado);
                    }
                }

                result.Add(l);
            }
            else if (log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.FORGOT)
            {
            }
            else if (log.EmailTipoID == (int)Enumeracoes.Enumeradores.EmailTipo.PORTARIA)
            {
                VisitanteAcessoViewModel a = (VisitanteAcessoViewModel)log.Repository;

                #region Condômino
                EmailLogViewModel cond = new EmailLogViewModel()
                {
                    UsuarioID = sessaoCorrente.usuarioId,
                    Nome      = seguranca_db.Usuarios.Find(sessaoCorrente.usuarioId).nome,
                    Email     = sessaoCorrente.login
                };

                result.Add(cond);
                #endregion

                #region Visitante
                if (!String.IsNullOrEmpty(a.Visitante.Email))
                {
                    EmailLogViewModel vis = new EmailLogViewModel()
                    {
                        UsuarioID = 0,
                        Nome      = a.Visitante.Nome,
                        Email     = a.Visitante.Email
                    };

                    result.Add(vis);
                }
                #endregion
            }

            return(result);
        }
        public Auth CreateVisitanteAcesso(VisitanteAcessoViewModel value)
        {
            Auth auth = new Auth()
            {
                Code     = 0,
                Mensagem = "Sucesso!"
            };

            VisitanteAcessoViewModel visitanteAcessoViewModel = (VisitanteAcessoViewModel)ValidarToken(value);

            if (visitanteAcessoViewModel.mensagem.Code != 0)
            {
                auth.Code     = 202;
                auth.Mensagem = "Acesso Negado.";
                return(auth);
            }

            SessaoLocal se            = DWMSessaoLocal.GetSessaoLocal(value.sessionId);
            int?        codUnidade    = 0;
            int?        codEdificacao = 0;
            int         empresaId     = se.empresaId;

            foreach (var un in se.Unidades)
            {
                codUnidade    = un.UnidadeID;
                codEdificacao = un.EdificacaoID;
            }

            VisitanteAcessoViewModel result = new VisitanteAcessoViewModel()
            {
                AcessoID        = value.AcessoID,
                uri             = this.ControllerContext.Controller.GetType().Name.Replace("Controller", "") + "/" + this.ControllerContext.RouteData.Values["action"].ToString(),
                CondominioID    = se.empresaId,
                empresaId       = se.empresaId,
                EdificacaoID    = codEdificacao,
                UnidadeID       = codUnidade,
                sessionId       = value.sessionId,
                HoraInicio      = value.HoraInicio,
                HoraLimite      = value.HoraLimite,
                DataAcesso      = value.DataAcesso,
                DataInclusao    = Funcoes.Brasilia(),
                Observacao      = value.Observacao,
                Interfona       = value.Interfona,
                VisitanteID     = value.VisitanteID,
                DataAutorizacao = value.DataAutorizacao,
            };

            try
            {
                FacadeLocalhost <VisitanteAcessoViewModel, VisitanteAcessoModel, ApplicationContext> facade = new FacadeLocalhost <VisitanteAcessoViewModel, VisitanteAcessoModel, ApplicationContext>();

                if (result.AcessoID == 0)
                {
                    facade.Save(result, App_Dominio.Enumeracoes.Crud.INCLUIR);
                }
                else
                {
                    facade.Save(result, App_Dominio.Enumeracoes.Crud.ALTERAR);
                }
            }
            catch (Exception e)
            {
                Console.Write(e.Message);
            }

            auth.Code     = result.mensagem.Code.GetValueOrDefault();
            auth.Mensagem = result.mensagem.Message;

            return(auth);
        }