Class: SpreeCmCommissioner::Exports::OperatorGuestJsonGzip
- Inherits:
-
SpreeCmCommissioner::Export
- Object
- Spree::Base
- Base
- SpreeCmCommissioner::Export
- SpreeCmCommissioner::Exports::OperatorGuestJsonGzip
- Defined in:
- app/models/spree_cm_commissioner/exports/operator_guest_json_gzip.rb
Instance Method Summary collapse
-
#export ⇒ Object
override.
Methods inherited from SpreeCmCommissioner::Export
#enqueue_export, #exported_file_name, #exported_file_url, #set_uuid
Instance Method Details
#export ⇒ Object
override
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/models/spree_cm_commissioner/exports/operator_guest_json_gzip.rb', line 9 def export # rubocop:disable Metrics/AbcSize = [] << "Export started at #{Time.current.iso8601}" update(status: :progress, track_messages: ) guests = SpreeCmCommissioner::GuestSearcherQuery.new(event_id: exportable_id).call << "Eager loaded started at #{Time.current.iso8601}" update(track_messages: ) guests = guests.includes( :occupation, :user, check_ins: %i[check_in_by check_in_session], line_item: [:variant, { order: :bill_address }] ) << "Eager loaded ended at #{Time.current.iso8601}" update(track_messages: ) hash = SpreeCmCommissioner::V2::Operator::GuestSerializer.new( guests, { include: resource_includes } ).serializable_hash << "Serialization completed at #{Time.current.iso8601}" update(track_messages: ) file_name = "exports_operator_guest_#{id}.json.gz" json_gzip = ActiveSupport::Gzip.compress(JSON.generate(hash)) exported_file.attach( io: StringIO.new(json_gzip), filename: file_name, content_type: 'application/gzip' ) << "Completed at #{Time.current.iso8601}" update( file_size_bytes: json_gzip.bytesize, guests_count: guests.size, status: :done, track_messages: ) rescue StandardError => e CmAppLogger.error(label: "#{self.class.name}#export", data: { export_id: id, error: e., backtrace: e.backtrace }) track_errors = [] track_errors << "Error: #{e.} at #{Time.current.iso8601}" track_errors << e.backtrace.take(5).join("\n") update(status: :failed, track_errors: track_errors) end |