public async Task <ParticipationSessionAggregate?> FindByIdAsync(ParticipationId id) { var cacheParticipation = await _cache.GetCache <ParticipationSession>(id); if (cacheParticipation is not null) { return(ToAggregate(cacheParticipation)); } var participation = await _participationRepository.FindByIdAsync(id); if (participation is null) { return(null); } var tests = await _readTestRepository.GetAllTestNavigationByStepId(participation.StepEntity.Id.Value); var participationSession = ToAggregate(participation, tests); await _cache.SetCache(ToModel(participationSession), participationSession.Id.Value, _settings.ParticipationSecondDuration); return(participationSession); }