public ActionResult Index()
        {
            if (!User.Identity.IsAuthenticated) return View();

            var login = User.Identity.Name;
            var funcCo = new FuncionarioCo();
            var menuCo = new MenuCo();

            var func = funcCo.Find(x => x.Login.Equals(login));
            ViewBag.Menu = menuCo.GetMenus(func.Perfil.Peso).Select(x => new MenuViewModel
            {
                Id = x.Id,
                Action = x.Action,
                Controller = x.Controller,
                Peso = x.Peso,
                Imagem = "~/Content/imagem/menu/" + x.Imagem
            }).ToList();
            return View();
        }
        public ActionResult Index(int? page)
        {
            var login = User.Identity.Name;
            var funcCo = new FuncionarioCo();
            var func = funcCo.Find(x => x.Login.Equals(login));            
            var lst = Db.Listar(x=>x.Funcionario.Id == func.Id).Select(x => new FrequenciaListViewModel
            {
                Id = x.Id,
                FuncionarioNome = x.Funcionario.Nome,
                Data = x.Data.ToString("dd/MM/yyyy"),
                Entrada = x.Entrada.ToString(@"hh\:mm"),
                EntradaIntervalo = x.EntradaIntervalo.ToString(@"hh\:mm"),
                SaidaIntervalo = x.SaidaIntervalo.ToString(@"hh\:mm"),
                Saida = x.Saida.ToString(@"hh\:mm")
            }).ToList();

            var pageSize = Extencoes.NumPage;
            var pageNumber = (page ?? 1);

            return View(lst.ToPagedList(pageNumber, pageSize));
        }
        public ActionResult ExebirRelatorios([Bind(Include = "Funcionario,Funcionarioid,Data1,Data2")] RelatorioMetasViewModel relatorio)
        {
            var funcCo = new FuncionarioCo();

            var func = funcCo.Find(x => x.Id == relatorio.Funcionarioid);

            ViewBag.TempoMeta = func.Jornada.TempoMeta;

            if (!ModelState.IsValid) return RedirectToAction("RelatorioMetas");

            var lst =
                Db.Listar(
                    x =>
                        x.Data >= DateTime.Parse(relatorio.Data1) && x.Data <= DateTime.Parse(relatorio.Data2) &&
                        x.Funcionario.Id == relatorio.Funcionarioid)
                        .Select(x => new FrequenciaListViewModel
                        {
                            Id = x.Id,
                            FuncionarioNome = x.Funcionario.Nome,
                            Data = x.Data.ToString("dd/MM/yyyy"),
                            Entrada = x.Entrada.ToString(@"hh\:mm"),
                            EntradaIntervalo = x.EntradaIntervalo.ToString(@"hh\:mm"),
                            SaidaIntervalo = x.SaidaIntervalo.ToString(@"hh\:mm"),
                            Saida = x.Saida.ToString(@"hh\:mm"),
                            HoraTrabalhada = x.HoraTrabalhada
                        }).ToList();

            ViewBag.Total =
                lst.GroupBy(x => x.FuncionarioNome)
                    .Select(
                        x =>
                            new FrequenciaListViewModel
                            {
                                FuncionarioNome = x.Key,
                                HoraTrabalhada = x.Sum(y => y.HoraTrabalhada)
                            }).SingleOrDefault();

            return View(lst);
        }
        private FrequenciaMo GetFrequencia(string login, TipoEntrada tipo)
        {
            var funcC0 = new FuncionarioCo();
            var func = funcC0.Find(x => x.Login.Equals(login));
            var hoje = DateTime.Parse(DateTime.Now.ToShortDateString());
            var hora = DateTime.Now;

            var freqMo = Db.Find(x => x.Data == hoje && x.Funcionario.Id == func.Id) ?? new FrequenciaMo();

            freqMo.Data = hoje;
            freqMo.FuncionarioId = func.Id;

            switch (tipo)
            {
                case TipoEntrada.Entrada:
                    {
                        freqMo.Entrada = new TimeSpan(hora.Hour, hora.Minute, 0);
                        freqMo.IsEntrada = true;
                        break;
                    }
                case TipoEntrada.EntradaIntervalo:
                    {
                        freqMo.EntradaIntervalo = new TimeSpan(hora.Hour, hora.Minute, 0);
                        freqMo.IsSaidaIntervalo = true;
                        break;
                    }
                case TipoEntrada.SaidaIntervalo:
                    {
                        freqMo.SaidaIntervalo = new TimeSpan(hora.Hour, hora.Minute, 0);
                        freqMo.IsVoltaIntervalo = true;
                        break;
                    }
                case TipoEntrada.Saida:
                    {
                        //freqMo.Saida = new TimeSpan(hora.Hour, hora.Minute, 0);
                        freqMo.IsSaida = true;

                        var horaTrabalhada = (freqMo.Saida - freqMo.SaidaIntervalo) +
                                             (freqMo.EntradaIntervalo - freqMo.Entrada);

                        freqMo.HoraTrabalhada = Convert.ToDecimal(horaTrabalhada.TotalHours);
                        break;
                    }
            }

            return freqMo;
        }