/// <summary>
        /// Método responsável por carregar o total de horas planejadas para o cronograma por oid
        /// </summary>
        /// <param name="oidCronograma">oid de identificação do cronograma selecionado</param>
        /// <returns>retorna o total de horas planejadas </returns>
        public static double ConsultarTotalHorasPlanejadasCronograma(Guid oidCronograma)
        {
            using (WexDb contexto = ContextFactoryManager.CriarWexDb())
            {
                var cronograma = CronogramaDao.ConsultarCronogramaPorOid(contexto, oidCronograma);

                if (cronograma == null)
                {
                    return(0);
                }

                return((from cronogramaTarefa in contexto.CronogramaTarefa
                        join historicoEstimativa in contexto.TarefaHistoricoEstimativa
                        on cronogramaTarefa.OidTarefa equals historicoEstimativa.OidTarefa
                        where cronogramaTarefa.OidCronograma == oidCronograma &&
                        historicoEstimativa.DtPlanejado.Year <= cronograma.DtInicio.Year &&
                        ((historicoEstimativa.DtPlanejado.Month < cronograma.DtInicio.Month) || (historicoEstimativa.DtPlanejado.Month <= cronograma.DtInicio.Month && historicoEstimativa.DtPlanejado.Day <= cronograma.DtInicio.Day)) &&
                        !cronogramaTarefa.CsExcluido && !cronogramaTarefa.Tarefa.CsExcluido
                        orderby historicoEstimativa.DtPlanejado descending
                        select historicoEstimativa)
                       .ToList()
                       .GroupBy(historicoEstimativa => historicoEstimativa.OidTarefa)
                       .Select(historicoEstimativa => historicoEstimativa.FirstOrDefault())
                       .Sum(historicoEstimativa => (double?)historicoEstimativa.NbHoraRestante) ?? 0);
            }
        }
        /// <summary>
        /// Método utilizado para criar uma configuração para um colaborador em um determinado cronograma
        /// </summary>
        /// <param name="contexto">contexto do banco</param>
        /// <param name="login"></param>
        /// <param name="oidCronograma">oid do cronograma atual</param>
        /// <returns>ColaboradorCronogramaConfig para armazenar as configurações do colaborador</returns>
        public static CronogramaColaboradorConfig SalvarCronogramaColaboradorConfig(WexDb contexto, string login, Guid oidCronograma)
        {
            Cronograma cronograma = CronogramaDao.ConsultarCronogramaPorOid(oidCronograma);

            if (cronograma == null)
            {
                return(null);
            }

            Colaborador colaborador = ColaboradorDAO.ConsultarColaborador(login);

            if (colaborador == null)
            {
                return(null);
            }

            CronogramaColaboradorConfig config = ConsultarCronogramaColaboradorConfig(contexto, login, oidCronograma);

            if (config != null)
            {
                return(config);
            }

            config = new CronogramaColaboradorConfig()
            {
                OidCronograma  = cronograma.Oid,
                OidColaborador = colaborador.Oid
            };

            contexto.CronogramaColaboradorConfig.Add(config);
            contexto.SaveChanges();

            return(config);
        }