Esempio n. 1
0
        public async Task <PoolPickHandle> Pick(User user,
                                                Category category,
                                                Dictionary <string, object> options)
        {
            var pickOptions = options != null?mapper.Map <PickOptions>(options) : new PickOptions();

            var question = pickOptions.UniqueToUser ?
                           await questionRepository.FindUntouchedRandomAsync(user) :
                           await questionRepository.FindRandomAsync();

            if (question == null)
            {
                throw new UserHasNoViablePickException("User has no remaining unsolved questions.");
            }

            var handle = new PoolPickHandle
            {
                Picker       = user,
                Question     = question,
                AvailableFor = 300,
            };

            await poolPickHandleRepository.AddAsync(handle);

            await unitOfWork.CompleteAsync();

            return(handle);
        }
 public async Task AddAsync(PoolPickHandle poolPickHandle)
 {
     await context.PoolPickHandles.AddAsync(poolPickHandle);
 }