Beispiel #1
0
        public async Task <ActionReponseModel> Handle(UpdateFlashcardProgressC request, CancellationToken cancellationToken)
        {
            if (request.FlashcardProgress == FlashcardProgress.UnDefined)
            {
                return(new ActionReponseModel(false, "Undefined FlashcardProgress Enum"));
            }

            var flashcardProgressModel = await _flashcardProgressRepo.Get(request.FlashcardProgressId);

            if (flashcardProgressModel == null)
            {
                return(new ActionReponseModel(false, "Cannot find flashcard progress model"));
            }

            var calculatePracticeDateQ = new CalculatePracticeDateQ(flashcardProgressModel.CorrectInRow, request.FlashcardProgress);

            flashcardProgressModel.PracticeDate = await _mediator.Send(calculatePracticeDateQ);

            switch (request.FlashcardProgress)
            {
            case FlashcardProgress.DontKnow:
                flashcardProgressModel.CorrectInRow = flashcardProgressModel.CorrectInRow > 2 ? flashcardProgressModel.CorrectInRow - 2 : 0;
                break;

            case FlashcardProgress.Know:
                flashcardProgressModel.CorrectInRow++;
                break;
            }

            await _flashcardProgressRepo.Update(flashcardProgressModel);

            _mediator.Send(new IncrementStatsUserC(request.UserId));

            return(new ActionReponseModel(true));
        }
        public async Task <FlashcardPracticeMixedGetModel> Handle(GetRandomExpiredForMixedQ request, CancellationToken cancellationToken)
        {
            var choosenFlashcard = await _mediator.Send(new GetRandomExpiredForChooseQ(request.UserId));

            if (choosenFlashcard == null)
            {
                return(null);
            }

            var choosenFlashcardDb = await _flashcardProgressRepo.Get(choosenFlashcard.FlashcardProgressId);

            return(new FlashcardPracticeMixedGetModel()
            {
                FlashcardProgressId = choosenFlashcard.FlashcardProgressId,
                Front = choosenFlashcard.Front,
                AnsA = choosenFlashcard.AnsA,
                AnsB = choosenFlashcard.AnsB,
                AnsC = choosenFlashcard.AnsC,
                CorrectAns = choosenFlashcard.CorrectAns,
                Back = choosenFlashcard.CorrectAns == 1 ? choosenFlashcard.AnsA : choosenFlashcard.CorrectAns == 2 ? choosenFlashcard.AnsB : choosenFlashcard.AnsC,
                CorrectAnsInRow = choosenFlashcardDb.CorrectInRow,
                PracticeDirection = choosenFlashcardDb.PracticeDirection
            });
        }