public void Start()
        {
            _log.Info("Getting disclaimers and lykke entities to cache");

            Task <IReadOnlyList <IDisclaimer> >  disclaimersTask = _disclaimerRepository.GetAllAsync();
            Task <IReadOnlyList <ILykkeEntity> > entitiesTask    = _lykkeEntityRepository.GetAsync();

            Task.WhenAll(disclaimersTask, entitiesTask).GetAwaiter().GetResult();

            _log.Info("Caching disclaimers");

            var tasks = new List <Task>();

            foreach (IEnumerable <IDisclaimer> disclaimers in disclaimersTask.Result.Batch(100))
            {
                tasks.AddRange(disclaimers.Select(x => _redisService.AddDisclaimerAsync(x)));
                Task.WhenAll(tasks).GetAwaiter().GetResult();
                tasks.Clear();
            }

            _log.Info("Caching disclaimers finished");

            _log.Info("Caching lykke entities");

            foreach (IEnumerable <ILykkeEntity> entities in entitiesTask.Result.Batch(100))
            {
                tasks.AddRange(entities.Select(x => _redisService.AddLykkeEntityAsync(x)));
                Task.WhenAll(tasks).GetAwaiter().GetResult();
                tasks.Clear();
            }

            _log.Info("Caching lykke entities finished");
        }
        public async Task <IDisclaimer> AddAsync(IDisclaimer disclaimer)
        {
            ILykkeEntity lykkeEntity = await _redisService.GetLykkeEntityAsync(disclaimer.LykkeEntityId);

            if (lykkeEntity == null)
            {
                throw new LykkeEntityNotFoundException(disclaimer.LykkeEntityId);
            }

            IDisclaimer createdDisclaimer = await _disclaimerRepository.InsertAsync(disclaimer);

            await _redisService.AddDisclaimerAsync(createdDisclaimer);

            _log.Info("Lykke entity disclaimer added", disclaimer);

            return(createdDisclaimer);
        }