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