public double AcceptAnswer(ReviewCard card, FlashcardAnswer answer) { var correctness = userFLashcardMemoryService.UpdateMemoryBasedOnAnswer(card, answer); RemoveReviewCard(card); AddNewReviewCardIfAble(); return(correctness); }
private double calculateNewStrength(ReviewCard card, UserFlashcardMemory oldMemory, double correctness) { if (card.InternallLossCount == 0) { return(strengthService.CalculateStrengthAfterGoodAnswer((double)oldMemory.Strength, correctness)); } else { return(strengthService.CalculateStrengthAfterWinningBadAnswer((double)oldMemory.Strength, card.InternallLossCount)); } }
public double UpdateMemoryBasedOnAnswer(ReviewCard card, FlashcardAnswer answer) { var memory = unit.UserFlashcardMemoryRepository .GetMemoryBasedOnReview(card.ReviewID, card.FlashcardID, sessionService.UserID); var correctness = questionService.CalculateCorrectnessOfAnswer(answer); double newStrength = calculateNewStrength(card, memory, correctness); int newInterval = calculateNewInterval(memory, newStrength, card); memory.Strength = (decimal)newStrength; memory.LastInterval = newInterval; memory.IntervalCount++; memory.ReviewDate = DateTime.Now.AddMinutes(newInterval); unit.SaveChanges(); return(correctness); }
public static void loadReviews(StackPanel elem, int ItemID, double width) { DataTable table = new DB("ULASAN") .@select("CUSTOMER.NAMA as namaCust", "ULASAN.MESSAGE as MESSAGE", "ULASAN.RATING as RATING", "TO_CHAR(ULASAN.CREATED_AT,\'DD-MM-YYYY\') as tglUlasan", "ULASAN.ID_SELLER as ID_SELLER", "ULASAN.REPLY_AT as REPLY_AT", "ULASAN.REPLY as REPLY", "CUSTOMER.IMAGE as IMAGE_CUST") .@join("D_TRANS_ITEM", "ULASAN", "ID_D_TRANS_ITEM", "=", "ID") .@join("ITEM", "D_TRANS_ITEM", "ID_ITEM", "=", "ID") .@join("H_TRANS_ITEM", "D_TRANS_ITEM", "ID_H_TRANS_ITEM", "=", "ID") .@join("CUSTOMER", "H_TRANS_ITEM", "ID_CUSTOMER", "=", "ID") .@where("ITEM.ID", ItemID.ToString()).get(true); foreach (DataRow row in table.Rows) { ReviewCard rc = new ReviewCard(width); rc.setCust(row["namaCust"].ToString()); rc.setDateCust(row["tglUlasan"].ToString()); rc.setRating(Convert.ToInt32(row["RATING"])); rc.setDescription(row["MESSAGE"].ToString()); //SET CUSTOMER PROFILE PICTURE if (row["IMAGE_CUST"].ToString() != "") { rc.setCustImage(row["IMAGE_CUST"].ToString()); } // IF ADA if (row["REPLY"].ToString() != "") { DataRow seller = new DB("SELLER").@select().@where("ID", row["ID_SELLER"].ToString()).getFirst(); rc.setSeller(seller["NAMA_TOKO"].ToString()); rc.setSellerDate(row["REPLY_AT"].ToString()); rc.setSellerReply(row["REPLY"].ToString()); //Set Profile Foto Seller if (seller["IMAGE"].ToString() != "") { rc.setSellerImage(seller["IMAGE"].ToString()); } } elem.Children.Add(rc); } }
public DbReviewCard(ReviewCard card) { FlashcardID = card.FlashcardID; InternalLossCount = card.InternallLossCount; }
private int calculateNewInterval(UserFlashcardMemory memory, double newStrength, ReviewCard card) { if (card.InternallLossCount == 0) { return(intervalService.CalculateNewIntervalForWin(memory.LastInterval, newStrength, memory.IntervalCount + 1)); } else { return(intervalService.CalculateNewIntervalForLoss(memory.LastInterval, newStrength, memory.IntervalCount + 1)); } }
public ReviewCardInfo(ReviewCard reviewCard) { FlashcardID = reviewCard.FlashcardID; InternalLossCount = reviewCard.InternallLossCount; }
public ReviewQuestionViewModel(ReviewCard card, int languageID) : base(card.Flashcard, languageID) { ReviewID = card.ReviewID; }
public void RemoveReviewCard(ReviewCard card) { sessionService.UserInfo.ReviewInfo.ReviewCards.Remove(c => c.FlashcardID == card.FlashcardID); unit.ReviewCardRepository.Remove(c => c.ReviewID == card.ReviewID && c.FlashcardID == card.FlashcardID); }
public void DeclineAnswer(ReviewCard reviewCard) { reviewCard.InternallLossCount++; MoveDeclinedFlashcardInQueue(reviewCard.Flashcard.ID); unit.ReviewCardRepository.UpdateCardLossCount(reviewCard.ReviewID, reviewCard.FlashcardID, reviewCard.InternallLossCount); }