|
@@ -0,0 +1,127 @@
|
|
|
+module FillDB
|
|
|
+ def self.load( agents, customers, groups, organizations, tickets )
|
|
|
+ puts "load db with:"
|
|
|
+ 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(999999).to_s, :active => true )
|
|
|
+ organization_pool.push organization
|
|
|
+ }
|
|
|
+ else
|
|
|
+ organization_pool = Organization.where(:active => true)
|
|
|
+ end
|
|
|
+
|
|
|
+ # create agents
|
|
|
+ agent_pool = []
|
|
|
+ if agents && !agents.zero?
|
|
|
+ roles = Role.where( :name => [ 'Agent'] )
|
|
|
+ groups_all = Group.all
|
|
|
+ (1..agents).each {|count|
|
|
|
+ suffix = rand(99999).to_s
|
|
|
+ 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,
|
|
|
+ )
|
|
|
+ agent_pool.push user
|
|
|
+ }
|
|
|
+ else
|
|
|
+ agent_pool = Role.where(:name => 'Agent').first.users.where(:active => true)
|
|
|
+ puts " take #{agent_pool.length} agents"
|
|
|
+ end
|
|
|
+
|
|
|
+ # create customer
|
|
|
+ customer_pool = []
|
|
|
+ if customers && !customers.zero?
|
|
|
+ roles = Role.where( :name => [ 'Customer'] )
|
|
|
+ groups_all = Group.all
|
|
|
+ (1..customers).each {|count|
|
|
|
+ suffix = rand(99999).to_s
|
|
|
+ organization = nil
|
|
|
+ if !organization_pool.empty? && rand(2) == 1
|
|
|
+ organization = organization_pool[ organization_pool.length-1 ]
|
|
|
+ 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,
|
|
|
+ )
|
|
|
+ customer_pool.push user
|
|
|
+ }
|
|
|
+ else
|
|
|
+ customer_pool = Role.where(:name => 'Customer').first.users.where(:active => true)
|
|
|
+ end
|
|
|
+
|
|
|
+ # create groups
|
|
|
+ group_pool = []
|
|
|
+ if groups && !groups.zero?
|
|
|
+ puts "1..#{groups}"
|
|
|
+ (1..groups).each {|count|
|
|
|
+ group = Group.create( :name => 'FillGroup::' + rand(999999).to_s, :active => true )
|
|
|
+ group_pool.push group
|
|
|
+ Role.where(:name => 'Agent').first.users.where(:active => true).each {|user|
|
|
|
+ user_groups = user.groups
|
|
|
+ user_groups.push group
|
|
|
+ user.groups = user_groups
|
|
|
+ user.save
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ group_pool = Group.where(:active => true)
|
|
|
+ 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) ]
|
|
|
+ ticket = Ticket.create(
|
|
|
+ :title => 'some title äöüß' + rand(999999).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,
|
|
|
+ )
|
|
|
+ # create article
|
|
|
+ article = Ticket::Article.create(
|
|
|
+ :ticket_id => ticket.id,
|
|
|
+ :from => customer.email,
|
|
|
+ :to => 'some_recipient@example.com',
|
|
|
+ :subject => 'some subject' + rand(999999).to_s,
|
|
|
+ :message_id => 'some@id-' + rand(999999).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,
|
|
|
+ )
|
|
|
+ }
|
|
|
+ end
|
|
|
+ end
|
|
|
+end
|