From 66e759f03a19d68dcdb3eec391715ddb2a119007 Mon Sep 17 00:00:00 2001 From: AmirmahdiNourkazemi Date: Wed, 10 Jun 2026 11:46:28 +0330 Subject: [PATCH] feat: add age and status --- app/Http/Controllers/UserController.php | 20 +++++++++++++- ...26_06_10_000000_add_age_to_users_table.php | 26 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2026_06_10_000000_add_age_to_users_table.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 5325cbe..962c677 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -209,6 +209,7 @@ public function register(Request $request) 'package_name' => 'string|required', 'method' => 'string|in:code,link|nullable', 'birthday' => 'date|nullable', + 'age' => 'integer|nullable|min:0|max:120', 'gender' => ['integer', 'nullable', Rule::in(User::GENDERS)], 'referrer_code' => ['string', 'nullable', 'exists:users,referral_code'], ]); @@ -534,12 +535,18 @@ public function updateProfile(Request $request) 'first_name' => 'string|nullable', 'last_name' => 'string|nullable', 'birthday' => 'date|nullable', + 'age' => 'integer|nullable|min:0|max:120', 'gender' => ['integer', 'nullable', Rule::in(User::GENDERS)], 'email' => 'email|nullable', 'mobile' => [new MobileNumber, 'string'], - 'avatar' => 'image' + 'avatar' => 'image', + 'referrer_code' => ['string', 'nullable', 'exists:users,referral_code'], ]); + // referrer_code (کد معرف) is not a column — resolve it to referred_by below + $referrerCode = $data['referrer_code'] ?? null; + unset($data['referrer_code']); + $packageNameData = $request->validate([ 'package_name' => 'string', 'fcm_token' => 'string', @@ -574,6 +581,17 @@ public function updateProfile(Request $request) $data['avatar'] = "storage/avatars/$user->uuid.png"; } + // Set the referrer (کد معرف) once: only if not already referred, and never self-referral + if ($referrerCode && !$user->referred_by) { + $referrer = User::where('referral_code', $referrerCode)->first(); + if ($referrer && $referrer->id === $user->id) { + return response()->json(['message' => 'you cannot use your own referral code'], 400); + } + if ($referrer) { + $data['referred_by'] = $referrer->id; + } + } + $user->update($data); if ($packageName ?? null) { diff --git a/database/migrations/2026_06_10_000000_add_age_to_users_table.php b/database/migrations/2026_06_10_000000_add_age_to_users_table.php new file mode 100644 index 0000000..64d4800 --- /dev/null +++ b/database/migrations/2026_06_10_000000_add_age_to_users_table.php @@ -0,0 +1,26 @@ +unsignedTinyInteger('age')->nullable()->after('birthday'); + } + }); + } + + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + if (Schema::hasColumn('users', 'age')) { + $table->dropColumn('age'); + } + }); + } +};