112 خطوط
5.6 KiB
PHP
112 خطوط
5.6 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class ProjectSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$users = DB::table('users')->pluck('id', 'email');
|
|
$now = now();
|
|
|
|
$projects = [
|
|
[
|
|
'title' => 'سامانه مدیریت منابع انسانی',
|
|
'description' => 'طراحی و پیادهسازی سامانه جامع مدیریت منابع انسانی شامل ماژولهای حضور و غیاب، حقوق و دستمزد، ارزیابی عملکرد و مدیریت پرسنل',
|
|
'client' => 'شرکت صنعتی پارس',
|
|
'project_manager_id' => $users['manager@pm.com'],
|
|
'start_date' => '2026-01-05',
|
|
'end_date' => '2026-07-15',
|
|
'priority' => 'high',
|
|
'status' => 'in_progress',
|
|
'progress' => 65,
|
|
'risk_level' => 'medium',
|
|
'budget' => 850000000.00,
|
|
'estimated_hours' => 2400.00,
|
|
'actual_hours' => 1560.00,
|
|
'tags' => json_encode(['HR', 'web', 'dashboard']),
|
|
'notes' => 'پیشرفت مطابق برنامه زمانبندی میباشد',
|
|
'is_archived' => false,
|
|
'created_by' => $users['admin@pm.com'],
|
|
'created_at' => $now,
|
|
'updated_at' => $now,
|
|
],
|
|
[
|
|
'title' => 'اپلیکیشن موبایل فروشگاهی',
|
|
'description' => 'توسعه اپلیکیشن موبایل فروشگاهی چندمنظوره با قابلیتهای پرداخت آنلاین، مدیریت سفارشات، اعلانها و پنل مدیریت پیشرفته',
|
|
'client' => 'فروشگاه زنجیرهای البرز',
|
|
'project_manager_id' => $users['manager@pm.com'],
|
|
'start_date' => '2026-02-15',
|
|
'end_date' => '2026-09-30',
|
|
'priority' => 'urgent',
|
|
'status' => 'in_progress',
|
|
'progress' => 30,
|
|
'risk_level' => 'high',
|
|
'budget' => 1200000000.00,
|
|
'estimated_hours' => 3200.00,
|
|
'actual_hours' => 960.00,
|
|
'tags' => json_encode(['mobile', 'android', 'ios', 'ecommerce']),
|
|
'notes' => 'تأخیر در تحویل ماژول پرداخت از سمت تیم فینتک',
|
|
'is_archived' => false,
|
|
'created_by' => $users['admin@pm.com'],
|
|
'created_at' => $now,
|
|
'updated_at' => $now,
|
|
],
|
|
[
|
|
'title' => 'بازطراحی وبسایت شرکتی',
|
|
'description' => 'بازطراحی کامل وبسایت شرکتی با رویکرد مدرن، واکنشگرا و سئو محور شامل بخشهای معرفی، محصولات، وبلاگ و تماس با ما',
|
|
'client' => 'شرکت خدمات بیمه ایران',
|
|
'project_manager_id' => $users['manager@pm.com'],
|
|
'start_date' => '2026-05-01',
|
|
'end_date' => '2026-08-15',
|
|
'priority' => 'medium',
|
|
'status' => 'planning',
|
|
'progress' => 10,
|
|
'risk_level' => 'low',
|
|
'budget' => 450000000.00,
|
|
'estimated_hours' => 1200.00,
|
|
'actual_hours' => 120.00,
|
|
'tags' => json_encode(['website', 'redesign', 'ui-ux', 'seo']),
|
|
'notes' => 'در مرحله جمعآوری نیازمندیها',
|
|
'is_archived' => false,
|
|
'created_by' => $users['admin@pm.com'],
|
|
'created_at' => $now,
|
|
'updated_at' => $now,
|
|
],
|
|
];
|
|
|
|
foreach ($projects as $project) {
|
|
DB::table('projects')->insert($project);
|
|
}
|
|
|
|
$projectIds = DB::table('projects')->pluck('id');
|
|
$project1Id = $projectIds[0];
|
|
$project2Id = $projectIds[1];
|
|
$project3Id = $projectIds[2];
|
|
|
|
$projectMembers = [
|
|
['project_id' => $project1Id, 'user_id' => $users['manager@pm.com'], 'role_in_project' => 'مدیر پروژه'],
|
|
['project_id' => $project1Id, 'user_id' => $users['member@pm.com'], 'role_in_project' => 'توسعهدهنده'],
|
|
['project_id' => $project1Id, 'user_id' => $users['observer@pm.com'], 'role_in_project' => 'ناظر کیفیت'],
|
|
['project_id' => $project1Id, 'user_id' => $users['ceo@pm.com'], 'role_in_project' => 'حامی پروژه'],
|
|
|
|
['project_id' => $project2Id, 'user_id' => $users['manager@pm.com'], 'role_in_project' => 'مدیر پروژه'],
|
|
['project_id' => $project2Id, 'user_id' => $users['member@pm.com'], 'role_in_project' => 'توسعهدهنده موبایل'],
|
|
['project_id' => $project2Id, 'user_id' => $users['observer@pm.com'], 'role_in_project' => 'تستکننده'],
|
|
|
|
['project_id' => $project3Id, 'user_id' => $users['manager@pm.com'], 'role_in_project' => 'مدیر پروژه'],
|
|
['project_id' => $project3Id, 'user_id' => $users['member@pm.com'], 'role_in_project' => 'طراح رابط کاربری'],
|
|
['project_id' => $project3Id, 'user_id' => $users['observer@pm.com'], 'role_in_project' => 'کارشناس محتوا'],
|
|
];
|
|
|
|
foreach ($projectMembers as $member) {
|
|
$member['created_at'] = $now;
|
|
$member['updated_at'] = $now;
|
|
DB::table('project_user')->insert($member);
|
|
}
|
|
}
|
|
}
|