MIF_E31221305/TA_API/database/seeders/DatabaseSeeder.php

165 lines
6.5 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\User;
use App\Models\TailorSpecialization;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// Clear existing data
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
DB::table('customer_specialization')->truncate();
DB::table('tailor_specialization_user')->truncate();
DB::table('tailor_specializations')->truncate();
DB::table('users')->truncate();
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
// Seed Tailor Specializations first
$specializations = [
['name' => 'Baju Pria', 'category' => 'Pria', 'photo' => 'specializations/pria.jpg'],
['name' => 'Baju Wanita', 'category' => 'Wanita', 'photo' => 'specializations/wanita.jpg'],
['name' => 'Baju Anak', 'category' => 'Anak', 'photo' => 'specializations/anak.jpg'],
['name' => 'Baju Muslim', 'category' => 'Muslim', 'photo' => 'specializations/muslim.jpg'],
['name' => 'Baju Pesta', 'category' => 'Pesta', 'photo' => 'specializations/pesta.jpg'],
['name' => 'Baju Olahraga', 'category' => 'Olahraga', 'photo' => 'specializations/olahraga.jpg'],
];
foreach ($specializations as $spec) {
TailorSpecialization::create($spec);
}
// Seed verified pelanggan
$pelanggan = [
[
'name' => 'Ujang',
'email' => 'ahmdrifai290@gmail.com',
'password' => Hash::make('pelanggan123'),
'role' => 'pelanggan',
'phone_number' => '081234567890',
'address' => 'Jl. Merdeka No. 123, Jakarta',
'latitude' => -6.2088,
'longitude' => 106.8456,
'email_verified_at' => Carbon::now(),
'preferred_specializations' => [1, 2] // Baju Pria dan Wanita
],
[
'name' => 'Sarah Wijaya',
'email' => 'sarah.wijaya@gmail.com',
'password' => Hash::make('password123'),
'role' => 'pelanggan',
'phone_number' => '081234567891',
'address' => 'Jl. Sudirman No. 45, Jakarta',
'latitude' => -6.2088,
'longitude' => 106.8456,
'email_verified_at' => Carbon::now(),
'preferred_specializations' => [2, 4] // Baju Wanita dan Muslim
],
[
'name' => 'Budi Santoso',
'email' => 'budi.santoso@gmail.com',
'password' => Hash::make('password123'),
'role' => 'pelanggan',
'phone_number' => '081234567892',
'address' => 'Jl. Gatot Subroto No. 67, Jakarta',
'latitude' => -6.2088,
'longitude' => 106.8456,
'email_verified_at' => Carbon::now(),
'preferred_specializations' => [1, 5] // Baju Pria dan Pesta
]
];
foreach ($pelanggan as $p) {
$user = User::create([
'name' => $p['name'],
'email' => $p['email'],
'password' => $p['password'],
'role' => $p['role'],
'phone_number' => $p['phone_number'],
'address' => $p['address'],
'latitude' => $p['latitude'],
'longitude' => $p['longitude'],
'email_verified_at' => $p['email_verified_at']
]);
// Attach preferred specializations
$user->preferredSpecializations()->attach($p['preferred_specializations']);
}
// Seed verified penjahit
$penjahit = [
[
'name' => 'Asep Tailor',
'email' => 'ahmdrifai2905@gmail.com',
'password' => Hash::make('penjahit123'),
'role' => 'penjahit',
'phone_number' => '081234567893',
'address' => 'Jl. Thamrin No. 89, Jakarta',
'latitude' => -6.2088,
'longitude' => 106.8456,
'email_verified_at' => Carbon::now(),
'shop_description' => 'Toko jahit profesional dengan pengalaman 10 tahun',
'specializations' => [1, 2, 5] // Baju Pria, Wanita, dan Pesta
],
[
'name' => 'Maya Fashion',
'email' => 'maya.fashion@gmail.com',
'password' => Hash::make('password123'),
'role' => 'penjahit',
'phone_number' => '081234567894',
'address' => 'Jl. Asia Afrika No. 34, Bandung',
'latitude' => -6.9175,
'longitude' => 107.6191,
'email_verified_at' => Carbon::now(),
'shop_description' => 'Spesialis jahit baju wanita dan muslim',
'specializations' => [2, 4] // Baju Wanita dan Muslim
],
[
'name' => 'Rudi Custom Tailor',
'email' => 'rudi.tailor@gmail.com',
'password' => Hash::make('password123'),
'role' => 'penjahit',
'phone_number' => '081234567895',
'address' => 'Jl. Veteran No. 56, Surabaya',
'latitude' => -7.2575,
'longitude' => 112.7521,
'email_verified_at' => Carbon::now(),
'shop_description' => 'Toko jahit custom untuk pria dan wanita',
'specializations' => [1, 2, 3] // Baju Pria, Wanita, dan Anak
]
];
foreach ($penjahit as $p) {
$user = User::create([
'name' => $p['name'],
'email' => $p['email'],
'password' => $p['password'],
'role' => $p['role'],
'phone_number' => $p['phone_number'],
'address' => $p['address'],
'latitude' => $p['latitude'],
'longitude' => $p['longitude'],
'email_verified_at' => $p['email_verified_at'],
'shop_description' => $p['shop_description']
]);
// Attach specializations
$user->specializations()->attach($p['specializations']);
}
$this->call([
AdminUserSeeder::class
]);
}
}