private async Task GerarRecorrenciaParaPeriodos(Aula aula, DateTime inicioRecorrencia, DateTime fimRecorrencia, Usuario usuario) { List <DateTime> diasParaIncluirRecorrencia = new List <DateTime>(); ObterDiasDaRecorrencia(inicioRecorrencia, fimRecorrencia, diasParaIncluirRecorrencia); var datasComRegistro = await repositorioAula.ObterDatasAulasExistentes(diasParaIncluirRecorrencia, aula.TurmaId, aula.DisciplinaId, usuario.CodigoRf); if (datasComRegistro.Count() > 0) { diasParaIncluirRecorrencia.RemoveAll(d => datasComRegistro.Contains(d)); } List <PodePersistirNaDataRetornoEolDto> datasPersistencia = new List <PodePersistirNaDataRetornoEolDto>(); if (diasParaIncluirRecorrencia.Any()) { if (!usuario.EhProfessorCj()) { var datasAtribuicao = await servicoEOL.PodePersistirTurmaNasDatas(usuario.CodigoRf, aula.TurmaId, diasParaIncluirRecorrencia.Select(a => a.Date.ToString("s")).ToArray(), aula.ComponenteCurricularEol.Codigo); if (datasAtribuicao == null || !datasAtribuicao.Any()) { throw new NegocioException("Não foi possível validar datas para a atribuição do professor no EOL."); } else { datasPersistencia = datasAtribuicao.ToList(); } } else { datasPersistencia.AddRange( diasParaIncluirRecorrencia.Select(d => new PodePersistirNaDataRetornoEolDto() { Data = d, PodePersistir = true })); } } await GerarAulaDeRecorrenciaParaDias(aula, usuario, datasPersistencia, datasComRegistro); }
public async Task <bool> PodePersistirTurmaNasDatas(string codigoRf, string turmaId, string disciplinaId, DateTime data, Usuario usuario = null) { if (usuario == null) { usuario = await ObterUsuarioLogado(); } if (!usuario.EhProfessorCj()) { var validacaoData = await servicoEOL.PodePersistirTurmaNasDatas(usuario.CodigoRf, turmaId, new string[] { data.ToString("s") }, long.Parse(disciplinaId)); if (validacaoData == null || !validacaoData.Any()) { throw new NegocioException("Não foi possível obter a validação do professor no EOL."); } return(validacaoData.FirstOrDefault().PodePersistir); } var atribuicaoCj = repositorioAtribuicaoCJ.ObterAtribuicaoAtiva(usuario.CodigoRf); return(atribuicaoCj != null && atribuicaoCj.Any()); }