internal void SaveUserActivity(UserActivity userActivity) { var userProfile = GetUserProfile(); var userData = userProfile.GetUserData(); string userActivityType = userActivity.GetType().Name; if (userActivity == null) { log.WarnFormat("[SaveUserActivity] User={0} tried to save user activity, but received NULL parameter.", userProfile.UserName); return; }; if (userData.UserActivityList == null) { userData.UserActivityList = new List<UserActivity>(); } userActivity.Date = DateTime.UtcNow; userData.TotalPoints += userActivity.Points; userData.UserActivityList.Add(userActivity); //Check if reached Medal MedalRequirementsChecker medalChecker = new MedalRequirementsChecker(); List<UserMedal> medalList = medalChecker.ObtainMedalBecauseOfActivity(userData, userActivity); if(medalList.Count > 0) { if (userData.UserMedalsList == null) userData.UserMedalsList = new List<UserMedal>(); foreach (var medal in medalList) { userData.UserMedalsList.Add(medal); } userData.MedalNotificationFlag = true; } userProfile.SetUserData(userData); userProfile.Save(); log.InfoFormat("[SaveUserActivity] user={0}, userActivity={1}.", userProfile.UserName, userActivity.ToString()); }
internal void SaveUserActivity(UserActivity userActivity, List<CouponType> allCoupons) { if (userActivity == null) { log.Warn("[SaveUserActivity] tried to save user activity, but received NULL parameter."); return; }; try { var userProfile = GetUserProfile(); var userData = userProfile.GetUserData(); string userActivityType = userActivity.GetType().Name; if (userData.UserActivityList == null) { userData.UserActivityList = new List<UserActivity>(); } userActivity.Date = DateTime.UtcNow; userData.TotalPoints += userActivity.Points; userData.UserActivityList.Add(userActivity); //Check if reached Medal MedalRequirementsChecker medalChecker = medalChecker = factoryMedalChecker(); ; if(medalChecker == null) return; log.InfoFormat("[SaveUserActivity] Spontaneous : user={0}, userActivity={1}.", userProfile.UserName, userActivity.ToString()); List<UserMedal> medalList = medalChecker.ObtainMedalBecauseOfActivity(userData, userActivity); if (medalList.Count > 0) { if (userData.UserMedalsList == null) userData.UserMedalsList = new List<UserMedal>(); foreach (var medal in medalList) { CouponType tempCoupon = GetCoupon(userData, allCoupons, userActivity); if (tempCoupon != null) // get coupon for new medal { medal.Coupon = tempCoupon; } else // if already have all coupons get last one { if (allCoupons != null && allCoupons.Count > 0) { medal.Coupon = allCoupons.LastOrDefault(); } } userData.UserMedalsList.Add(medal); } userData.MedalNotificationFlag = true; } userProfile.SetUserData(userData); userProfile.Save(); } catch (Exception ex) { log.ErrorFormat("[SaveUserActivity] error: Exception={0}.", ex.ToString()); } }