class Multiwoven::Integrations::Destination::Zendesk::Client

def process_records(records, stream)

def process_records(records, stream)
  log_message_array = []
  write_success = 0
  write_failure = 0
  records.each do |record|
    zendesk_data = prepare_record_data(record, stream.name)
    plural_stream_name = pluralize_stream_name(stream.name.downcase)
    args = [plural_stream_name, @action, zendesk_data]
    if @action == "create"
      response = @client.send(plural_stream_name).create!(zendesk_data)
    else
      existing_record = @client.send(plural_stream_name).find(id: record[:id])
      response = existing_record.update!(zendesk_data)
    end
    write_success += 1
    log_message_array << log_request_response("info", args, response)
  rescue StandardError => e
    handle_exception(e, {
                       context: "ZENDESK:WRITE:EXCEPTION",
                       type: "error",
                       sync_id: @sync_config.sync_id,
                       sync_run_id: @sync_config.sync_run_id
                     })
    write_failure += 1
    log_message_array << log_request_response("error", args, e.message)
  end
  tracking_message(write_success, write_failure, log_message_array)
end