44
55use App \Domain \CatchEmAll \Interface \Achievement ;
66use App \Domain \CatchEmAll \Models \UserAchievement ;
7+ use App \Models \EventUser ;
78use App \Models \User ;
89
910class AchievementFactory
1011{
1112 /**
1213 * Create a new user achievement instance.
13- *
14- * @param User $user
15- * @param string $achievementId
16- * @return UserAchievement
1714 */
18- public static function createUserAchievement (User $ user , Achievement $ achievement ): UserAchievement
15+ public static function createUserAchievement (EventUser $ eventUser , Achievement $ achievement ): UserAchievement
1916 {
2017 return UserAchievement::firstOrCreate ([
21- 'user_id ' => $ user ->id ,
18+ 'event_user_id ' => $ eventUser ->id ,
2219 'achievement ' => $ achievement ->getId (),
2320 'progress ' => 0 ,
2421 ]);
2522 }
2623
2724 /**
2825 * Update the progress of a user achievement.
29- *
30- * @param User $user
31- * @param Achievement $achievement
32- * @param int $newProgress
33- * @return UserAchievement
3426 */
35- public static function updateUserAchievementProgress (User $ user , Achievement $ achievement , int $ newProgress ): UserAchievement
27+ public static function updateUserAchievementProgress (EventUser $ eventUser , Achievement $ achievement , int $ newProgress ): UserAchievement
3628 {
3729 $ existing = UserAchievement::firstOrCreate ([
38- 'user_id ' => $ user ->id ,
30+ 'event_user_id ' => $ eventUser ->id ,
3931 'achievement ' => $ achievement ->getId (),
4032 ], [
4133 'progress ' => 0 ,
4234 ]);
4335
4436 $ existing ->progress = min ($ newProgress , $ achievement ->getMaxProgress ());
4537
46- if ($ existing ->progress >= $ achievement ->getMaxProgress () && !$ existing ->earned_at ) {
38+ if ($ existing ->progress >= $ achievement ->getMaxProgress () && ! $ existing ->earned_at ) {
4739 $ existing ->earned_at = now ();
4840 }
4941
@@ -54,15 +46,11 @@ public static function updateUserAchievementProgress(User $user, Achievement $ac
5446
5547 /**
5648 * Grant an achievement to a user.
57- *
58- * @param User $user
59- * @param Achievement $achievement
60- * @return UserAchievement
6149 */
62- public static function grantUserAchievement (User $ user , Achievement $ achievement ): UserAchievement
50+ public static function grantUserAchievement (EventUser $ eventUser , Achievement $ achievement ): UserAchievement
6351 {
6452 $ userAchievement = UserAchievement::firstOrCreate ([
65- 'user_id ' => $ user ->id ,
53+ 'event_user_id ' => $ eventUser ->id ,
6654 'achievement ' => $ achievement ->getId (),
6755 'progress ' => $ achievement ->getMaxProgress (),
6856 ]);
@@ -76,14 +64,11 @@ public static function grantUserAchievement(User $user, Achievement $achievement
7664 /**
7765 * Get all achievement data for a user with progress and completion status.
7866 * Filters out hidden achievements and secret achievements that haven't been earned yet.
79- *
80- * @param User $user
81- * @return array
8267 */
83- public static function getUserAchievementData (User $ user ): array
68+ public static function getUserAchievementData (EventUser $ eventUser ): array
8469 {
8570 // Get all user achievements with their progress
86- $ userAchievements = UserAchievement::where ('user_id ' , $ user ->id )->get ();
71+ $ userAchievements = UserAchievement::where ('event_user_id ' , $ eventUser ->id )->get ();
8772
8873 // Get all registered achievements
8974 $ allAchievements = AchievementRegister::getAllAchievementInstances ();
@@ -106,7 +91,7 @@ public static function getUserAchievementData(User $user): array
10691 $ isCompleted = $ userAchievement && $ userAchievement ->isCompleted ();
10792
10893 // Filter out secret achievements that haven't been earned yet
109- if ($ achievement ->isSecret () && !$ isCompleted ) {
94+ if ($ achievement ->isSecret () && ! $ isCompleted ) {
11095 continue ; // Skip this achievement instead of throwing an exception
11196 }
11297
0 commit comments