예제 #1
0
        public double AcceptAnswer(ReviewCard card, FlashcardAnswer answer)
        {
            var correctness = userFLashcardMemoryService.UpdateMemoryBasedOnAnswer(card, answer);

            RemoveReviewCard(card);
            AddNewReviewCardIfAble();
            return(correctness);
        }
예제 #2
0
 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));
     }
 }
예제 #3
0
        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);
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
 public DbReviewCard(ReviewCard card)
 {
     FlashcardID       = card.FlashcardID;
     InternalLossCount = card.InternallLossCount;
 }
예제 #6
0
 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));
     }
 }
예제 #7
0
 public ReviewCardInfo(ReviewCard reviewCard)
 {
     FlashcardID       = reviewCard.FlashcardID;
     InternalLossCount = reviewCard.InternallLossCount;
 }
예제 #8
0
 public ReviewQuestionViewModel(ReviewCard card, int languageID) : base(card.Flashcard, languageID)
 {
     ReviewID = card.ReviewID;
 }
예제 #9
0
 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);
 }
예제 #10
0
 public void DeclineAnswer(ReviewCard reviewCard)
 {
     reviewCard.InternallLossCount++;
     MoveDeclinedFlashcardInQueue(reviewCard.Flashcard.ID);
     unit.ReviewCardRepository.UpdateCardLossCount(reviewCard.ReviewID, reviewCard.FlashcardID, reviewCard.InternallLossCount);
 }