} // EF protected Votacao(Periodo periodoPrevisto, Ciclo ciclo, Dimensionamento dimensionamento) : base() { PeriodoPrevisto = periodoPrevisto ?? throw new CustomException("O período previsto para a realização da votação precisa ser informado"); if (!periodoPrevisto.DataInicio.HasValue) { throw new CustomException("A data de ínicio da votação deve ser informada."); } if (!periodoPrevisto.DataFim.HasValue) { throw new CustomException("A data de término da votação deve ser informada."); } PeriodoRealizado = new Periodo(null, null); Dimensionamento = dimensionamento ?? throw new CustomException("O dimensionamento da eleição precisa ser informado."); Ciclo = ciclo ?? throw new CustomException("O ciclo da votação precisa ser informado."); CicloId = ciclo.Id; }
public IEnumerable <Elegivel> ApurarVotos(Grupo grupo) { ValidarPeriodoRealizadoParaApuracao(); var elegiveis = RetornarElegiveisOrdenadosPorPontuacao().Where(e => e.Associado.Grupo.Equals(grupo)); if (!elegiveis.Any()) { return(new List <Elegivel>()); } var qtda = Dimensionamento.CalcularQuantidade(Ciclo.Associados.Count(a => a.Grupo.Equals(grupo))); foreach (var elegivel in elegiveis.Take(qtda)) { elegivel.RegistrarApuracao(Enums.EApuracao.Eleito); } foreach (var elegivel in elegiveis.Skip(qtda)) { elegivel.RegistrarApuracao(Enums.EApuracao.NaoEleito); } return(elegiveis); }
public VotacaoAssociadoSuperFantastico( Periodo periodoPrevisto, Ciclo ciclo, Dimensionamento dimensionamento) : base(periodoPrevisto, ciclo, dimensionamento) { }
} // EF public Ciclo( int ano, int semestre, string descricao, Periodo periodoVotacaoAssociadoFantastico, Periodo periodoVotacaoAssociadoSuperFantastico, Empresa empresa, Dimensionamento dimensionamentoAssociadoFantastico = null, Dimensionamento dimensionamentoSuperAssociadoFantastico = null) : base() { if (ano < 2010) { throw new CustomException("O ano deve ser maior que 2010."); } if (semestre != 1 && semestre != 2) { throw new CustomException("O semestre deve ser 1 ou 2."); } Ano = ano; Semestre = semestre; Descricao = descricao; Empresa = empresa ?? throw new CustomException("A empresa precisa ser informada para a criação de um novo ciclo."); EmpresaId = empresa.Id; DataInicio = DateTime.Now; if (periodoVotacaoAssociadoFantastico == null) { throw new CustomException("O período previsto para a votação dos associados fantásticos deve ser informado."); } if (periodoVotacaoAssociadoSuperFantastico == null) { throw new CustomException("O período previsto para a votação dos associados super fantásticos deve ser informado."); } VotacaoAssociadoFantastico votacaoAssociadoFantastico; if (dimensionamentoAssociadoFantastico == null) { votacaoAssociadoFantastico = new VotacaoAssociadoFantastico(periodoVotacaoAssociadoFantastico, this); } else { votacaoAssociadoFantastico = new VotacaoAssociadoFantastico(periodoVotacaoAssociadoFantastico, this, dimensionamentoAssociadoFantastico); } VotacaoAssociadoSuperFantastico votacaoAssociadoSuperFantastico; if (dimensionamentoSuperAssociadoFantastico == null) { votacaoAssociadoSuperFantastico = new VotacaoAssociadoSuperFantastico(periodoVotacaoAssociadoSuperFantastico, this); } else { votacaoAssociadoSuperFantastico = new VotacaoAssociadoSuperFantastico(periodoVotacaoAssociadoSuperFantastico, this, dimensionamentoSuperAssociadoFantastico); } if (periodoVotacaoAssociadoFantastico.DataFim >= periodoVotacaoAssociadoSuperFantastico.DataInicio) { throw new CustomException("A data de início da votação do associado fantástico deve ser posterior à data de início da votação do associado super fantástico."); } _votacoes.Add(votacaoAssociadoFantastico); _votacoes.Add(votacaoAssociadoSuperFantastico); }