public Task <int> StopAllAsync(List <ModuleConfig> actualModuleConfigs, Guid clientId)
        {
            Guard.ArgumentIsNotNull(clientId, nameof(clientId));

            _modulesCacheConfigurationRepository.DeleteConfiguration(clientId);

            int result = 0;

            using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                foreach (ModuleConfig moduleConfig in actualModuleConfigs)
                {
                    ModuleConfigDto dto = _mapper.Map <ModuleConfig, ModuleConfigDto>(moduleConfig);
                    dto.EndDate = DateTime.UtcNow;

                    result += _modulesConfigurationRepositoryAdmin.UpdateAsync(dto).Result;
                }

                // todo: check
                if (result == actualModuleConfigs.Count)
                {
                    scope.Complete();
                }
            }

            return(Task.FromResult(result));
        }
        public Task <int> UpdateAsync(ModuleConfig moduleConfig, List <ModuleConfig> actualModuleConfigs, Guid clientId)
        {
            Guard.ArgumentIsNotNull(moduleConfig, nameof(moduleConfig));

            if (!IsModuleConfigValid(moduleConfig, actualModuleConfigs))
            {
                return(Task.FromResult(0));
            }

            _modulesCacheConfigurationRepository.DeleteConfiguration(clientId);

            ModuleConfigDto dto = _mapper.Map <ModuleConfig, ModuleConfigDto>(moduleConfig);

            return(_modulesConfigurationRepositoryAdmin.UpdateAsync(dto));
        }