diff --git a/app/Libraries/MultiDB.php b/app/Libraries/MultiDB.php index 712ed37184e4..a0cd1aa8606f 100644 --- a/app/Libraries/MultiDB.php +++ b/app/Libraries/MultiDB.php @@ -449,6 +449,23 @@ class MultiDB return false; } + + public static function findUserByReferralCode(string $referral_code): ?User + { + $current_db = config('database.default'); + + foreach (self::$dbs as $db) { + if ($user = User::on($db)->where('referral_code', $referral_code)->first()) { + self::setDb($db); + return $user; + } + } + + self::setDB($current_db); + + return false; + } + public static function findAndSetDbByClientId($client_id): ?Client { $current_db = config('database.default'); diff --git a/app/Models/User.php b/app/Models/User.php index c10132696530..b3b71535599e 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -67,6 +67,7 @@ use Laracasts\Presenter\PresentableTrait; * @property string|null $custom_value2 * @property string|null $custom_value3 * @property string|null $custom_value4 + * @property object|null $referral_meta * @property int|null $created_at * @property int|null $updated_at * @property int|null|Carbon $deleted_at @@ -181,6 +182,7 @@ class User extends Authenticatable implements MustVerifyEmail 'created_at' => 'timestamp', 'deleted_at' => 'timestamp', 'oauth_user_token_expiry' => 'datetime', + 'referral_meta' => 'object', ]; public function name() @@ -680,4 +682,5 @@ class User extends Authenticatable implements MustVerifyEmail { return ctrans('texts.user'); } + } diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index 83d4d8fb10a0..5ad95ba7cb9b 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -66,6 +66,7 @@ class UserTransformer extends EntityTransformer 'language_id' => (string) $user->language_id ?: '', 'user_logged_in_notification' => (bool) $user->user_logged_in_notification, 'referral_code' => (string) $user->referral_code, + 'referral_meta' => $user->referral_meta ? (object)$user->referral_meta : new \stdClass, ]; } diff --git a/database/migrations/2024_06_19_015127_2024_06_19_referral_meta_data.php b/database/migrations/2024_06_19_015127_2024_06_19_referral_meta_data.php new file mode 100644 index 000000000000..b85db245d48d --- /dev/null +++ b/database/migrations/2024_06_19_015127_2024_06_19_referral_meta_data.php @@ -0,0 +1,28 @@ +mediumText('referral_meta')->nullable(); + }); + + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +};