internal void InsertData(string id, string displayName, double playTime, double afkTime, double lastReward, int referrals)
{
    UserData userData;
    if (!_userData.TryGetValue(id, out userData))
        userData = _userData[id] = new UserData();
    userData.displayName = displayName;
    userData.playtime = playTime;
    userData.afkTime = afkTime;
    userData.lastRewardTime = playTime;
    userData.referrals = referrals;
}

"userData.lastRewardTime = playTime;" is the culprit line, its using play time rather than the actual "lastReward" variable I assume its meant to be using.