示例#1
0
        public async Task <Guid> InsertNewDataRecord(NumbersData numberDataRecord, CancellationToken cancellationToken)
        {
            await _context.NumbersDataRecords.AddAsync(numberDataRecord, cancellationToken);

            await _context.SaveChangesAsync(cancellationToken);

            return(numberDataRecord.Id);
        }
示例#2
0
        private void ValidateNumberDataRecord(NumbersData currentRecord)
        {
            if (currentRecord == null)
            {
                throw new ArgumentOutOfRangeException(nameof(GuessNumberDTO.NumberRecordId));
            }

            if (currentRecord.UsedAttempts == _numbersSettings.MaxAttemptsCount)
            {
                throw new InvalidOperationException("All guess attempts are used for current record");
            }
        }
示例#3
0
        public async Task SaveGuessNumberAndIncreaceAttemptsCount(NumbersData currentRecord, int guessNumber, CancellationToken cancellationToken)
        {
            currentRecord.UsedAttempts += 1;

            currentRecord.GuessedNumbers.Add(new GuessedNumber
            {
                NumbersDataId = currentRecord.Id,
                Number        = guessNumber,
            });

            await _context.SaveChangesAsync(cancellationToken);
        }
示例#4
0
 public async Task <IActionResult> InsertNewNumberRecord(CancellationToken cancellationToken)
 {
     try {
         var newNumberRecord = new NumbersData
         {
             Id = Guid.NewGuid(),
             PredefinedNumber = GetRandomNumberFromPredefinedRange(),
         };
         return(Ok(await _numbersRepository.InsertNewDataRecord(newNumberRecord, cancellationToken)));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }