Revert "fix(user): menambahkan kolom referral_code dan menyesuaikan logika yang ada"

This reverts commit 7fa46c0e9b.
This commit is contained in:
Yoga Pangestu 2025-10-01 15:47:56 +07:00
parent f33275994b
commit 4f41461310
11 changed files with 137 additions and 14 deletions

View File

@ -65,10 +65,8 @@ public function columns(): array
))
->html(),
Column::make('Kode Referral', 'referral_code')
->format(fn ($value) => Blade::render(
'<flux:badge color="zinc">'.$value.'</flux:badge>'
))
Column::make('Kode Referral', 'referralCode.code')
->format(fn ($value) => Blade::render('<flux:badge color="zinc">'.$value.'</flux:badge>'))
->html(),
Column::make('Gaji Pokok', 'employee.base_salary')
@ -139,7 +137,7 @@ public function columns(): array
public function builder(): Builder
{
return User::select('users.id', 'email', 'username', 'users.status', 'employee.code', 'employee.full_name', 'employee.phone_number', 'employee.base_salary', 'employee.address', 'employee.hire_date', 'employee.resign_date', 'employee.birthdate', 'employee.gender')->with('employee');
return User::select('users.id', 'email', 'username', 'users.status', 'employee.code', 'employee.full_name', 'employee.phone_number', 'employee.base_salary', 'employee.address', 'employee.hire_date', 'employee.resign_date', 'employee.birthdate', 'employee.gender')->with(['employee', 'referralCode']);
}
public function filters(): array

View File

@ -0,0 +1,33 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\SoftDeletes;
class ReferralCode extends Model
{
use HasFactory, SoftDeletes;
protected $guarded = ['id'];
protected function casts(): array
{
return [
'uses_count' => 'int',
];
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function referralUsage(): HasOne
{
return $this->hasOne(ReferralUsage::class);
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class ReferralUsage extends Model
{
use HasFactory;
protected $guarded = ['id'];
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function referralCode(): BelongsTo
{
return $this->belongsTo(ReferralCode::class);
}
}

View File

@ -41,4 +41,14 @@ public function membership(): HasOne
{
return $this->hasOne(Membership::class);
}
public function referralCode(): HasOne
{
return $this->hasOne(ReferralCode::class);
}
public function referralUsage(): HasOne
{
return $this->hasOne(ReferralUsage::class);
}
}

View File

@ -3,7 +3,6 @@
namespace Database\Factories;
use App\Enums\UserStatus;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash;
@ -11,13 +10,10 @@ class UserFactory extends Factory
{
public function definition(): array
{
$username = $this->faker->unique()->regexify('[A-Za-z0-9]{8}');
return [
'email' => $this->faker->unique()->safeEmail(),
'username' => $username,
'username' => fake()->unique()->regexify('[A-Za-z0-9]{8}'),
'password' => Hash::make(config('myconfig.password_default')),
'referral_code' => generateReferralCode($username, User::max('id') + 1),
'status' => $this->faker->randomElement(UserStatus::cases()),
];
}

View File

@ -17,7 +17,6 @@ public function up(): void
$table->string('email', 100)->unique();
$table->string('username', 20)->unique();
$table->string('password', 97);
$table->string('referral_code', 20)->unique();
$table->enum('status', [UserStatus::values()])->default(UserStatus::ACTIVE)->comment(UserStatus::comment());
$table->timestamp('last_login_at')->nullable();
$table->timestamp('last_password_change_at')->nullable();

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('referral_codes', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->string('code', 20)->unique();
$table->unsignedInteger('uses_count')->default(0);
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('referral_codes');
}
};

View File

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('referral_usages', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->foreignId('referral_code_id')->constrained()->cascadeOnDelete();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('referral_usages');
}
};

View File

@ -5,6 +5,7 @@
use App\Enums\EmploymentStatus;
use App\Enums\Gender;
use App\Models\Employee;
use App\Models\ReferralCode;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
@ -17,7 +18,6 @@ public function run(): void
'email' => 'project.pangestuyoga@gmail.com',
'username' => 'pangestu',
'password' => Hash::make(config('myconfig.password_default')),
'referral_code' => generateReferralCode('pangestu', 1),
]);
Employee::create([
@ -31,5 +31,10 @@ public function run(): void
'hire_date' => now(),
'status' => EmploymentStatus::PERMANENT,
]);
ReferralCode::create([
'user_id' => $user->id,
'code' => generateReferralCode('pangestu', 1),
]);
}
}

View File

@ -26,7 +26,6 @@
->set('form.full_name', $data['full_name'])
->set('form.username', $data['username'])
->set('form.email', $data['email'])
->set('form.referral_code', $data['referral_code'])
->set('form.phone_number', $data['phone_number'])
->set('form.base_salary', $data['base_salary'])
->set('form.birthdate', $data['birthdate'])

View File

@ -33,7 +33,6 @@
->set('form.full_name', $data['full_name'])
->set('form.username', $data['username'])
->set('form.email', $data['email'])
->set('form.referral_code', $data['referral_code'])
->set('form.phone_number', $data['phone_number'])
->set('form.base_salary', $data['base_salary'])
->set('form.birthdate', $data['birthdate'])