Files
HRM-System/database/seeders/OfferTemplateSeeder.php
2026-04-13 08:16:56 +08:00

375 lines
12 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\OfferTemplate;
use App\Models\User;
use Illuminate\Database\Seeder;
class OfferTemplateSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Get all companies
$companies = User::where('type', 'company')->get();
if ($companies->isEmpty()) {
$this->command->warn('No company users found. Please run DefaultCompanySeeder first.');
return;
}
// Fixed offer templates for consistent data
$offerTemplates = [
[
'name' => 'Standard Full-Time Offer',
'template_content' => 'Dear {{candidate_name}},
We are pleased to extend an offer of employment for the position of {{job_title}} at {{company_name}}. We believe your skills and experience will be a valuable addition to our team.
Position Details:
- Job Title: {{job_title}}
- Department: {{department}}
- Start Date: {{start_date}}
- Reporting Manager: {{manager_name}}
Compensation Package:
- Annual Salary: {{salary}}
- Performance Bonus: {{bonus}}
- Benefits: {{benefits}}
Terms and Conditions:
- Employment Type: Full-time
- Probation Period: {{probation_period}}
- Notice Period: {{notice_period}}
- Working Hours: {{working_hours}}
This offer is contingent upon successful completion of background verification and reference checks. Please confirm your acceptance by {{offer_expiry_date}}.
We look forward to welcoming you to our team.
Best regards,
{{hr_manager_name}}
Human Resources
{{company_name}}',
'variables' => [
'candidate_name',
'job_title',
'company_name',
'department',
'start_date',
'manager_name',
'salary',
'bonus',
'benefits',
'probation_period',
'notice_period',
'working_hours',
'offer_expiry_date',
'hr_manager_name'
],
'status' => 'active'
],
[
'name' => 'Contract Position Offer',
'template_content' => 'Dear {{candidate_name}},
We are pleased to offer you a contract position for {{job_title}} at {{company_name}}.
Contract Details:
- Position: {{job_title}}
- Contract Duration: {{contract_duration}}
- Start Date: {{start_date}}
- End Date: {{end_date}}
- Location: {{work_location}}
Compensation:
- Contract Rate: {{contract_rate}}
- Payment Terms: {{payment_terms}}
- Additional Benefits: {{contract_benefits}}
Terms:
- Contract Type: {{contract_type}}
- Renewal Options: {{renewal_terms}}
- Termination Clause: {{termination_clause}}
Please review the attached contract agreement and confirm your acceptance by {{acceptance_deadline}}.
Best regards,
{{hr_contact_name}}
{{company_name}}',
'variables' => [
'candidate_name',
'job_title',
'company_name',
'contract_duration',
'start_date',
'end_date',
'work_location',
'contract_rate',
'payment_terms',
'contract_benefits',
'contract_type',
'renewal_terms',
'termination_clause',
'acceptance_deadline',
'hr_contact_name'
],
'status' => 'active'
],
[
'name' => 'Senior Management Offer',
'template_content' => 'Dear {{candidate_name}},
On behalf of {{company_name}}, I am delighted to extend an offer for the position of {{job_title}}.
Executive Position Details:
- Title: {{job_title}}
- Division: {{division}}
- Reporting: {{reporting_structure}}
- Start Date: {{start_date}}
Executive Compensation Package:
- Base Salary: {{base_salary}}
- Variable Compensation: {{variable_pay}}
- Equity/Stock Options: {{equity_details}}
- Executive Benefits: {{executive_benefits}}
- Car Allowance: {{car_allowance}}
- Club Membership: {{club_membership}}
Additional Terms:
- Employment Agreement: {{employment_agreement}}
- Confidentiality: {{confidentiality_terms}}
- Non-Compete: {{non_compete_clause}}
This offer reflects our confidence in your ability to contribute significantly to our organization\'s success.
Please confirm your acceptance by {{response_deadline}}.
Sincerely,
{{ceo_name}}
Chief Executive Officer
{{company_name}}',
'variables' => [
'candidate_name',
'company_name',
'job_title',
'division',
'reporting_structure',
'start_date',
'base_salary',
'variable_pay',
'equity_details',
'executive_benefits',
'car_allowance',
'club_membership',
'employment_agreement',
'confidentiality_terms',
'non_compete_clause',
'response_deadline',
'ceo_name'
],
'status' => 'active'
],
[
'name' => 'Internship Offer',
'template_content' => 'Dear {{candidate_name}},
Congratulations! We are pleased to offer you an internship position at {{company_name}}.
Internship Details:
- Position: {{internship_title}}
- Department: {{department}}
- Duration: {{internship_duration}}
- Start Date: {{start_date}}
- End Date: {{end_date}}
- Supervisor: {{supervisor_name}}
Internship Benefits:
- Monthly Stipend: {{stipend_amount}}
- Learning Opportunities: {{learning_programs}}
- Mentorship: {{mentorship_details}}
- Certificate: {{certificate_details}}
Expectations:
- Working Hours: {{working_hours}}
- Project Assignments: {{project_details}}
- Performance Evaluation: {{evaluation_process}}
We are excited to have you join our team and contribute to your professional development.
Please confirm your acceptance by {{confirmation_date}}.
Best regards,
{{internship_coordinator}}
{{company_name}}',
'variables' => [
'candidate_name',
'company_name',
'internship_title',
'department',
'internship_duration',
'start_date',
'end_date',
'supervisor_name',
'stipend_amount',
'learning_programs',
'mentorship_details',
'certificate_details',
'working_hours',
'project_details',
'evaluation_process',
'confirmation_date',
'internship_coordinator'
],
'status' => 'active'
],
[
'name' => 'Remote Work Offer',
'template_content' => 'Dear {{candidate_name}},
We are excited to offer you the remote position of {{job_title}} at {{company_name}}.
Remote Work Details:
- Position: {{job_title}}
- Work Model: {{work_model}}
- Time Zone: {{time_zone}}
- Start Date: {{start_date}}
- Team: {{team_name}}
Compensation & Benefits:
- Annual Salary: {{annual_salary}}
- Remote Work Allowance: {{remote_allowance}}
- Equipment Provided: {{equipment_list}}
- Health Benefits: {{health_benefits}}
- Vacation Days: {{vacation_days}}
Remote Work Policies:
- Communication Tools: {{communication_tools}}
- Meeting Schedule: {{meeting_schedule}}
- Performance Tracking: {{performance_metrics}}
- Office Visits: {{office_visit_requirements}}
Technology Setup:
- Laptop/Desktop: {{computer_specs}}
- Software Licenses: {{software_provided}}
- Internet Reimbursement: {{internet_allowance}}
Please confirm your acceptance and provide your shipping address for equipment delivery by {{acceptance_date}}.
Welcome to the team!
{{hiring_manager_name}}
{{company_name}}',
'variables' => [
'candidate_name',
'job_title',
'company_name',
'work_model',
'time_zone',
'start_date',
'team_name',
'annual_salary',
'remote_allowance',
'equipment_list',
'health_benefits',
'vacation_days',
'communication_tools',
'meeting_schedule',
'performance_metrics',
'office_visit_requirements',
'computer_specs',
'software_provided',
'internet_allowance',
'acceptance_date',
'hiring_manager_name'
],
'status' => 'active'
],
[
'name' => 'Part-Time Position Offer',
'template_content' => 'Dear {{candidate_name}},
We are pleased to offer you a part-time position as {{job_title}} at {{company_name}}.
Part-Time Position Details:
- Job Title: {{job_title}}
- Department: {{department}}
- Working Hours: {{part_time_hours}}
- Schedule: {{work_schedule}}
- Start Date: {{start_date}}
Compensation:
- Hourly Rate: {{hourly_rate}}
- Monthly Salary: {{monthly_salary}}
- Pro-rated Benefits: {{prorated_benefits}}
Work Arrangement:
- Flexible Hours: {{flexible_hours}}
- Core Hours: {{core_hours}}
- Remote Work: {{remote_options}}
Benefits (Pro-rated):
- Health Insurance: {{health_coverage}}
- Paid Time Off: {{pto_days}}
- Professional Development: {{training_budget}}
This position offers excellent work-life balance while contributing meaningfully to our organization.
Please respond by {{response_date}}.
Best regards,
{{hr_representative}}
{{company_name}}',
'variables' => [
'candidate_name',
'job_title',
'company_name',
'department',
'part_time_hours',
'work_schedule',
'start_date',
'hourly_rate',
'monthly_salary',
'prorated_benefits',
'flexible_hours',
'core_hours',
'remote_options',
'health_coverage',
'pto_days',
'training_budget',
'response_date',
'hr_representative'
],
'status' => 'active'
]
];
foreach ($companies as $company) {
foreach ($offerTemplates as $templateData) {
// Check if offer template already exists for this company
if (OfferTemplate::where('name', $templateData['name'])->where('created_by', $company->id)->exists()) {
continue;
}
try {
OfferTemplate::create([
'name' => $templateData['name'],
'template_content' => $templateData['template_content'],
'variables' => $templateData['variables'],
'status' => $templateData['status'],
'created_by' => $company->id,
]);
} catch (\Exception $e) {
$this->command->error('Failed to create offer template: ' . $templateData['name'] . ' for company: ' . $company->name);
continue;
}
}
}
$this->command->info('OfferTemplate seeder completed successfully!');
}
}