예제 #1
0
        public FileResult Index(DateTime dtIni, DateTime dtFin)
        {
            dtFin = dtFin.AddDays(1).AddSeconds(-1);

            string caminho = Server.MapPath("~/doc/MODELO_RELATORIO.xlsx");

            using (var db = new TPAContext())
            {
                RelatorioApplication app = new RelatorioApplication(db);
                string saida             = app.GeraRelatorioPadrao(dtIni, dtFin, caminho);
                var    bytes             = System.IO.File.ReadAllBytes(saida);

                try
                {
                    return(File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Relatorio.xlsx"));
                }
                finally
                {
                    if (!string.IsNullOrWhiteSpace(saida) && (System.IO.File.Exists(saida)))
                    {
                        System.IO.File.Delete(saida);
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// traz um dicionário de datas/bool onde o lado bool será true apenas se a data for dia útil
        /// usa um intervalo de datas para trazer um calendário maior
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="dtFim"></param>
        /// <returns></returns>
        public virtual Dictionary <DateTime, bool> GetCalendarioMes(DateTime dt, DateTime dtFim)
        {
            Dictionary <DateTime, bool> result   = new Dictionary <DateTime, bool>();
            List <DateTime>             feriados = new List <DateTime>();

            using (TPAContext db = new TPAContext())
            {
                feriados.AddRange(db.Feriados.Where(f => f.Data >= dt && f.Data <= dtFim).Select(f => f.Data).ToList <DateTime>());
            }

            while (dt <= dtFim)
            {
                if (dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday)
                {
                    result.Add(dt, false);
                }
                else if (feriados.Contains(dt))
                {
                    result.Add(dt, false);
                }
                else
                {
                    result.Add(dt, true);
                }

                dt = dt.AddDays(1);
            }

            return(result);
        }
예제 #3
0
        /// <summary>
        /// sobrecarrega AuthorizeCore e diz se o usuário pode acessar ou não
        /// </summary>
        /// <param name="httpContext">HttpContextBase - contexto da chamada</param>
        /// <returns>bool - true se o usuário estiver autorizado</returns>
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if ((httpContext.Handler != null) && (httpContext.Handler is MvcHandler))
            {
                bool podeAcessar = false;
                using (TPAContext db = new TPAContext())
                {
                    ControleAcesso c = new ControleAcesso(db);

                    try
                    {
                        var    routeData  = ((MvcHandler)httpContext.Handler).RequestContext.RouteData;
                        string actionName = routeData.Values["action"].ToString();

                        string controllerName = routeData.Values["controller"].ToString();

                        podeAcessar = c.PodeAcessar(controllerName, actionName);
                    }
                    catch (Exception err)
                    {
                        LogServices.LogarException(err);
                    }
                }
                return(podeAcessar);
            }
            else
            {
                return(base.AuthorizeCore(httpContext));
            }
        }
예제 #4
0
 /// <summary>
 /// helper estático para verificar nas páginas cshtml se um usuário tem acesso ao controller / action especificados
 /// </summary>
 /// <param name="controllerName">string - nome do controller</param>
 /// <param name="actionName">string - nome da ação</param>
 /// <returns>bool - true se o usuário no contexto tem acesso, false caso contrário</returns>
 public static bool TemAcesso(string controllerName, string actionName)
 {
     using (TPAContext db = new TPAContext())
     {
         ControleAcesso ctrl = new ControleAcesso(db);
         return(ctrl.PodeAcessar(controllerName, actionName));
     }
 }
예제 #5
0
 /// <summary>
 /// helper estático para verificar nas páginas cshtml se um usuário tem acesso ao recurso especificado
 /// </summary>
 /// <param name="nomePermissao">string - nome do recurso/permissão</param>
 /// <returns>bool - true se o usuário no contexto tem acesso, false caso contrário</returns>
 public static bool TemAcesso(string nomePermissao)
 {
     using (TPAContext db = new TPAContext())
     {
         ControleAcesso ctrl = new ControleAcesso(db);
         return(ctrl.PodeAcessar(nomePermissao));
     }
 }
예제 #6
0
 /// <summary>
 /// obtém todos os tipos de atividade em forma de um SelectList
 /// deixando pré selecionada a opção que vier como parâmetro em caso de edição da form
 /// </summary>
 /// <param name="valor">int? - valor que já estava selecionado ou salvo no Model</param>
 /// <returns>SelectList - lista para usar em combos/dropdowns</returns>
 public static SelectList GetTodosTipos(int?valor = null)
 {
     using (TPAContext db = new TPAContext())
     {
         TipoAtividadeRepository rep = new TipoAtividadeRepository(db);
         var        tipo             = rep.GetAll().OrderBy(x => x.Nome).ToList();
         SelectList TipoSelectList   = new SelectList(tipo, "Id", "Nome", valor);
         return(TipoSelectList);
     }
 }
예제 #7
0
        /// <summary>
        /// retorna uma SelectList de usuários com o usuário passado no parâmetro pré selecionado
        /// </summary>
        /// <param name="valores">int? - valor pré selecionado</param>
        /// <returns>SelectList - lista de usuários</returns>
        public static SelectList GetUsuarios(int?valor = null)
        {
            using (TPAContext db = new TPAContext())
            {
                UsuarioRepository rep      = new UsuarioRepository(db);
                List <Usuario>    usuarios = rep.GetAll();

                SelectList result = new SelectList(usuarios, "Id", "FuncionarioNomeOuLogin", valor);
                return(result);
            }
        }
예제 #8
0
        /// <summary>
        /// retorna uma MultiSelectList de usuários com os usuários passados no parâmetro pré selecionados
        /// </summary>
        /// <param name="valores">int[] - valores selecionados</param>
        /// <returns>MultiSelectList - lista múltipla com os usuários</returns>
        public static MultiSelectList GetUsuariosMultiplos(params int[] valores)
        {
            using (TPAContext db = new TPAContext())
            {
                UsuarioRepository rep      = new UsuarioRepository(db);
                List <Usuario>    usuarios = rep.GetAll();

                MultiSelectList result = new MultiSelectList(usuarios, "Id", "FuncionarioNomeOuLogin", valores);
                return(result);
            }
        }
예제 #9
0
        public override Task <SignInStatus> PasswordSignInAsync(string userName, string password, bool rememberMe, bool shouldLockout)
        {
            using (TPAContext ctx = new TPAContext())
            {
                var user = ctx.Usuarios.Where(u => u.Login == userName).SingleOrDefault();
                if (!user.Ativo)
                {
                    return(Task.FromResult <SignInStatus>(SignInStatus.Failure));
                }

                return(base.PasswordSignInAsync(userName, password, rememberMe, shouldLockout));
            }
        }
예제 #10
0
 /// <summary>
 /// método estático independente com context próprio para ser executado em jobs
 /// </summary>
 public static void AtualizaAcoesCopiandoDoAssembly()
 {
     try
     {
         Type tipo = Type.GetType("TPA.Presentation.Controllers.TPAController, TPA.Presentation");
         using (TPAContext db = new TPAContext())
         {
             AcaoServices g = new AcaoServices(db);
             g.ImportarDoAssembly(tipo);
             g.AtualizaAdmin();
         }
     }
     catch (Exception err)
     {
         LogServices.LogarException(err);
     }
 }
예제 #11
0
 /// <summary>
 /// dispara alertas de atraso nas atividades diariamente
 /// </summary>
 public static void EnviaAlertasAgendados()
 {
     try
     {
         if (!DevServices.IsDevEnv())
         {
             using (var db = new TPAContext())
             {
                 UsuarioApplication usuApp = new UsuarioApplication(db);
                 usuApp.EnviarTodosOsAlertas(true, true);
             }
         }
     }
     catch (Exception err)
     {
         LogServices.LogarException(err);
     }
 }
예제 #12
0
        /// <summary>
        /// retorna true se a data for dia útil, false se for sábado, domingo e feriado
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public virtual bool IsDiaUtil(DateTime data)
        {
            using (TPAContext db = new TPAContext())
            {
                if (data.DayOfWeek == DayOfWeek.Saturday || data.DayOfWeek == DayOfWeek.Sunday)
                {
                    return(false);
                }

                Feriado feriado = db.Feriados.Where(f => f.Data == data).FirstOrDefault();
                if (feriado != null)
                {
                    return(false);
                }

                return(true);
            }
        }
예제 #13
0
        /// <summary>
        /// dado um login, retorna o usuário
        /// </summary>
        /// <param name="login">string login - o login do usuário, no caso da Tecnun, o e-mail</param>
        /// <returns>UsuarioViewModel - um DTO com login e nome do usuário, para mostrar no topo das páginas</returns>
        public static MeusDadosViewModel GetByLogin(string login)
        {
            MeusDadosViewModel result = new MeusDadosViewModel
            {
                Nome = "Cadastro Incompleto"
            };


            using (TPAContext db = new TPAContext())
            {
                var usu = db.Usuarios.Where(u => u.Login == login).FirstOrDefault();
                if (usu != null)
                {
                    result = Mapper.Map <Usuario, MeusDadosViewModel>(usu);
                }
            }

            return(result);
        }
예제 #14
0
        /// <summary>
        /// obtém todos os nós de projeto em forma de um TFWHierarchicalList
        /// deixando pré selecionada a opção que vier como parâmetro em caso de edição da form
        /// </summary>
        /// <param name="valor">int? - valor que já estava selecionado ou salvo no Model</param>
        /// <returns>TFWHierarchicalList - lista para usar em um combo com simulação de hierarquia no estilo</returns>
        public static TFWHierarchicalList GetNodes(int?valor = null)
        {
            TPAContext          db              = new TPAContext();
            TFWHierarchicalList lstUsuario      = new TFWHierarchicalList();
            TFWHierarchicalList lst             = new TFWHierarchicalList();
            List <int>          idsNodesUsuario = new List <int>();

            var usu       = HttpContext.Current.User.Identity.Name;
            var usuLogado = db.Usuarios.Where(u => u.Login == usu).FirstOrDefault();

            if (usuLogado != null)
            {
                var nodes = usuLogado.NosDoUsuario.ToList();
                if (nodes != null && nodes.Any())
                {
                    foreach (var n in nodes)
                    {
                        lstUsuario.Add(n.Id, n.Pai != null ? n.Pai.Id : new Nullable <int>(), n.Nome);
                    }
                }
            }

            idsNodesUsuario.AddRange(lstUsuario.Select(s => s.Id).ToList());

            foreach (var node in db.ProjectNodes.ToList())
            {
                if (idsNodesUsuario.Contains(node.Id))
                {
                    lst.Add(node.Id, node.Pai_Id != null ? node.Pai_Id : new Nullable <int>(), node.Nome);
                }
                else
                {
                    lst.Add(node.Id, node.Pai != null ? node.Pai.Id : new Nullable <int>(), node.Nome, false);
                }
            }

            return(lst);
        }
예제 #15
0
 /// <summary>
 /// cosntructor principal
 /// </summary>
 /// <param name="context">TPAContext - contexto do EF para as queries</param>
 public ContratoRepository(TPAContext context)
 {
     this._db = context;
 }
예제 #16
0
 /// <summary>
 /// cosntructor principal
 /// </summary>
 /// <param name="context">TPAContext - contexto do EF para as queries</param>
 public FeriadoRepository(TPAContext context)
 {
     this._db = context;
 }
예제 #17
0
 /// <summary>
 /// cosntructor principal
 /// </summary>
 /// <param name="context">TPAContext - contexto do EF para as queries</param>
 public UsuarioRepository(TPAContext context)
 {
     this._db = context;
 }
예제 #18
0
 /// <summary>
 /// constructor padrão, obtém o context
 /// </summary>
 /// <param name="db"></param>
 public AtividadeRepository(TPAContext db)
 {
     _db = db;
 }
예제 #19
0
 /// <summary>
 /// constructor que obtém como parâmetros apenas o context e cria o repository
 /// </summary>
 /// <param name="ctx"></param>
 public AtividadeApplication(TPAContext ctx)
 {
     _db  = ctx;
     _rep = new AtividadeRepository(_db);
 }
예제 #20
0
 /// <summary>
 /// cosntructor principal
 /// </summary>
 /// <param name="context">TPAContext - contexto do EF para as queries</param>
 public AcaoRepository(TPAContext context)
 {
     this._db = context;
 }
예제 #21
0
 /// <summary>
 /// cosntructor principal
 /// </summary>
 /// <param name="context">TPAContext - contexto do EF para as queries</param>
 public ProjectNodeRepository(TPAContext context)
 {
     this._db = context;
 }
예제 #22
0
 /// <summary>
 /// constructor padrão
 /// </summary>
 /// <param name="context">TPAContext passado pelo application</param>
 public RelatorioRepository(TPAContext context)
 {
     this._db = context;
 }
예제 #23
0
 /// <summary>
 /// cosntructor principal
 /// </summary>
 /// <param name="context">TPAContext - contexto do EF para as queries</param>
 public ProjectNodeApplication(TPAContext context)
 {
     this._db = context;
     _rep     = new ProjectNodeRepository(this._db);
 }
예제 #24
0
 /// <summary>
 /// constructor padrão
 /// </summary>
 /// <param name="context">TPAContext passado pelo controller</param>
 public RelatorioApplication(TPAContext context)
 {
     this._db = context;
 }
예제 #25
0
 /// <summary>
 /// construtor padrao passa o contexto
 /// </summary>
 /// <param name="db"></param>
 public ProjectNodeServices(TPAContext db)
 {
     this._db = db;
 }
예제 #26
0
 /// <summary>
 /// constructor padrão que injeta o context do EF
 /// </summary>
 /// <param name="db"></param>
 public ReferenciaRepository(TPAContext db)
 {
     _db = db;
 }
예제 #27
0
 /// <summary>
 /// constructor onde você passa o context
 /// </summary>
 /// <param name="ctx"></param>
 public ControleAcesso(TPAContext ctx)
 {
     this._db = ctx;
 }
예제 #28
0
 /// <summary>
 /// construtor padrão, recebe o context e passa para o objeto application
 /// </summary>
 /// <param name="ctx">TPAContext - context do entity framework</param>
 public ImportaPlanilhaApplication(TPAContext ctx)
 {
     _db      = ctx;
     _ativApp = new AtividadeApplication(_db);
 }
예제 #29
0
 /// <summary>
 /// cosntructor principal
 /// </summary>
 /// <param name="context">TPAContext - contexto do EF para as queries</param>
 public TipoAtividadeRepository(TPAContext context)
 {
     this._db = context;
 }
예제 #30
0
 /// <summary>
 /// constructor que obtém como parâmetros um context e um repository
 /// </summary>
 /// <param name="ctx"></param>
 /// <param name="rep"></param>
 public UsuarioApplication(TPAContext db)
 {
     this._db = db;
 }