Refactored ticket creation and made it thread safe.
This commit is contained in:
parent
ef9dbde59d
commit
72d830c408
1 changed files with 11 additions and 5 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue