From ef6a655ce09714245b79ac2b6542c0f0de3bd061 Mon Sep 17 00:00:00 2001 From: 1day2die Date: Tue, 7 Jun 2022 16:19:14 +0200 Subject: [PATCH] Add referral to API i guess? --- app/Http/Controllers/Api/UserController.php | 34 ++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 62ee244e..de60fc3d 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -8,6 +8,8 @@ use App\Http\Controllers\Controller; use App\Models\DiscordUser; use App\Models\Settings; use App\Models\User; +use App\Notifications\ReferralNotification; +use Carbon\Carbon; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Contracts\Routing\ResponseFactory; @@ -17,6 +19,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; use Illuminate\Validation\Rule; @@ -227,7 +230,17 @@ class UserController extends Controller return $user; } - + /** + * Create a unique Referral Code for User + * @return string + */ + protected function createReferralCode(){ + $referralcode = STR::random(8); + if (User::where('referral_code', '=', $referralcode)->exists()) { + $this->createReferralCode(); + } + return $referralcode; + } /** * @throws ValidationException */ @@ -245,6 +258,7 @@ class UserController extends Controller 'credits' => config('SETTINGS::USER:INITIAL_CREDITS', 150), 'server_limit' => config('SETTINGS::USER:INITIAL_SERVER_LIMIT', 1), 'password' => Hash::make($request->input('password')), + 'referral_code' => $this->createReferralCode(), ]); $response = Pterodactyl::client()->post('/application/users', [ @@ -269,7 +283,25 @@ class UserController extends Controller $user->update([ 'pterodactyl_id' => $response->json()['attributes']['id'] ]); + //INCREMENT REFERRAL-USER CREDITS + if(!empty($request->input("referral_code")){ + $ref_code = $request->input("referral_code"); + $new_user = $user->id; + if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) { + if(config("SETTINGS::REFERRAL:MODE" == "sign-up") || config("SETTINGS::REFERRAL:MODE" == "both")) { + $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD")); + $ref_user->notify(new ReferralNotification($ref_user->id, $new_user)); + } + //INSERT INTO USER_REFERRALS TABLE + DB::table('user_referrals')->insert([ + 'referral_id' => $ref_user->id, + 'registered_user_id' => $user->id, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now() + ]); + } + } $user->sendEmailVerificationNotification(); return $user;