public void CreaeteFromMealAndUserDataTest_ShouldCreateUserMealProfileObjectWithCorrectCalculatedCarbsDeviation_and_MealCarbsAmount_Properies() { Meal userMeal = new Meal() { Id = Guid.NewGuid(), PreMealSugarLevel = 290, PostMealSugarLevel = 170, CarbAmount = 85 }; string userName = "******"; UserBaseInsulinCalcProfile insulineProfile = new RapidInsulinProfile() { UnitReductionValue = 40, InsulinCarbohydrateRatio = 12.5, MaxSugarRange = 150 }; SpontaneousUserModel userData = new SpontaneousUserModel() { BaseInsulinCalcProfile = insulineProfile, }; //act UserMealProfileFactory mealFactory = new UserMealProfileFactory(); UserMealProfile mealProfile = mealFactory.CreaeteFromMealAndUserData(userMeal, userName, userData); AlgorithmCalculations.AlgorithmResult algResult = AlgorithmCalculations.CalcMealCarbsDeviation(userMeal, mealProfile.UserInsulinProfile); //assert Assert.IsNotNull(mealProfile); Assert.AreEqual(mealProfile.CalculatedCarbsDeviation, algResult.Result); Assert.AreEqual(mealProfile.MealCarbsAmount, mealProfile.ExpectedCarbsAmount + algResult.Result); }
public void CreaeteFromMealAndUserDataTest_ShouldCreateUserMealProfileObjectWithAllRelevantDataOfInputParameters() { Meal userMeal = new Meal() { Id = Guid.NewGuid(), PreMealSugarLevel = 290, PostMealSugarLevel = 170 }; string userName = "******"; UserBaseInsulinCalcProfile insulineProfile = new RapidInsulinProfile() { UnitReductionValue = 40, InsulinCarbohydrateRatio = 12.5, MaxSugarRange = 150 }; SpontaneousUserModel userData = new SpontaneousUserModel() { BaseInsulinCalcProfile = insulineProfile, }; //act UserMealProfileFactory mealFactory = new UserMealProfileFactory(); UserMealProfile mealProfile = mealFactory.CreaeteFromMealAndUserData(userMeal, userName, userData); //assert Assert.IsNotNull(mealProfile); Assert.AreEqual(mealProfile.MealId, userMeal.Id); Assert.AreEqual(mealProfile.UserName, userName); Assert.AreEqual(mealProfile.UserInsulinProfile, insulineProfile); }
public override UserMedal CheckIfFullfiledRequirement(SpontaneousUserModel statistic, UserActivity activity) { if (statistic.UserMedalsList != null && statistic.UserMedalsList.Count > 0) { //1 Still not acquired check foreach (UserMedal medal in statistic.UserMedalsList) { if (medal is WelcomeUserMedal) return null; } } //2 10 views int avtivityCount = statistic.GetActivityCount(activity.GetType().Name); if (avtivityCount >= 1) { // need to check if medal created with CreatedAt propertie UserMedal medal = new WelcomeUserMedal(); log.InfoFormat("[WelcomeUserChecker: CheckIfFullfiledRequirement] Win WelcomeUser Medal. avtivityCount={0}", avtivityCount); return medal; } else { log.InfoFormat("[WelcomeUserChecker: CheckIfFullfiledRequirement] Still not win WelcomeUser Medal. avtivityCount={0}", avtivityCount); } return null; }
public override UserMedal CheckIfFullfiledRequirement(SpontaneousUserModel statistic, UserActivity activity) { UserMedal currentMedal = new RestaurantAdviserMedal(); currentMedal.CreatedAt = new DateTime(0); if (statistic.UserMedalsList != null && statistic.UserMedalsList.Count > 0) { //if (IfAlreadyHave(statistic)) return null; currentMedal = getLastMedal(statistic); } //Check if current activity is meets requirement string activityName = activity.GetType().Name; int activityCount = 0; if (activity is MedalViewActivity) { activityCount = statistic.GetActivityCount(activityName, ((MedalViewActivity)activity).MedalType, currentMedal.CreatedAt); } else { activityCount = statistic.GetActivityCount(activityName, currentMedal.CreatedAt); } //Check if current activity is in requirement list if (RequirementsList.FirstOrDefault(r => r.Activity.GetType().Name == activityName) != null) { if (activityCount >= RequirementsList.FirstOrDefault(r => r.Activity.GetType().Name == activityName).Count) { //Current activity is meets requirement //Check if meets other requirements necessary for the medal foreach (var requirement in RequirementsList) { activityName = requirement.Activity.GetType().Name; //avtivityCount = statistic.GetActivityCount(activityName); if (requirement.Activity is MedalViewActivity) { activityCount = statistic.GetActivityCount(activityName, "RestaurantAdviserMedal", currentMedal.CreatedAt); } else { activityCount = statistic.GetActivityCount(activityName, currentMedal.CreatedAt); } if (!(activityCount >= RequirementsList.FirstOrDefault(r => r.Activity.GetType().Name == activityName).Count)) { log.InfoFormat("[RestaurantAdviserChecker]: CheckIfFullfiledRequirement] Still not win RestaurantAdviser Medal. avtivityCount={0}", activityCount); return null; } } UserMedal medal = new RestaurantAdviserMedal(); log.InfoFormat("[RestaurantAdviserChecker]: CheckIfFullfiledRequirement] Win RestaurantAdviser Medal. avtivityCount={0}", activityCount); return medal; } } else { log.InfoFormat("[RestaurantAdviserChecker]: CheckIfFullfiledRequirement] Still not win RestaurantAdviser Medal. avtivityCount={0}", activityCount); } return null; }
/// <summary> /// /// </summary> /// <param name="userStatistic"></param> /// <param name="producedActivity"></param> /// <returns> /// In case requirements was fullfiled return medal for giving to user. /// This should be save outside of method /// </returns> public List<UserMedal> ObtainMedalBecauseOfActivity(SpontaneousUserModel userStatistic, UserActivity producedActivity) { List<UserMedal> returnValue = new List<UserMedal>(); String activityClassName = producedActivity.GetType().Name; if (m_activityMedalMap.ContainsKey(activityClassName)) { UserMedal medal = m_activityMedalMap[activityClassName].CheckIfFullfiledRequirement(userStatistic, producedActivity); if (medal != null) returnValue.Add(medal); } return returnValue; }
public bool IfValidParameters(Meal userMeal, string userName, SpontaneousUserModel userData) { if (userMeal != null && userData != null && !string.IsNullOrEmpty(userName)) { log.InfoFormat("[CarbohydratesVerification.IfValidParameters] Valid parameters: Meal.Id={0}, userName={1}.", userMeal.Id.ToString(), userName); return true; } else { log.ErrorFormat("[CarbohydratesVerification.IfValidParameters] Some of input parameters not valid."); return false; } }
public override UserMedal CheckIfFullfiledRequirement(SpontaneousUserModel statistic, UserActivity activity) { // need implement, now return medal for test if (statistic.UserMedalsList != null && statistic.UserMedalsList.Count > 0) { //1 Still not acquired check foreach (UserMedal medal in statistic.UserMedalsList) { if (medal is WelcomeUserMedal) return null; } } return new AddRestaurantMedal(); }
public void SaveDataInUserMealProfile(Meal userMeal, string userName, SpontaneousUserModel userData) { UserMealProfile mealProfile = null; if (IfValidParameters(userMeal, userName, userData)) { mealProfile = CreaeteFromMealAndUserData(userMeal, userName, userData); } if (mealProfile != null) { UserMealProfileUtilities.AddUserMealProfileToDB(mealProfile); log.InfoFormat("[SaveDataInUserMealProfile] Saved UserMealProfile Id={0}, userMeal.Id={1}, userName={2}.", mealProfile.Id.ToString(), userMeal.Id.ToString(), userName); } else log.ErrorFormat("[SaveDataInUserMealProfile] Error: Created mealProfile was null."); }
public void CheckIfFullfiledRequirementTest_ShouldCheckListWhichAlredyContainThisMedalAndReturnEmptyMedalList() { //Arrange SpontaneousUserModel userModelWithMedal = new SpontaneousUserModel() { UserMedalsList = new List<UserMedal>() }; userModelWithMedal.UserMedalsList.Add(new WelcomeUserMedal()); UserActivity userActivity = new PageViewActivity("TestPage"); //Act MedalRequirementsChecker medalChecker = new PlatefulMedalRequirementChecker(); List<UserMedal> userModelWithMedalResult = medalChecker.ObtainMedalBecauseOfActivity(userModelWithMedal, userActivity); //Assert Assert.AreEqual(userModelWithMedalResult.Count, 0); }
public List<MedalProgress> getMedalProgresses(SpontaneousUserModel userStatistic) { List<MedalProgress> returnValue = new List<MedalProgress>(); foreach (var item in m_activityMedalMap) { foreach (var checker in item.Value) { string medalType = checker.MedalType; //need to implement check if user allready have this type of medal var specificProgress = checker.GetProgress(userStatistic); if (specificProgress != null) returnValue.Add(specificProgress); } } return returnValue; }
public override UserMedal CheckIfFullfiledRequirement(SpontaneousUserModel statistic, UserActivity activity) { if (statistic.UserMedalsList != null && statistic.UserMedalsList.Count > 0) { //1 Still not acquired check foreach (UserMedal medal in statistic.UserMedalsList) { if (medal is WelcomeUserMedal) return null; } } //2 20 views int avtivityCount = statistic.GetActivityCount(activity.GetType().Name); if (avtivityCount >= 20) { // need to check if medal created with CreatedAt propertie UserMedal medal = new AdultUserMedal(); return medal; } return null; }
public MedalProgress getClosesMedal(SpontaneousUserModel userStatistic) { var allProgreses = getMedalProgresses(userStatistic); MedalProgress returnValue = null; if(allProgreses != null && allProgreses.Count > 0) { foreach (var progress in allProgreses) { if (returnValue == null) returnValue = progress; else { if (returnValue.pointsRequired > progress.pointsRequired) { returnValue = progress; } } } } return returnValue; }
public void CheckIfFullfiledRequirementTest_ShouldCheckListWithoutThisMedalAndRequirementForThisMedalNotAchieved_MustReturnNotEmptyMedalList() { //Arrange SpontaneousUserModel userModelWithOutMedal = new SpontaneousUserModel() { UserActivityList = new List<UserActivity>(), UserMedalsList = new List<UserMedal>() }; //Requirement = 3 //for (int i = 0; i < 2; i++) //{ // userModelWithOutMedal.UserActivityList.Add(new PageViewActivity("TestPage")); //} UserActivity userActivity = new PageViewActivity("TestPage"); //Act MedalRequirementsChecker medalChecker = new PlatefulMedalRequirementChecker(); List<UserMedal> userModelWithMedalResult = medalChecker.ObtainMedalBecauseOfActivity(userModelWithOutMedal, userActivity); //Assert Assert.AreEqual(userModelWithMedalResult.Count, 0); }
public UserMealProfile CreaeteFromMealAndUserData(Meal userMeal, string userName, SpontaneousUserModel userData) { log.InfoFormat("[CreaeteFromMealAndUserData] userMeal.Id={0}, userName={1}.", userMeal.Id.ToString(), userName); UserMealProfile mealProfile = new UserMealProfile() { MealId = userMeal.Id, UserName = userName, ExpectedCarbsAmount = userMeal.CarbAmount }; if (userData.BaseInsulinCalcProfile != null) { mealProfile.UserInsulinProfile = userData.BaseInsulinCalcProfile; AlgorithmCalculations.AlgorithmResult algResult = AlgorithmCalculations.CalcMealCarbsDeviation(userMeal, mealProfile.UserInsulinProfile); if (algResult.Status == "Success") { mealProfile.CalculatedCarbsDeviation = algResult.Result; mealProfile.MealCarbsAmount = mealProfile.ExpectedCarbsAmount + mealProfile.CalculatedCarbsDeviation; } } return mealProfile; }
public void CheckIfFullfiledRequirementTest_ShouldCheckListWithOtherMedalAndReturnNotEmptyMedalList() { //Arrange SpontaneousUserModel userModelWithOtherMedal = new SpontaneousUserModel() { UserActivityList = new List<UserActivity>(), UserMedalsList = new List<UserMedal>() }; for (int i = 0; i < 3; i++) { userModelWithOtherMedal.UserActivityList.Add(new PageViewActivity("TestPage")); } userModelWithOtherMedal.UserMedalsList.Add(new AddRestaurantMedal()); UserActivity userActivity = new PageViewActivity("TestPage"); //Act MedalRequirementsChecker medalChecker = new PlatefulMedalRequirementChecker(); List<UserMedal> userModelWithOtherMedalResult = medalChecker.ObtainMedalBecauseOfActivity(userModelWithOtherMedal, userActivity); //Assert Assert.AreNotEqual(userModelWithOtherMedalResult.Count, 0); }
public override MedalProgress GetProgress(SpontaneousUserModel statistic) { if (!IfAlreadyHave(statistic)) { MedalProgress returnValue = new MedalProgress() { MedalType = MedalType, totalPointsRequired = 0, pointsRequired = 0 }; //Calculate total points required for the medal foreach (var requirement in RequirementsList) { returnValue.totalPointsRequired += requirement.Activity.Points * requirement.Count; } returnValue.pointsRequired = returnValue.totalPointsRequired; if (statistic != null && statistic.UserActivityList != null) { //Calculate points still required for the medal bool PageViewActivityFlag = false; foreach (UserActivity userActivity in statistic.UserActivityList) { if (userActivity is PageViewActivity) { if (!PageViewActivityFlag) { returnValue.pointsRequired -= userActivity.Points; PageViewActivityFlag = true; } } } // if points grater then required if (returnValue.pointsRequired < 0) returnValue.pointsRequired = 0; } return returnValue; } return null; }
public static SpontaneousUserModel GetUserData(this ProfileBase userData) { SpontaneousUserModel returnValue = null; var userDataObejct = userData.GetPropertyValue(C_UserProfilDataId_Name); if (userDataObejct != null) { returnValue = FetchUserData((Guid)userDataObejct); } else { returnValue = new SpontaneousUserModel(); returnValue.id = Guid.NewGuid(); } return returnValue; }
public UserMedal getLastMedal(SpontaneousUserModel statistic) { UserMedal returnValue = new RestaurantAdviserMedal(); returnValue.CreatedAt = new DateTime(0); if (statistic != null && statistic.UserMedalsList != null && IfAlreadyHave(statistic)) { var adviserMedalList = statistic.UserMedalsList.Where(c => c is RestaurantAdviserMedal); if (adviserMedalList != null) { returnValue = adviserMedalList.OrderBy(o => o.CreatedAt).ToList().LastOrDefault(); } } log.DebugFormat("[RestaurantAdviserChecker]: getLastMedal, CreatedAt={0}", returnValue.CreatedAt); return returnValue; }
public void GetCouponForMedal_Should_ResiveUserDataAndFindNearestCouponAccordinlyToActivityLocation() { CouponType tempCoupon1 = new CouponType() { Description = "קפה + מאפה ב15% הנחה במסעדת Nelly's Kitchen. למימוש יש להראות את המסך במסעדה. לפרטי המסעדה לחץ על המדליה", ValidFrom = new DateTime(0), ValidUntil = DateTime.UtcNow.AddHours(1), RestaurantsIDs = new List<string>() { "11111" }, LocationsList = new List<Location>() { new Location(1,1) } }; CouponType tempCoupon2 = new CouponType() { Description = "מנה ראשונה במתנה בהזמנת עיקרית במסעדת BG99. למימוש יש להראות את המסך במסעדה. לפרטי המסעדה לחץ על המדליה", ValidFrom = new DateTime(0), ValidUntil = DateTime.UtcNow.AddHours(1), RestaurantsIDs = new List<string>() { "22222" }, LocationsList = new List<Location>() { new Location(0,0) } }; CouponType tempCoupon3 = new CouponType() { Description = "קפה + מאפה ב15% הנחה במסעדתאכול כפי יכולתך רק ב89 שקל במסעדת קולומבוס", ValidFrom = new DateTime(0), ValidUntil = DateTime.UtcNow.AddHours(1), RestaurantsIDs = new List<string>() { "33333" }, LocationsList = new List<Location>() { new Location(1,1) } }; CouponType tempCoupon4 = new CouponType() { Description = "1+1 על כל בירה מהחבית במסעדת Red Burger Bar, כל יום עד שעה 19:00.", RestaurantsIDs = new List<string>() { "44444" }, ValidFrom = DateTime.UtcNow, ValidUntil = new DateTime(2014, 1, 31), LocationsList = new List<Location>() { new Location(1,1) } }; CouponType tempCoupon5 = new CouponType() { Description = "1+1 על סטייק אנטריקוט, בהזמנה מנה עיקרית ושתייה, במסעדת Red Burger Bar.", RestaurantsIDs = new List<string>() { "55555" }, ValidFrom = DateTime.UtcNow, ValidUntil = new DateTime(2014, 1, 31), LocationsList = new List<Location>() { new Location(32.067141, 34.804314) } }; CouponType tempCoupon6 = new CouponType() { Description = "מנת ילד חינם בהזמנה מנה עיקרית למבוגר במסעדת Palamida, ביום שישי 12:00-16:00", RestaurantsIDs = new List<string>() { "66666" }, ValidFrom = DateTime.UtcNow, ValidUntil = new DateTime(2014, 1, 31), LocationsList = new List<Location>() { new Location(0, 1) } }; CouponType tempCoupon7 = new CouponType() { Description = "ארוחה זוגית ב- 200 שח הארוחה כוללת: - 2 כוסות יין הבית - 2 מרק + לחם הבית - מיקס פירות ים, במסעדת Palamida.", RestaurantsIDs = new List<string>() { "77777" }, ValidFrom = DateTime.UtcNow, ValidUntil = new DateTime(2014, 1, 31), LocationsList = new List<Location>() { new Location(1, 1) } }; string savedCouponId1 = serviceLayer.AddCouponToDB(tempCoupon1); string savedCouponId2 = serviceLayer.AddCouponToDB(tempCoupon2); string savedCouponId3 = serviceLayer.AddCouponToDB(tempCoupon3); string savedCouponId4 = serviceLayer.AddCouponToDB(tempCoupon4); string savedCouponId5 = serviceLayer.AddCouponToDB(tempCoupon5); string savedCouponId6 = serviceLayer.AddCouponToDB(tempCoupon6); string savedCouponId7 = serviceLayer.AddCouponToDB(tempCoupon7); UserActivity activity1 = new PageViewActivity("test") { ActivityLocation = new Location(1, 1) }; UserActivity activity2 = new PageViewActivity("test") { ActivityLocation = new Location(32.067141, 34.804314) }; SpontaneousUserModel userModel = new SpontaneousUserModel() { UserMedalsList = new List<UserMedal>() }; userModel.UserMedalsList.Add(new WelcomeUserMedal() { Coupon = tempCoupon1 }); userModel.UserMedalsList.Add(new RestaurantAdviserMedal() { Coupon = tempCoupon2 }); userModel.UserMedalsList.Add(new WelcomeUserMedal() { Coupon = tempCoupon3 }); userModel.UserMedalsList.Add(new RestaurantAdviserMedal() { Coupon = tempCoupon4 }); //Act CouponType coupon1 = serviceLayer.GetCoupon(userModel, activity1); CouponType coupon2 = serviceLayer.GetCoupon(userModel, activity2); // clean DB from temp coupons serviceLayer.DeleteCoupon(savedCouponId1); serviceLayer.DeleteCoupon(savedCouponId2); serviceLayer.DeleteCoupon(savedCouponId3); serviceLayer.DeleteCoupon(savedCouponId4); serviceLayer.DeleteCoupon(savedCouponId5); serviceLayer.DeleteCoupon(savedCouponId6); serviceLayer.DeleteCoupon(savedCouponId7); //Assert Assert.IsNotNull(coupon1); //Assert.AreNotEqual(coupon.Id, tempCoupon1.Id); Assert.AreNotEqual(coupon1.Id.ToString(), savedCouponId1); Assert.AreNotEqual(coupon1.Id.ToString(), savedCouponId2); Assert.AreNotEqual(coupon1.Id.ToString(), savedCouponId3); Assert.AreNotEqual(coupon1.Id.ToString(), savedCouponId4); Assert.AreNotEqual(coupon1.Id.ToString(), savedCouponId5); Assert.AreNotEqual(coupon1.Id.ToString(), savedCouponId6); Assert.AreEqual(coupon1.Id.ToString(), savedCouponId7); Assert.AreEqual(coupon1.Description, tempCoupon7.Description); }
public override MedalProgress GetProgress(SpontaneousUserModel statistic) { //if (!IfAlreadyHave(statistic)) //{ UserMedal currentMedal = new FlowCompleteMedal(); currentMedal.CreatedAt = new DateTime(0); if (statistic.UserMedalsList != null && statistic.UserMedalsList.Count > 0) { currentMedal = getLastMedal(statistic); } MedalProgress returnValue = new MedalProgress() { MedalType = MedalType, }; //Calculate total points required for the medal foreach (var requirement in RequirementsList) { returnValue.totalPointsRequired += requirement.Activity.Points * requirement.Count; } returnValue.pointsRequired = returnValue.totalPointsRequired; if (statistic != null && statistic.UserActivityList != null) { //Calculate points still required for the medal bool RestaurantMenuEnterActivityFlag = false; bool MenuLinkPushActivityFlag = false; bool ApproveMealPushActivityFlag = false; bool SendMealSummaryActivityFlag = false; bool PreMealSugarApproveActivityFlag = false; bool PostMealSugarApproveActivityFlag = false; bool PostMealCarbBlameActivityFlag = false; foreach (UserActivity userActivity in statistic.UserActivityList) { if (userActivity.Date > currentMedal.CreatedAt) { SpontaneousMedalRequirementChecker.ActivityType type = (SpontaneousMedalRequirementChecker.ActivityType)System.Enum.Parse(typeof(SpontaneousMedalRequirementChecker.ActivityType), userActivity.GetType().Name); //int activityType = (int)type; var dateDiff = (DateTime.UtcNow - userActivity.Date).TotalDays; switch (type) { case SpontaneousMedalRequirementChecker.ActivityType.PageViewActivity: break; case SpontaneousMedalRequirementChecker.ActivityType.RestaurantMenuEnterActivity: if (!RestaurantMenuEnterActivityFlag && dateDiff < 1) { returnValue.pointsRequired = returnValue.pointsRequired -= userActivity.Points; RestaurantMenuEnterActivityFlag = true; } break; case SpontaneousMedalRequirementChecker.ActivityType.MenuLinkPushActivity: if (!MenuLinkPushActivityFlag && dateDiff < 1) { returnValue.pointsRequired -= userActivity.Points; MenuLinkPushActivityFlag = true; } break; case SpontaneousMedalRequirementChecker.ActivityType.ApproveMealPushActivity: if (!ApproveMealPushActivityFlag && dateDiff < 1) { returnValue.pointsRequired -= userActivity.Points; ApproveMealPushActivityFlag = true; } break; case SpontaneousMedalRequirementChecker.ActivityType.SendMealSummaryActivity: if (!SendMealSummaryActivityFlag && dateDiff < 1) { returnValue.pointsRequired -= userActivity.Points; SendMealSummaryActivityFlag = true; } break; case SpontaneousMedalRequirementChecker.ActivityType.PreMealSugarApproveActivity: if (!PreMealSugarApproveActivityFlag && dateDiff < 1) { returnValue.pointsRequired -= userActivity.Points; PreMealSugarApproveActivityFlag = true; } break; case SpontaneousMedalRequirementChecker.ActivityType.PostMealSugarApproveActivity: if (!PostMealSugarApproveActivityFlag && dateDiff < 1) { returnValue.pointsRequired -= userActivity.Points; PostMealSugarApproveActivityFlag = true; } break; case SpontaneousMedalRequirementChecker.ActivityType.PostMealCarbBlameActivity: if (!PostMealCarbBlameActivityFlag && dateDiff < 1) { returnValue.pointsRequired -= userActivity.Points; PostMealCarbBlameActivityFlag = true; } break; case SpontaneousMedalRequirementChecker.ActivityType.MedalViewActivity: break; default: break; } }//if (userActivity.Date > currentMedal.CreatedAt) } if (returnValue.pointsRequired < 0) returnValue.pointsRequired = 0; } return returnValue; //} //return null; }
public override bool IfAlreadyHave(SpontaneousUserModel statistic) { if (statistic != null && statistic.UserMedalsList != null) { foreach (UserMedal medal in statistic.UserMedalsList) { if (medal is AddRestaurantMedal) return true; } } return false; }
public abstract UserMedal CheckIfFullfiledRequirement(SpontaneousUserModel statistic, UserActivity activity);
private static void UpsertUserModel(SpontaneousUserModel usermodel) { using (CrawledRecipes recipesDb = new CrawledRecipes()) { MongoEntityRepositoryBase<SpontaneousUserModel> basicData = new MongoEntityRepositoryBase<SpontaneousUserModel>(recipesDb.DB); basicData.Upsert(usermodel); } }
public override UserMedal CheckIfFullfiledRequirement(SpontaneousUserModel statistic, UserActivity activity) { if (statistic.UserMedalsList != null && statistic.UserMedalsList.Count > 0) { if (IfAlreadyHave(statistic)) return null; } //int avtivityCount = statistic.GetActivityCount(activity.GetType().Name); //if (avtivityCount >= RequirementsList[0].Count) //{ // UserMedal medal = new WelcomeUserMedal(); // log.InfoFormat("[WelcomeUserChecker: CheckIfFullfiledRequirement] Win WelcomeUser Medal. avtivityCount={0}", avtivityCount); // return medal; //} string activityName = activity.GetType().Name; int activityCount = 0; if (activity is MedalViewActivity) { activityCount = statistic.GetActivityCount(activityName, ((MedalViewActivity)activity).MedalType); } else { activityCount = statistic.GetActivityCount(activityName); } //Check if current activity is in requirement list if (RequirementsList.FirstOrDefault(r => r.Activity.GetType().Name == activityName) != null) { if (activityCount >= RequirementsList.FirstOrDefault(r => r.Activity.GetType().Name == activityName).Count) { //Current activity is meets requirement //Check if meets other requirements necessary for the medal foreach (var requirement in RequirementsList) { activityName = requirement.Activity.GetType().Name; //avtivityCount = statistic.GetActivityCount(activityName); if (requirement.Activity is MedalViewActivity) { activityCount = statistic.GetActivityCount(activityName, "WelcomeUserMedal"); } else { activityCount = statistic.GetActivityCount(activityName); } if (!(activityCount >= RequirementsList.FirstOrDefault(r => r.Activity.GetType().Name == activityName).Count)) { log.InfoFormat("[WelcomeUserChecker: CheckIfFullfiledRequirement] Still not win WelcomeUser Medal. avtivityCount={0}", activityCount); return null; } } UserMedal medal = new WelcomeUserMedal(); log.InfoFormat("[WelcomeUserChecker: CheckIfFullfiledRequirement] Win WelcomeUser Medal. avtivityCount={0}", activityCount); return medal; } } else { log.InfoFormat("[WelcomeUserChecker: CheckIfFullfiledRequirement] Still not win WelcomeUser Medal. avtivityCount={0}", activityCount); } return null; }
public override MedalProgress GetProgress(SpontaneousUserModel statistic) { //if (!IfAlreadyHave(statistic)) //{ UserMedal currentMedal = new RestaurantAdviserMedal(); currentMedal.CreatedAt = new DateTime(0); if (statistic.UserMedalsList != null && statistic.UserMedalsList.Count > 0) { currentMedal = getLastMedal(statistic); } MedalProgress returnValue = new MedalProgress() { MedalType = MedalType, }; //Calculate total points required for the medal foreach (var requirement in RequirementsList) { returnValue.totalPointsRequired += requirement.Activity.Points * requirement.Count; } returnValue.pointsRequired = returnValue.totalPointsRequired; if (statistic != null && statistic.UserActivityList != null) { //Calculate points still required for the medal bool inviteFriendActivityFlag = false; foreach (UserActivity userActivity in statistic.UserActivityList) { if (userActivity.Date > currentMedal.CreatedAt) { if (userActivity is InviteFriendActivity) { if (!inviteFriendActivityFlag) { returnValue.pointsRequired = returnValue.pointsRequired -= userActivity.Points; inviteFriendActivityFlag = true; } } }//if (userActivity.Date > currentMedal.CreatedAt) } if (returnValue.pointsRequired < 0) returnValue.pointsRequired = 0; } return returnValue; //} //return null; }
//public static SpontaneousUserModel GetUserData(this ProfileBase userData) //{ // SpontaneousUserModel returnValue = null; // var userDataObejct = userData.GetPropertyValue(C_UserProfileData_Name); // if (userDataObejct != null) // { // returnValue = userDataObejct as SpontaneousUserModel; // } // else // { // returnValue = new SpontaneousUserModel(); // } // return returnValue; //} //public static void SetUserData(this ProfileBase userData, SpontaneousUserModel usermodel) //{ // userData.SetPropertyValue(C_UserProfileData_Name, usermodel); //} public static void SetUserData(this ProfileBase userData, SpontaneousUserModel usermodel) { if (usermodel.id == Guid.Empty) usermodel.id = Guid.NewGuid(); userData.SetPropertyValue(C_UserProfilDataId_Name, usermodel.id); UpsertUserModel(usermodel); }
public void Test_Meal_BSONSerialization() { List<Meal> meals = new List<Meal>(); var meal = new Meal() { Id = Guid.NewGuid(), }; meals.Add(meal); SpontaneousUserModel userModel = new SpontaneousUserModel() { UserMeals = meals, }; m_Testdb.GetCollection<SpontaneousUserModel>(typeof(SpontaneousUserModel).Name).Insert(userModel); }
public void GetCouponForMedal_Should_ResiveUserDataAndDecideWhichCouponToReturn() { CouponType tempCoupon1 = new CouponType() { Description = "קפה + מאפה ב15% הנחה במסעדת Nelly's Kitchen. למימוש יש להראות את המסך במסעדה. לפרטי המסעדה לחץ על המדליה", ValidFrom = new DateTime(0), ValidUntil = DateTime.UtcNow.AddHours(1), RestaurantsIDs = new List<string>() { "11111" } }; CouponType tempCoupon2 = new CouponType() { Description = "מנה ראשונה במתנה בהזמנת עיקרית במסעדת BG99. למימוש יש להראות את המסך במסעדה. לפרטי המסעדה לחץ על המדליה", ValidFrom = new DateTime(0), ValidUntil = DateTime.UtcNow.AddHours(1), RestaurantsIDs = new List<string>() { "22222" } }; CouponType tempCoupon3 = new CouponType() { Description = "קפה + מאפה ב15% הנחה במסעדתאכול כפי יכולתך רק ב89 שקל במסעדת קולומבוס", ValidFrom = new DateTime(0), ValidUntil = DateTime.UtcNow.AddHours(1), RestaurantsIDs = new List<string>() { "33333" } }; string savedCouponId1 = serviceLayer.AddCouponToDB(tempCoupon1); string savedCouponId2 = serviceLayer.AddCouponToDB(tempCoupon2); string savedCouponId3 = serviceLayer.AddCouponToDB(tempCoupon3); SpontaneousUserModel userModel = new SpontaneousUserModel() { UserMedalsList = new List<UserMedal>() }; //userModel.UserMedalsList.Add(new WelcomeUserMedal() { Coupon = tempCoupon1 }); userModel.UserMedalsList.Add(new RestaurantAdviserMedal() { Coupon = tempCoupon2 }); userModel.UserMedalsList.Add(new WelcomeUserMedal()); userModel.UserMedalsList.Add(new RestaurantAdviserMedal()); //Act CouponType coupon = serviceLayer.GetCoupon(userModel, new PageViewActivity("test")); serviceLayer.DeleteCoupon(savedCouponId1); serviceLayer.DeleteCoupon(savedCouponId2); serviceLayer.DeleteCoupon(savedCouponId3); //Assert Assert.IsNotNull(coupon); //Assert.AreNotEqual(coupon.Id, tempCoupon1.Id); Assert.AreNotEqual(coupon.Id, tempCoupon2.Id); }
public override MedalProgress GetProgress(SpontaneousUserModel statistic) { if (!IfAlreadyHave(statistic)) { MedalProgress returnValue = new MedalProgress() { MedalType = MedalType, totalPointsRequired = 0, pointsRequired = 0 }; //Calculate total points required for the medal foreach (var requirement in RequirementsList) { returnValue.totalPointsRequired += requirement.Activity.Points * requirement.Count; } returnValue.pointsRequired = returnValue.totalPointsRequired; if (statistic != null && statistic.UserActivityList != null) { //Calculate points still required for the medal foreach (var userActivity in statistic.UserActivityList) { if (userActivity is AddRestaurantActivity) { returnValue.pointsRequired = returnValue.totalPointsRequired - statistic.GetActivityCount(userActivity.GetType().Name) * userActivity.Points; } } if (returnValue.pointsRequired < 0) returnValue.pointsRequired = 0; } return returnValue; } return null; }
public UserMedal getLastMedal(SpontaneousUserModel statistic) { UserMedal returnValue = new FlowCompleteMedal(); returnValue.CreatedAt = new DateTime(0); if (statistic != null && statistic.UserMedalsList != null && IfAlreadyHave(statistic)) { var flowMedalList = statistic.UserMedalsList.Where(c => c is FlowCompleteMedal); if (flowMedalList != null) { returnValue = flowMedalList.OrderBy(o => o.CreatedAt).ToList().LastOrDefault(); } } log.DebugFormat("[FlowCompleteChecker: getLastMedal, CreatedAt={0}", returnValue.CreatedAt); return returnValue; }