private bool ValidaFormularioSearch(RelatorioFolhaPontoSearchViewModel dadosSearch)
        {
            if (dadosSearch.IsDirigente)
            {
                if (String.IsNullOrEmpty(dadosSearch.CpfServidor) && dadosSearch.IdUnidade <= 0)
                {
                    SetaErro("O nome do servidor ou a unidade devem ser preenchidos.");
                    return(false);
                }
            }
            else
            {
                if (String.IsNullOrEmpty(dadosSearch.CpfServidor))
                {
                    SetaErro("O nome do servidor deve ser preenchido.");
                    return(false);
                }
                if (dadosSearch.IdUnidade <= 0)
                {
                    SetaErro("A unidade deve ser preenchida.");
                    return(false);
                }
            }
            if (dadosSearch.DataInicial != null && dadosSearch.DataFinal != null)
            {
                if (dadosSearch.DataInicial >= dadosSearch.DataFinal)
                {
                    SetaErro("A data inicial deve ser posterior à data final");
                    return(false);
                }
            }

            return(true);
        }
 private void CarregarCombosFiltrosRelatorio(RelatorioFolhaPontoSearchViewModel relatorioSearch, UsuarioViewModel user)
 {
     if (!relatorioSearch.IsDirigente)
     {
         relatorioSearch.NomeServidor = user.Nome.TrimEnd();
         relatorioSearch.CpfServidor  = user.CPF;
     }
     else
     {
         TempData["NomesSubordinados"] = ListarNomesPorUnidade();
     }
     TempData["Unidades"] = ListarUnidades();
 }
        // GET: RelatorioApoioFolhaPonto
        public ActionResult Index()
        {
            var relatorioSearch = new RelatorioFolhaPontoSearchViewModel();
            var user            = getUserLogado();

            relatorioSearch.NomeUnidade = user?.nomeUnidade;
            relatorioSearch.IdUnidade   = user.Unidade;
            relatorioSearch.DataInicial = null;
            relatorioSearch.DataFinal   = null;
            relatorioSearch.IsDirigente = user.IsDirigente;
            CarregarCombosFiltrosRelatorio(relatorioSearch, user);
            return(View(relatorioSearch));
        }
 private List <string> GetCpfServidoresEmissao(RelatorioFolhaPontoSearchViewModel dadosSearch)
 {
     if (dadosSearch.CpfServidor != null)
     {
         return(new List <string> {
             dadosSearch.CpfServidor
         });
     }
     else if (dadosSearch.IdUnidade > 0)
     {
         return(_usuarioservice.ObterTodos(dadosSearch.IdUnidade).Select(c => c.CPF).ToList());
     }
     else
     {
         return(new List <string>());
     }
 }
        public ActionResult Index(RelatorioFolhaPontoSearchViewModel dadosSearch)
        {
            ModelState.Clear();
            var usuarioLogado = getUserLogado();

            dadosSearch.IsDirigente = usuarioLogado.IsDirigente;
            if (ValidaFormularioSearch(dadosSearch))
            {
                var listaUsuarios = GetCpfServidoresEmissao(dadosSearch);
                var folhas        = GetFolhasPonto(listaUsuarios, dadosSearch);
                return(View("EmiteRelatorio", folhas));
            }
            else
            {
                CarregarCombosFiltrosRelatorio(dadosSearch, usuarioLogado);
                return(View(dadosSearch));
            }
        }
        private IEnumerable <RelatorioFolhaPontoResultsViewModel> GetFolhasPonto(List <string> listaUsuarios, RelatorioFolhaPontoSearchViewModel dadosSearch)
        {
            var folhas = new List <RelatorioFolhaPontoResultsViewModel>();

            foreach (string cpf in listaUsuarios)
            {
                var cronogramas = GetCronogramas(cpf, dadosSearch);


                var idsPactos = RetornaIdsPactos(cronogramas.Select(x => x.IdsPacto).ToList());

                var nomeUnidades = RetornaNomesUnidades(_unidadeAppService.Buscar(new UnidadeFiltroViewModel
                {
                    IdsPactos = idsPactos
                }).Lista);

                if (cronogramas.Any())
                {
                    folhas.Add(new RelatorioFolhaPontoResultsViewModel()
                    {
                        Servidor        = GetDadosServidor(cpf, nomeUnidades),
                        ListCronogramas = cronogramas
                    });
                }
            }
            return(folhas);
        }
        private IEnumerable <DiaCronogramaConsolidadoViewModel> GetCronogramas(string cpf, RelatorioFolhaPontoSearchViewModel dadosSearch)
        {
            var cronogramas = _pactoservice.ObterTodosCronogramasCpfLogado(cpf, _pactoservice.ObterSituacoesPactoValido(),
                                                                           dadosSearch.DataInicial, dadosSearch.DataFinal, dadosSearch.IdUnidade);

            return(cronogramas.GroupBy(c => c.DataCronograma)
                   .Select(cd => new DiaCronogramaConsolidadoViewModel
            {
                DataCronograma = cd.First().DataCronograma,
                HorasCronograma = TimeSpan.FromHours(cd.Sum(cc => cc.HorasCronograma.TotalHours)),
                IdsPacto = string.Join(", ", cd.Select(cc => cc.IdPacto))
            }).ToList());
        }