# frozen_string_literal: true require 'abstract_controller' require 'action_controller' require 'action_view' require 'active_record' # require any helpers require './app/helpers/application_helper' # Retrieve all availabilities and their related objects and write the result as a table in an excel file class AvailabilitiesExportService # export all availabilities def export_index(export) @availabilities = Availability.all.includes(:machines, :trainings, :spaces, :event, :slots) ActionController::Base.prepend_view_path './app/views/' # place data in view_assigns view_assigns = { availabilities: @availabilities } av = ActionView::Base.new(ActionController::Base.view_paths, view_assigns) av.class_eval do # include any needed helpers (for the view) include ApplicationHelper end content = av.render template: 'exports/availabilities_index.xlsx.axlsx' # write content to file File.open(export.file, 'w+b') { |f| f.write content } end end