blob: 1cff0f95a6465837e701c19e146648ced06136d4 [file] [log] [blame]
#
# Batch apply offline updates
Pending.update(env.user, @agenda) do |pending|
agenda = Agenda.parse @agenda, :full
@initials ||= pending['initials']
approved = pending['approved']
unapproved = pending['unapproved']
flagged = pending['flagged']
unflagged = pending['unflagged']
comments = pending['comments']
if @pending['approve']
@pending['approve'].each do |attach, request|
if request == 'approve'
unapproved.delete attach
approved << attach unless approved.include? attach or
agenda.find {|item| item[:attach] == attach and
item['approved'].include? @initials}
else
approved.delete attach
unapproved << attach unless unapproved.include? attach or
not agenda.find {|item| item[:attach] == attach and
item['approved'].include? @initials}
end
end
end
if @pending['flag']
@pending['flag'].each do |attach, request|
if request == 'flag'
unflagged.delete attach
flagged << attach unless flagged.include? attach or
agenda.find {|item| item[:attach] == attach and
Array(item['flagged_by']).include? @initials}
else
flagged.delete attach
unflagged << attach unless unflagged.include? attach or
not agenda.find {|item| item[:attach] == attach and
Array(item['flagged_by']).include? @initials}
end
end
end
if @pending['comment']
@pending['comment'].each do |attach, comment|
if comment.empty?
comments.delete attach
else
comments[attach] = comment
end
end
end
end