Files
PMS/db/seeds.rb
2026-01-28 09:53:14 +06:30

127 lines
4.1 KiB
Ruby

# This file should contain all the record creation needed to seed the database with its default values.
puts "Creating departments..."
# Create default departments
Department.find_or_create_by!(name: 'Engineering') do |dept|
dept.description = 'Software development and technical operations'
end
Department.find_or_create_by!(name: 'Marketing') do |dept|
dept.description = 'Marketing campaigns and brand management'
end
Department.find_or_create_by!(name: 'Human Resources') do |dept|
dept.description = 'Employee management and company culture'
end
Department.find_or_create_by!(name: 'Sales') do |dept|
dept.description = 'Customer relations and revenue generation'
end
puts "Creating users..."
# Create admin user
admin = User.find_or_create_by!(email: 'admin@company.com') do |user|
user.name = 'System Admin'
user.password = 'password123'
user.role = 'admin'
end
puts "Creating manager users..."
# Create manager users
hr_manager = User.find_or_create_by!(email: 'hr@company.com') do |user|
user.name = 'HR Manager'
user.password = 'password123'
user.role = 'manager'
user.department = Department.find_by(name: 'Human Resources')
end
eng_manager = User.find_or_create_by!(email: 'eng@company.com') do |user|
user.name = 'Engineering Manager'
user.password = 'password123'
user.role = 'manager'
user.department = Department.find_by(name: 'Engineering')
end
puts "Creating employee users..."
# Create employee users
john_employee = User.find_or_create_by!(email: 'john@company.com') do |user|
user.name = 'John Doe'
user.password = 'password123'
user.role = 'employee'
user.department = Department.find_by(name: 'Engineering')
end
jane_employee = User.find_or_create_by!(email: 'jane@company.com') do |user|
user.name = 'Jane Smith'
user.password = 'password123'
user.role = 'employee'
user.department = Department.find_by(name: 'Marketing')
end
bob_employee = User.find_or_create_by!(email: 'bob@company.com') do |user|
user.name = 'Bob Johnson'
user.password = 'password123'
user.role = 'employee'
user.department = Department.find_by(name: 'Sales')
end
puts "Creating tasks..."
# Get department references
eng_dept = Department.find_by(name: 'Engineering')
hr_dept = Department.find_by(name: 'Human Resources')
marketing_dept = Department.find_by(name: 'Marketing')
sales_dept = Department.find_by(name: 'Sales')
# Create sample tasks
Task.find_or_create_by!(title: 'Setup development environment') do |task|
task.description = 'Configure the development server and database connections'
task.priority = 'planning'
task.status = 'open'
task.department = eng_dept
task.creator = eng_manager
task.assignee = john_employee
end
Task.find_or_create_by!(title: 'Review Q1 marketing strategy') do |task|
task.description = 'Analyze marketing campaign performance and plan Q2 initiatives'
task.priority = 'review'
task.status = 'in_progress'
task.department = marketing_dept
task.creator = eng_manager
task.assignee = jane_employee
end
Task.find_or_create_by!(title: 'Update employee handbook') do |task|
task.description = 'Review and update company policies for 2024'
task.priority = 'approval'
task.status = 'open'
task.department = hr_dept
task.creator = hr_manager
end
Task.find_or_create_by!(title: 'Client meeting preparation') do |task|
task.description = 'Prepare presentation materials and agenda for upcoming client meeting'
task.priority = 'urgent'
task.status = 'in_progress'
task.department = sales_dept
task.creator = eng_manager
task.assignee = bob_employee
end
Task.find_or_create_by!(title: 'Database optimization') do |task|
task.description = 'Optimize database queries and improve performance'
task.priority = 'execution'
task.status = 'open'
task.department = eng_dept
task.creator = eng_manager
end
puts "Seed data created successfully!"
puts "\nLogin credentials:"
puts "Admin: admin@company.com / password123"
puts "HR Manager: hr@company.com / password123"
puts "Engineering Manager: eng@company.com / password123"
puts "Employees:"
puts "- john@company.com / password123"
puts "- jane@company.com / password123"
puts "- bob@company.com / password123"