/home2/mshostin/hall-management.ms-hostingladz.com/database/seeders/PanelRolesSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Role;
use App\Models\User;
use App\Models\Hall;
use App\Models\State;
use App\Models\City;
use Illuminate\Support\Facades\Hash;
class PanelRolesSeeder extends Seeder
{
public function run(): void
{
// -----------------------------
// ROLES
// -----------------------------
$superAdminRole = Role::updateOrCreate(['slug' => 'super_admin'], ['name' => 'Super Admin']);
$hallAdminRole = Role::updateOrCreate(['slug' => 'hall_admin'], ['name' => 'Hall Admin']);
$userRole = Role::updateOrCreate(['slug' => 'user'], ['name' => 'User']);
// -----------------------------
// SUPER ADMIN
// -----------------------------
$superAdmin = User::updateOrCreate(
['email' => 'superadmin@mail.com'],
[
'name' => 'Super Admin',
'password' => Hash::make('12345678'),
]
);
$superAdmin->roles()->sync([$superAdminRole->id]);
// -----------------------------
// STATES
// -----------------------------
$pakistanStates = [
'Punjab', 'Sindh', 'Khyber Pakhtunkhwa', 'Balochistan',
'Islamabad Capital Territory', 'Azad Jammu & Kashmir', 'Gilgit Baltistan'
];
$states = [];
foreach ($pakistanStates as $stateName) {
$states[$stateName] = State::updateOrCreate(
['name' => $stateName],
[
'created_by' => $superAdmin->id,
'updated_by' => $superAdmin->id,
]
);
}
// -----------------------------
// CITIES
// -----------------------------
$citiesByProvince = [
"Punjab" => [
"Lahore","Faisalabad","Rawalpindi","Multan","Gujranwala",
"Sialkot","Sargodha","Bahawalpur","Sheikhupura","Rahim Yar Khan",
"Jhang","Gujrat","Kasur","Sahiwal","Okara","Mianwali",
"Attock","Dera Ghazi Khan","Muzaffargarh","Chiniot","Vehari",
"Khanewal","Hafizabad","Mandi Bahauddin","Lodhran","Narowal",
"Pakpattan","Bhakkar","Toba Tek Singh","Jhelum","Nankana Sahib"
],
"Sindh" => [
"Karachi","Hyderabad","Sukkur","Larkana","Mirpur Khas",
"Shaheed Benazirabad","Jacobabad","Shikarpur","Kashmore",
"Ghotki","Dadu","Khairpur","Thatta","Badin","Sanghar",
"Umerkot","Tharparkar","Kambar Shahdadkot"
],
"Khyber Pakhtunkhwa" => [
"Peshawar","Mardan","Abbottabad","Swat","Mansehra",
"Kohat","Dera Ismail Khan","Charsadda","Nowshera",
"Haripur","Bannu","Swabi","Shangla","Karak","Hangu",
"Battagram","Buner","Khyber","Chitral"
],
"Balochistan" => [
"Quetta","Gwadar","Turbat","Khuzdar","Sibi",
"Zhob","Loralai","Noshki","Chaman","Hub",
"Kalāt","Panjgur","Kharan","Ziarat","Mach","Dera Murad Jamali"
],
"Islamabad Capital Territory" => ["Islamabad"],
"Azad Jammu & Kashmir" => [
"Muzaffarabad","Mirpur","Rawalakot","Bagh","Kotli",
"Bhimber","Neelum","Hattian Bala"
],
"Gilgit Baltistan" => [
"Gilgit","Skardu","Hunza","Ghizer","Shigar",
"Kharmang","Astore","Ghanche"
]
];
foreach ($citiesByProvince as $stateName => $cities) {
$state = $states[$stateName];
foreach ($cities as $cityName) {
City::updateOrCreate(
['name' => $cityName, 'state_id' => $state->id],
[
'created_by' => $superAdmin->id,
'updated_by' => $superAdmin->id,
]
);
}
}
// -----------------------------
// FARMS + FARM ADMINS
// -----------------------------
$halls = [];
$hallAdmins = [];
for ($i = 1; $i <= 3; $i++) {
// Pick random state and city for hall
$state = $states[array_rand($states)];
$city = $state->cities()->inRandomOrder()->first();
// Create Hall
$halls[$i] = Hall::create([
'name' => "Hall $i",
'owner_name' => "Owner $i",
'state' => $state->name,
'city' => $city->name ?? 'Unknown',
'created_by' => $superAdmin->id,
'updated_by' => $superAdmin->id,
]);
// Create Hall Admin
$hallAdmins[$i] = User::create([
'name' => "Hall Admin $i",
'email' => "halladmin$i@mail.com",
'password' => Hash::make('12345678'),
'hall_id' => $halls[$i]->id,
]);
$hallAdmins[$i]->roles()->sync([$hallAdminRole->id]);
}
// -----------------------------
// NORMAL USERS (3 per hall)
// -----------------------------
for ($i = 1; $i <= 3; $i++) {
for ($u = 1; $u <= 3; $u++) {
$user = User::create([
'name' => "User{$i}_{$u}",
'email' => "user{$i}{$u}@mail.com",
'password' => Hash::make('12345678'),
'hall_id' => $halls[$i]->id,
]);
$user->roles()->sync([$userRole->id]);
}
}
// $permissions = [
// // Dashboard
// ['name' => 'View Dashboard', 'slug' => 'view-dashboard'],
// // Profile
// ['name' => 'View Profile', 'slug' => 'view-profile'],
// ['name' => 'Edit Profile', 'slug' => 'edit-profile'],
// ['name' => 'Delete Profile', 'slug' => 'delete-profile'],
// // Categories
// ['name' => 'View Categories', 'slug' => 'view-categories'],
// ['name' => 'Create Categories', 'slug' => 'create-categories'],
// ['name' => 'Edit Categories', 'slug' => 'edit-categories'],
// ['name' => 'Delete Categories', 'slug' => 'delete-categories'],
// // Subcategories
// ['name' => 'View Subcategories', 'slug' => 'view-subcategories'],
// ['name' => 'Create Subcategories', 'slug' => 'create-subcategories'],
// ['name' => 'Edit Subcategories', 'slug' => 'edit-subcategories'],
// ['name' => 'Delete Subcategories', 'slug' => 'delete-subcategories'],
// // Blogs
// ['name' => 'View Blogs', 'slug' => 'view-blogs'],
// ['name' => 'Create Blogs', 'slug' => 'create-blogs'],
// ['name' => 'Edit Blogs', 'slug' => 'edit-blogs'],
// ['name' => 'Delete Blogs', 'slug' => 'delete-blogs'],
// // Services
// ['name' => 'View Services', 'slug' => 'view-services'],
// ['name' => 'Create Services', 'slug' => 'create-services'],
// ['name' => 'Edit Services', 'slug' => 'edit-services'],
// ['name' => 'Delete Services', 'slug' => 'delete-services'],
// ];
// foreach ($permissions as $perm) {
// Permission::updateOrCreate(
// ['slug' => $perm['slug']],
// ['name' => $perm['name']]
// );
// }
$this->command->info("✅ Seeded: SuperAdmin, All States, Cities, 3 Halls, 3 HallAdmins, 9 Users.");
}
}