fix(user): menambahkan kolom referral_code dan menyesuaikan logika yang ada
-mengubah validasi username dari alpha_dash menjad alpha_num -membuat method untuk generate kode nya di string helper
This commit is contained in:
parent
cde9091f54
commit
7fa46c0e9b
@ -41,3 +41,13 @@ function formatDiscount($amount, VoucherType $type, string $currency = 'Rp'): st
|
||||
: currency($amount, $currency);
|
||||
}
|
||||
}
|
||||
|
||||
if (! function_exists('generateReferralCode')) {
|
||||
function generateReferralCode(string $username, int $unique): string
|
||||
{
|
||||
$prefix = Str::substr($username, 0, 6);
|
||||
$year = date('y');
|
||||
|
||||
return Str::upper($prefix).$year.$unique;
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,6 +65,12 @@ public function columns(): array
|
||||
))
|
||||
->html(),
|
||||
|
||||
Column::make('Kode Referral', 'referral_code')
|
||||
->format(fn ($value) => Blade::render(
|
||||
'<flux:badge color="zinc">'.$value.'</flux:badge>'
|
||||
))
|
||||
->html(),
|
||||
|
||||
Column::make('Gaji Pokok', 'employee.base_salary')
|
||||
->searchable()
|
||||
->sortable()
|
||||
|
||||
@ -42,7 +42,7 @@ public function rules(): array
|
||||
{
|
||||
return [
|
||||
'full_name' => ['required', 'string', 'max:100'],
|
||||
'username' => ['required', 'alpha_dash', 'min:5', 'max:20', Rule::unique('users', 'username')->ignore($this->user)],
|
||||
'username' => ['required', 'alpha_num', 'min:5', 'max:20', Rule::unique('users', 'username')->ignore($this->user)],
|
||||
'email' => ['required', 'email', 'max:100', Rule::unique('users', 'email')->ignore($this->user)],
|
||||
'phone_number' => ['required', 'string', new PhoneNumber],
|
||||
'base_salary' => ['required', 'regex:/^[0-9.]+$/', new UnsignedInteger],
|
||||
@ -101,6 +101,7 @@ public function store()
|
||||
$user = User::create([
|
||||
...$data,
|
||||
'password' => Hash::make(config('myconfig.password_default')),
|
||||
'referral_code' => generateReferralCode($data['username'], User::max('id') + 1),
|
||||
'status' => $data['status'],
|
||||
]);
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Enums\UserStatus;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
@ -10,10 +11,13 @@ 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' => fake()->unique()->regexify('[A-Za-z0-9]{8}'),
|
||||
'username' => $username,
|
||||
'password' => Hash::make(config('myconfig.password_default')),
|
||||
'referral_code' => generateReferralCode($username, User::max('id') + 1),
|
||||
'status' => $this->faker->randomElement(UserStatus::cases()),
|
||||
];
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@ 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();
|
||||
|
||||
@ -17,6 +17,7 @@ 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([
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
->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'])
|
||||
|
||||
@ -33,6 +33,7 @@
|
||||
->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'])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user