Refactored ticket creation and made it thread safe.

This commit is contained in:
Thorsten Eckel 2015-07-24 12:13:12 +02:00
parent ef9dbde59d
commit 72d830c408

View file

@ -542,7 +542,6 @@ module Import::OTRS
next if !record.key?(key.to_s) next if !record.key?(key.to_s)
ticket_new[value] = record[key.to_s] ticket_new[value] = record[key.to_s]
} }
ticket_old = Ticket.where( id: ticket_new[:id] ).first
# find owner # find owner
if ticket_new[:owner] if ticket_new[:owner]
@ -568,15 +567,22 @@ module Import::OTRS
ticket_new[:customer_id] = 1 ticket_new[:customer_id] = 1
end end
# set state types # update or create ticket
ticket_old = Ticket.find(ticket_new[:id])
if ticket_old if ticket_old
log "update Ticket.find(#{ticket_new[:id]})" log "update Ticket.find(#{ticket_new[:id]})"
ticket_old.update_attributes(ticket_new) ticket_old.update_attributes(ticket_new)
else else
log "add Ticket.find(#{ticket_new[:id]})" log "add Ticket.find(#{ticket_new[:id]})"
ticket = Ticket.new(ticket_new)
ticket.id = ticket_new[:id] begin
ticket.save ticket = Ticket.new(ticket_new)
ticket.id = ticket_new[:id]
ticket.save
rescue ActiveRecord::RecordNotUnique
log "Ticket #{ticket_new[:id]} is handled by another thead, skipping."
next
end
end end
# utf8 encode # utf8 encode