Exemple #1
0
        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);
        }