Merge branch 'affiliate-program' of https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0 into vapor/development

# Conflicts:
#	routes/api.php
This commit is contained in:
Edmond Lang
2025-11-30 23:34:31 +08:00
50 changed files with 2427 additions and 6 deletions
@@ -0,0 +1,43 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateAffiliatesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('affiliates', function (Blueprint $table) {
$table->id();
$table->string('code')->unique();
$table->string('campaign_name');
$table->text('campaign_description')->nullable();
$table->boolean('is_active')->default(true);
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedInteger('clicks_count')->default(0);
$table->unsignedInteger('registrations_count')->default(0);
$table->unsignedInteger('orders_count')->default(0);
$table->timestamps();
$table->softDeletes();
$table->index('code');
$table->index('is_active');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('affiliates');
}
}
@@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUserAffiliatesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('user_affiliates', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('affiliate_id');
$table->timestamp('clicked_at')->nullable();
$table->timestamp('registered_at')->nullable();
$table->timestamps();
$table->unique(['user_id', 'affiliate_id']);
$table->index('user_id');
$table->index('affiliate_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('affiliate_id')->references('id')->on('affiliates')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('user_affiliates');
}
}
@@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddForeignKeyToAffiliatesCreatedBy extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('affiliates', function (Blueprint $table) {
// Add foreign key constraint to created_by column
$table->foreign('created_by')
->references('id')
->on('users')
->onDelete('set null'); // Set to null if user is deleted, preserving affiliate record
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('affiliates', function (Blueprint $table) {
// Drop the foreign key constraint
$table->dropForeign(['created_by']);
});
}
}