From 2217716225c9db6bb3acca7708d7445b785b29b3 Mon Sep 17 00:00:00 2001 From: Sallu9007 Date: Sun, 27 Apr 2025 15:42:42 +0530 Subject: [PATCH] Feat: add database seeders for all models --- .../seeders/BooksPublishedTableSeeder.php | 72 +++++++++++++++++++ database/seeders/DatabaseSeeder.php | 4 ++ database/seeders/DepartmentSeeder.php | 18 +++-- .../ExternalEngagementsTableSeeder.php | 70 ++++++++++++++++++ database/seeders/OnlineCoursesTableSeeder.php | 59 +++++++++++++++ database/seeders/PatentsTableSeeder.php | 62 ++++++++++++++++ database/seeders/RoleSeeder.php | 18 ++--- 7 files changed, 281 insertions(+), 22 deletions(-) create mode 100644 database/seeders/BooksPublishedTableSeeder.php create mode 100644 database/seeders/ExternalEngagementsTableSeeder.php create mode 100644 database/seeders/OnlineCoursesTableSeeder.php create mode 100644 database/seeders/PatentsTableSeeder.php diff --git a/database/seeders/BooksPublishedTableSeeder.php b/database/seeders/BooksPublishedTableSeeder.php new file mode 100644 index 0000000..64bc46e --- /dev/null +++ b/database/seeders/BooksPublishedTableSeeder.php @@ -0,0 +1,72 @@ + rand(1, 5), + 'department_id' => rand(1, 5), + 'author' => $authors[array_rand($authors)], + 'title' => $titles[array_rand($titles)], + 'publisher' => $publishers[array_rand($publishers)], + 'issn' => rand(0, 1) ? $this->generateISSN() : null, + 'date_of_publication' => Carbon::now()->subYears(rand(0, 10))->subMonths(rand(0, 12))->subDays(rand(0, 30))->format('Y-m-d'), + 'proof' => null, // No proof uploaded + ]); + } + } + + private function generateISSN() + { + $firstPart = str_pad(rand(0, 9999), 4, '0', STR_PAD_LEFT); + $secondPart = str_pad(rand(0, 999), 3, '0', STR_PAD_LEFT); + $checkDigit = rand(0, 9); + // Randomly replace the last digit with 'X' + if (rand(0, 1)) { + $checkDigit = 'X'; + } + return "{$firstPart}-{$secondPart}{$checkDigit}"; + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d780a5a..6bd9921 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -23,6 +23,10 @@ class DatabaseSeeder extends Seeder ActivitiesOrganisedTableSeeder::class, IvOrganisedTableSeeder::class, PublicationSeeder::class, + BooksPublishedTableSeeder::class, + PatentsTableSeeder::class, + ExternalEngagementsTableSeeder::class, + OnlineCoursesTableSeeder::class, ]); // User::factory()->create([ diff --git a/database/seeders/DepartmentSeeder.php b/database/seeders/DepartmentSeeder.php index 313e5b5..80245b0 100644 --- a/database/seeders/DepartmentSeeder.php +++ b/database/seeders/DepartmentSeeder.php @@ -2,21 +2,19 @@ namespace Database\Seeders; -use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; -use Illuminate\Support\Facades\DB; +use App\Models\Department; class DepartmentSeeder extends Seeder { - /** - * Run the database seeds. - */ - public function run(): void + public function run() { - DB::table('roles')->insert([ - ['name' => 'Admin'], - ['name' => 'Coordinator'], - ['name' => 'Faculty'], + Department::insert([ + ['name' => 'Computer Science'], + ['name' => 'Mechanical Engineering'], + ['name' => 'Electrical Engineering'], + ['name' => 'Civil Engineering'], + ['name' => 'Information Technology'] ]); } } diff --git a/database/seeders/ExternalEngagementsTableSeeder.php b/database/seeders/ExternalEngagementsTableSeeder.php new file mode 100644 index 0000000..32ab33a --- /dev/null +++ b/database/seeders/ExternalEngagementsTableSeeder.php @@ -0,0 +1,70 @@ +subMonths(rand(1, 24))->subDays(rand(0, 30)); + $endDate = (clone $startDate)->addDays(rand(1, 5)); // 1 to 5 days later + $numDays = $startDate->diffInDays($endDate) + 1; // Including start day + + ExternalEngagement::create([ + 'faculty_id' => rand(1, 5), + 'department_id' => rand(1, 5), + 'activity' => $activities[array_rand($activities)], + 'activity_description' => $activityDescriptions[array_rand($activityDescriptions)], + 'inviting_organization' => $invitingOrganizations[array_rand($invitingOrganizations)], + 'start_date' => $startDate->format('Y-m-d'), + 'end_date' => $endDate->format('Y-m-d'), + 'num_days' => $numDays, + 'proof' => null, // Proof left null for now + ]); + } + } +} diff --git a/database/seeders/OnlineCoursesTableSeeder.php b/database/seeders/OnlineCoursesTableSeeder.php new file mode 100644 index 0000000..5bbba8f --- /dev/null +++ b/database/seeders/OnlineCoursesTableSeeder.php @@ -0,0 +1,59 @@ +subMonths(rand(1, 12))->subDays(rand(0, 30)); + $endDate = (clone $startDate)->addDays(rand(5, 90)); // Course duration between 5 to 90 days + $numDays = $startDate->diffInDays($endDate) + 1; + + OnlineCourse::create([ + 'faculty_id' => rand(1, 5), + 'department_id' => rand(1, 5), + 'course' => $courses[array_rand($courses)], + 'offered_by' => $offeredBys[array_rand($offeredBys)], + 'start_date' => $startDate->format('Y-m-d'), + 'end_date' => $endDate->format('Y-m-d'), + 'num_days' => $numDays, + 'proof' => null, // Proof left null + ]); + } + } +} diff --git a/database/seeders/PatentsTableSeeder.php b/database/seeders/PatentsTableSeeder.php new file mode 100644 index 0000000..5e90d18 --- /dev/null +++ b/database/seeders/PatentsTableSeeder.php @@ -0,0 +1,62 @@ +subYears(rand(1, 5))->subMonths(rand(0, 11))->subDays(rand(0, 29)); + $fillingDate = (clone $submissionDate)->addDays(rand(1, 60)); + + Patent::create([ + 'faculty_id' => rand(1, 5), + 'department_id' => rand(1, 5), + 'title' => $titles[array_rand($titles)], + 'investigator' => $investigators[array_rand($investigators)], + 'application_no' => 'APP' . rand(100000, 999999), // Random Application No + 'type' => $types[array_rand($types)], + 'date_of_submission' => $submissionDate->format('Y-m-d'), + 'date_of_filling' => $fillingDate->format('Y-m-d'), + 'status' => $statuses[array_rand($statuses)], + 'proof' => null, // No proof uploaded + ]); + } + } +} diff --git a/database/seeders/RoleSeeder.php b/database/seeders/RoleSeeder.php index 2d6757a..4218145 100644 --- a/database/seeders/RoleSeeder.php +++ b/database/seeders/RoleSeeder.php @@ -2,23 +2,17 @@ namespace Database\Seeders; -use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; -use Illuminate\Support\Facades\DB; +use App\Models\Role; class RoleSeeder extends Seeder { - /** - * Run the database seeds. - */ - public function run(): void + public function run() { - DB::table('departments')->insert([ - ['name' => 'Computer Engineering'], - ['name' => 'Information Technology'], - ['name' => 'Mechanical Engineering'], - ['name' => 'Electrical Engineering'], - ['name' => 'Civil Engineering'], + Role::insert([ + ['name' => 'Admin'], + ['name' => 'Coordinator'], + ['name' => 'Faculty'] ]); } }