Ejemplo n.º 1
0
        private DateTime ObterDiaDaSemanaDoMes(DateTime dataAtual, PadraoRecorrenciaMensal padraoRecorrenciaMensal, DayOfWeek diaDaSemana)
        {
            DateTime primeiroDiaDoMes         = ObterPrimeiroDiaDoMes(dataAtual);
            var      quantidadeDeDiasDaSemana = 0;

            for (DateTime data = primeiroDiaDoMes; quantidadeDeDiasDaSemana < (int)padraoRecorrenciaMensal; data = data.AddDays(1))
            {
                if (data.DayOfWeek == diaDaSemana)
                {
                    quantidadeDeDiasDaSemana++;
                    dataAtual = data;
                }
            }
            return(dataAtual);
        }
Ejemplo n.º 2
0
        private IEnumerable <Evento> ObterRecorrenciaMensal(PadraoRecorrenciaMensal padraoRecorrenciaMensal, DateTime dataInicio, DateTime dataFinal, int?diaOcorrencia, int repeteACada, IEnumerable <DayOfWeek> diasDaSemana)
        {
            var eventos   = new List <Evento>();
            var dataAtual = dataInicio;

            while (dataAtual <= dataFinal)
            {
                dataAtual = ObterProximaDataRecorrenciaMensal(dataAtual, padraoRecorrenciaMensal, diasDaSemana, diaOcorrencia);
                var evento = (Evento)Clone();
                evento.DataInicio  = dataAtual;
                evento.DataFim     = dataAtual;
                evento.EventoPaiId = Id;
                evento.Id          = 0;
                eventos.Add(evento);
                dataAtual = dataAtual.AddMonths(repeteACada);
            }

            return(eventos);
        }
Ejemplo n.º 3
0
 private DateTime ObterProximaDataRecorrenciaMensal(DateTime dataAtual, PadraoRecorrenciaMensal padraoRecorrenciaMensal, IEnumerable <DayOfWeek> diasDaSemana, int?diaOcorrencia)
 {
     if (padraoRecorrenciaMensal != PadraoRecorrenciaMensal.NoDia)
     {
         if (diasDaSemana == null)
         {
             throw new NegocioException("Os dias da semana são obrigatórios para esse tipo de recorrência.");
         }
         if (padraoRecorrenciaMensal == PadraoRecorrenciaMensal.Ultima)
         {
             return(ObterUltimoDiaDaSemanaDoMes(dataAtual, diasDaSemana.FirstOrDefault()));
         }
         dataAtual = ObterDiaDaSemanaDoMes
                         (dataAtual, padraoRecorrenciaMensal, diasDaSemana.FirstOrDefault());
     }
     else
     {
         return(ObterRecorrenciaParaDiaFixo(dataAtual, diaOcorrencia.Value));
     }
     return(dataAtual);
 }