PM_Console/backend/database/seeders/ProjectSeeder.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);
}
}
}