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;
}