class Multiwoven::Integrations::Destination::MicrosoftDynamics::Client

def process_records(records, stream)

def process_records(records, stream)
  write_success = 0
  write_failure = 0
  properties = stream.json_schema[:properties]
  log_message_array = []
  records.each do |record_object|
    record = extract_data(record_object, properties)
    response = send_data_to_dynamics(record)
    response_code = response.code.to_i
    if response_code >= 200 && response_code < 300
      write_success += 1
      log_message_array << log_request_response("info", record, response["location"])
    else
      write_failure += 1
      log_message_array << log_request_response("error", record, response.body)
    end
  rescue StandardError => e
    # TODO: add sync_id and sync run id to the logs
    handle_exception(e, {
                       context: "MICROSOFT:DYNAMICS: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", record, e.message)
  end
  tracking_message(write_success, write_failure, log_message_array)
end