MIF_E31232103/database/seeders/PromoSeeder.php

71 lines
2.7 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Promo;
use App\Models\RentalCompany;
use Illuminate\Database\Seeder;
class PromoSeeder extends Seeder
{
public function run(): void
{
$approvedRental = RentalCompany::where('company_name', 'Velora Trans')->firstOrFail();
$pendingRental = RentalCompany::where('company_name', 'Nusantara Mobility')->firstOrFail();
$promos = [
[
'rental_company_id' => $approvedRental->id,
'title' => 'Loyal Customer 10%',
'promo_code' => 'LOYAL10',
'description' => 'Promo khusus customer loyal dengan minimal transaksi tertentu.',
'discount_type' => Promo::DISCOUNT_PERCENT,
'discount_value' => 10,
'min_transaction' => 400000,
'start_date' => now()->subMonth()->toDateString(),
'end_date' => now()->addMonth()->toDateString(),
'quota' => null,
'used_count' => 0,
'loyal_only' => true,
'status' => Promo::STATUS_ACTIVE,
],
[
'rental_company_id' => $approvedRental->id,
'title' => 'Diskon Akhir Pekan',
'promo_code' => 'WEEKEND50',
'description' => 'Potongan tetap untuk transaksi di atas nominal tertentu.',
'discount_type' => Promo::DISCOUNT_FIXED,
'discount_value' => 50000,
'min_transaction' => 500000,
'start_date' => now()->subMonth()->toDateString(),
'end_date' => now()->addMonth()->toDateString(),
'quota' => 20,
'used_count' => 4,
'loyal_only' => false,
'status' => Promo::STATUS_ACTIVE,
],
[
'rental_company_id' => $pendingRental->id,
'title' => 'Promo Pending Rental',
'promo_code' => 'PENDING20',
'description' => 'Promo contoh untuk rental pending.',
'discount_type' => Promo::DISCOUNT_PERCENT,
'discount_value' => 20,
'min_transaction' => 300000,
'start_date' => now()->subMonth()->toDateString(),
'end_date' => now()->addMonth()->toDateString(),
'quota' => 10,
'used_count' => 1,
'loyal_only' => false,
'status' => Promo::STATUS_INACTIVE,
],
];
foreach ($promos as $promoData) {
Promo::updateOrCreate(
['promo_code' => $promoData['promo_code']],
$promoData
);
}
}
}