diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index ce99ceb..4c5720b 100644 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -10,6 +10,7 @@ use App\Models\User; use App\Services\ConfigService; use Carbon\Carbon; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Schema; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; @@ -173,7 +174,9 @@ class AuthController extends Controller $customer = Customer::create($data); if ($referrer) { - $referrer->increment('total_referrals'); + if (Schema::hasColumn((new Customer)->getTable(), 'total_referrals')) { + $referrer->increment('total_referrals'); + } if ($cfg->getBool('register_referral_sms_to_referrer', false)) { $messageRef = "{$data['name']} با کد معرف شما ثبت نام کرد.\nبا اولین خرید او پاداش دریافت میکنید.\n" . $this->Config('name_fa'); $this->Send($referrer->mobile, $messageRef); diff --git a/database/sql/add_total_referrals_column.sql b/database/sql/add_total_referrals_column.sql index fb388f9..d7c5fb5 100644 --- a/database/sql/add_total_referrals_column.sql +++ b/database/sql/add_total_referrals_column.sql @@ -3,8 +3,21 @@ START TRANSACTION; -ALTER TABLE `customers` - ADD COLUMN `total_referrals` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `referral_to_id`; +SET @db = DATABASE(); +SET @sql = IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'customers' AND COLUMN_NAME = 'total_referrals') = 0, + IF( + (SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'customers' AND COLUMN_NAME = 'referral_to_id') > 0, + 'ALTER TABLE `customers` ADD COLUMN `total_referrals` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `referral_to_id`', + 'ALTER TABLE `customers` ADD COLUMN `total_referrals` INT UNSIGNED NOT NULL DEFAULT 0' + ), + 'SELECT ''skip customers.total_referrals'' AS info' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; -- هم‌تراز با تعداد ثبت‌نام‌های واقعی (اختیاری ولی توصیه می‌شود) UPDATE `customers` AS c