public async Task <StatsUserDailyGetModel> Handle(GetStatsUserDailyQ request, CancellationToken cancellationToken) { var flashcardsProgresses = await _flashcardProgressRepo.GetAllUserFlashcards(request.UserId); return(new StatsUserDailyGetModel() { TotalFlashcards = flashcardsProgresses.Count(), NewFlashcards = flashcardsProgresses.Where(e => e.PracticeDate == DateTime.MinValue).Count(), ToLearnFlashcards = flashcardsProgresses.Where(e => e.PracticeDate <= DateTime.Now).Count() }); }
public async Task <StatsUserProgressGetModel> Handle(GetStatsUserProgressQ request, CancellationToken cancellationToken) { var flashcardProgreses = await _flashcardProgressRepo.GetAllUserFlashcards(request.UserId); return(new StatsUserProgressGetModel() { NewFlashcards = flashcardProgreses.Where(e => e.PracticeDate == DateTime.MinValue).Count(), BaseKnowledge = flashcardProgreses.Where(e => (e.CorrectInRow >= 0 && e.CorrectInRow <= 3) && e.PracticeDate != DateTime.MinValue).Count(), MediumKnowledge = flashcardProgreses.Where(e => (e.CorrectInRow >= 4 && e.CorrectInRow <= 7)).Count(), GoodKnowledge = flashcardProgreses.Where(e => (e.CorrectInRow >= 8 && e.CorrectInRow <= 10)).Count(), Remebered = flashcardProgreses.Where(e => e.CorrectInRow > 10).Count() }); }
public async Task <FlashcardPracticeGetModel> Handle(GetRandomFlashcardQ request, CancellationToken cancellationToken) { var flashcards = await _flashcardProgressRepo.GetAllUserFlashcards(request.UserId); var randomFlashcard = flashcards[(new Random()).Next(0, flashcards.Count())]; return(new FlashcardPracticeGetModel() { FlashcardProgressId = randomFlashcard.Id, Front = randomFlashcard.PracticeDirection == PracticeDirection.ForeignToNative ? randomFlashcard.FlashcardModel.Foreign : randomFlashcard.FlashcardModel.Native, Back = randomFlashcard.PracticeDirection == PracticeDirection.ForeignToNative ? randomFlashcard.FlashcardModel.Native : randomFlashcard.FlashcardModel.Foreign }); }
public async Task <List <FlashcardWithProgressionGetModel> > Handle(GetFlashcardsListWithProgressesParallelQ request, CancellationToken cancellationToken) { if (await _mediator.Send(new GetCollectionByIdWithDailyStatsQ(request.CollectionId, request.UserId)) == null) { return(new List <FlashcardWithProgressionGetModel>()); } var flashcards = await _flashcardRepo.GetWhereCollectionId(request.CollectionId); var output = new ConcurrentBag <FlashcardWithProgressionGetModel>(); var progressModels = await _flashcardProgressRepo.GetAllUserFlashcards(request.UserId); Parallel.ForEach(flashcards, async flashcard => { var nativeToForeign = progressModels.FirstOrDefault(e => e.FlashcardModelId == flashcard.Id && e.PracticeDirection == PracticeDirection.NativeToForeign); var foreignToNative = progressModels.FirstOrDefault(e => e.FlashcardModelId == flashcard.Id && e.PracticeDirection == PracticeDirection.ForeignToNative); output.Add(new FlashcardWithProgressionGetModel() { Id = flashcard.Id, Foreign = flashcard.Foreign, Native = flashcard.Native, ProgressForeignToNative = new FlashcardWithProgressGetModel() { CorrectInRow = foreignToNative.CorrectInRow, PracticeDate = foreignToNative.PracticeDate.ToString("dd-MM-yyyy"), PracticeDateIfCorrectAns = ((await _mediator.Send(new CalculatePracticeDateQ(foreignToNative.CorrectInRow, FlashcardProgress.Know))) .AddDays((foreignToNative.PracticeDate - DateTime.Now.Date).TotalDays)).ToString("dd-MM-yyyy") }, ProgressNativeToForeign = new FlashcardWithProgressGetModel() { CorrectInRow = nativeToForeign.CorrectInRow, PracticeDate = nativeToForeign.PracticeDate.ToString("dd-MM-yyyy"), PracticeDateIfCorrectAns = ((await _mediator.Send(new CalculatePracticeDateQ(nativeToForeign.CorrectInRow, FlashcardProgress.Know))) .AddDays((nativeToForeign.PracticeDate - DateTime.Now.Date).TotalDays)).ToString("dd-MM-yyyy") } }); }); return(output.ToList()); }
public async Task <FlashcardPracticeGetModel> Handle(GetRandomExpiredFlashcardQ request, CancellationToken cancellationToken) { var allUserFlashcards = await _flashcardProgressRepo.GetAllUserFlashcards(request.UserId); var expiredFlashcards = allUserFlashcards.Where(e => e.PracticeDate <= DateTime.Now.Date).ToList(); if (!expiredFlashcards.Any()) { return(null); } var randomExpiredFlashcard = expiredFlashcards[(new Random()).Next(0, expiredFlashcards.Count())]; return(new FlashcardPracticeGetModel() { FlashcardProgressId = randomExpiredFlashcard.Id, Front = randomExpiredFlashcard.PracticeDirection == PracticeDirection.ForeignToNative ? randomExpiredFlashcard.FlashcardModel.Foreign : randomExpiredFlashcard.FlashcardModel.Native, Back = randomExpiredFlashcard.PracticeDirection == PracticeDirection.ForeignToNative ? randomExpiredFlashcard.FlashcardModel.Native : randomExpiredFlashcard.FlashcardModel.Foreign, PracticeDirection = randomExpiredFlashcard.PracticeDirection }); }
public async Task <StatsUserExpiredWeekGetModel> Handle(GetStatsUserExpiredNextWeekQ request, CancellationToken cancellationToken) { var flashcardProgreses = await _flashcardProgressRepo.GetAllUserFlashcards(request.UserId); return(new StatsUserExpiredWeekGetModel() { TodayDate = DecorateDateDayMonth(DateTime.Now.Date), TodayCount = Count(flashcardProgreses, DateTime.Now.Date), TomorrowDate = DecorateDateDayMonth(DateTime.Now.Date.AddDays(1)), TomorrowCount = Count(flashcardProgreses, DateTime.Now.Date.AddDays(1)), ThreeDayDate = DecorateDateDayMonth(DateTime.Now.Date.AddDays(2)), ThreeDayCount = Count(flashcardProgreses, DateTime.Now.Date.AddDays(2)), FourDayDate = DecorateDateDayMonth(DateTime.Now.Date.AddDays(3)), FourDayCount = Count(flashcardProgreses, DateTime.Now.Date.AddDays(3)), FiveDayDate = DecorateDateDayMonth(DateTime.Now.Date.AddDays(4)), FiveDayCount = Count(flashcardProgreses, DateTime.Now.Date.AddDays(4)), SixDayDate = DecorateDateDayMonth(DateTime.Now.Date.AddDays(5)), SixDayCount = Count(flashcardProgreses, DateTime.Now.Date.AddDays(5)), SevenDayDate = DecorateDateDayMonth(DateTime.Now.Date.AddDays(6)), SevenDayCount = Count(flashcardProgreses, DateTime.Now.Date.AddDays(6)) }); }