public async Task <List <DisciplinaDto> > ObterDisciplinasPorTurma(string codigoTurma, bool turmaPrograma) { var disciplinasDto = new List <DisciplinaDto>(); var login = servicoUsuario.ObterLoginAtual(); var perfilAtual = servicoUsuario.ObterPerfilAtual(); var chaveCache = $"Disciplinas-{codigoTurma}"; var disciplinasCacheString = repositorioCache.Obter(chaveCache); if (!string.IsNullOrWhiteSpace(disciplinasCacheString)) { disciplinasDto = JsonConvert.DeserializeObject <List <DisciplinaDto> >(disciplinasCacheString); } else { IEnumerable <DisciplinaResposta> disciplinas; if (perfilAtual == Perfis.PERFIL_CJ) { var atribuicoes = await repositorioAtribuicaoCJ.ObterPorFiltros(null, codigoTurma, string.Empty, 0, login, string.Empty, true); if (atribuicoes != null && atribuicoes.Any()) { var disciplinasEol = servicoEOL.ObterDisciplinasPorIds(atribuicoes.Select(a => a.DisciplinaId).Distinct().ToArray()); disciplinas = TransformarListaDisciplinaEolParaRetornoDto(disciplinasEol); } else { disciplinas = null; } } else { disciplinas = await servicoEOL.ObterDisciplinasPorCodigoTurma(codigoTurma); } if (disciplinas != null && disciplinas.Any()) { disciplinasDto = await MapearParaDto(disciplinas, turmaPrograma); await repositorioCache.SalvarAsync(chaveCache, JsonConvert.SerializeObject(disciplinasDto)); } } return(disciplinasDto); }