trabajo-afectivo/lib/fill_db.rb

129 lines
4.1 KiB
Ruby
Raw Normal View History

2015-05-04 18:58:28 +00:00
# rubocop:disable Rails/Output
2014-07-23 22:20:39 +00:00
module FillDB
def self.load( agents, customers, groups, organizations, tickets )
puts 'load db with:'
2014-07-23 22:20:39 +00:00
puts " agents:#{agents}"
puts " customers:#{customers}"
puts " groups:#{groups}"
puts " organizations:#{organizations}"
puts " tickets:#{tickets}"
# set current user
UserInfo.current_user_id = 1
# organizations
organization_pool = []
if organizations && !organizations.zero?
(1..organizations).each {|count|
organization = Organization.create( name: 'FillOrganization::' + rand(999_999).to_s, active: true )
2014-07-23 22:20:39 +00:00
organization_pool.push organization
}
else
organization_pool = Organization.where(active: true)
2014-07-23 22:20:39 +00:00
end
# create agents
agent_pool = []
if agents && !agents.zero?
roles = Role.where( name: [ 'Agent'] )
2014-07-23 22:20:39 +00:00
groups_all = Group.all
(1..agents).each {|count|
suffix = rand(99_999).to_s
2014-07-23 22:20:39 +00:00
user = User.create_or_update(
login: "filldb-agent-#{suffix}",
firstname: "agent #{suffix}",
lastname: "agent #{suffix}",
email: "filldb-agent-#{suffix}@example.com",
password: 'agentpw',
active: true,
roles: roles,
groups: groups_all,
2014-07-23 22:20:39 +00:00
)
agent_pool.push user
}
else
agent_pool = Role.where(name: 'Agent').first.users.where(active: true)
2014-07-23 22:20:39 +00:00
puts " take #{agent_pool.length} agents"
end
# create customer
customer_pool = []
if customers && !customers.zero?
roles = Role.where( name: [ 'Customer'] )
2014-07-23 22:20:39 +00:00
groups_all = Group.all
(1..customers).each {|count|
suffix = rand(99_999).to_s
2014-07-23 22:20:39 +00:00
organization = nil
if !organization_pool.empty? && rand(2) == 1
organization = organization_pool[ organization_pool.length - 1 ]
2014-07-23 22:20:39 +00:00
end
user = User.create_or_update(
login: "filldb-customer-#{suffix}",
firstname: "customer #{suffix}",
lastname: "customer #{suffix}",
email: "filldb-customer-#{suffix}@example.com",
password: 'customerpw',
active: true,
organization: organization,
roles: roles,
2014-07-23 22:20:39 +00:00
)
customer_pool.push user
}
else
customer_pool = Role.where(name: 'Customer').first.users.where(active: true)
2014-07-23 22:20:39 +00:00
end
# create groups
group_pool = []
if groups && !groups.zero?
puts "1..#{groups}"
(1..groups).each {|count|
group = Group.create( name: 'FillGroup::' + rand(999_999).to_s, active: true )
2014-07-23 22:20:39 +00:00
group_pool.push group
Role.where(name: 'Agent').first.users.where(active: true).each {|user|
2014-07-23 22:20:39 +00:00
user_groups = user.groups
user_groups.push group
user.groups = user_groups
user.save
}
}
else
group_pool = Group.where(active: true)
2014-07-23 22:20:39 +00:00
end
# create tickets
priority_pool = Ticket::Priority.all
state_pool = Ticket::State.all
if tickets && !tickets.zero?
(1..tickets).each {|count|
customer = customer_pool[ rand(customer_pool.length - 1) ]
agent = agent_pool[ rand(agent_pool.length - 1) ]
2014-07-23 22:20:39 +00:00
ticket = Ticket.create(
title: 'some title äöüß' + rand(999_999).to_s,
group: group_pool[ rand(group_pool.length - 1) ],
customer: customer,
owner: agent,
state: state_pool[ rand(state_pool.length - 1) ],
priority: priority_pool[ rand(priority_pool.length - 1) ],
updated_by_id: agent.id,
created_by_id: agent.id,
2014-07-23 22:20:39 +00:00
)
# create article
article = Ticket::Article.create(
ticket_id: ticket.id,
from: customer.email,
to: 'some_recipient@example.com',
subject: 'some subject' + rand(999_999).to_s,
message_id: 'some@id-' + rand(999_999).to_s,
body: 'some message ...',
internal: false,
sender: Ticket::Article::Sender.where(name: 'Customer').first,
type: Ticket::Article::Type.where(name: 'phone').first,
updated_by_id: agent.id,
created_by_id: agent.id,
2014-07-23 22:20:39 +00:00
)
}
end
end
end