예제 #1
0
        public async Task <Exercise> Handle(CreateExerciseCommand request, CancellationToken cancellationToken)
        {
            await EndUnfinishedExercises();

            var phonemes = await _phonemizer.GetPhonemesAsync(request.TargetPhrase);

            var entity = new Exercise(request.PersonName, request.TargetPhrase, request.Language, phonemes);

            entity.Start();

            _dbContext.Add(entity);
            await _dbContext.SaveChangesAsync();

            return(entity);
        }
        public async Task <Utterance> Handle(RegisterUtteranceCommand request, CancellationToken cancellationToken)
        {
            var entity = await _dbContext.PhraseExercises
                         .Include(e => e.Utterances)
                         .FirstOrDefaultAsync(e => e.Id == request.Id);

            if (entity is null)
            {
                throw new InvalidOperationException($@"Phrase exercise not found! (id={request.Id})");
            }

            var phonemes = await _phonemizer.GetPhonemesAsync(request.RecognizedPhrase);

            var utterance = entity.RegisterUtterance(request.RecognizedPhrase, phonemes);

            _dbContext.Update(entity);
            await _dbContext.SaveChangesAsync();

            return(utterance);
        }