127 lines
4.1 KiB
Ruby
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" |