Spontaneous.WebApp.Medals.RestaurantAdviserChecker.GetProgress C# (CSharp) Method

GetProgress() public method

public GetProgress ( SpontaneousUserModel statistic ) : MedalProgress
statistic Spontaneous.DataModel.SpontaneousUserModel
return Spontaneous.DataModel.MedalProgress
        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;
        }