# frozen_string_literal: true class Tracks::CreateJob < ApplicationJob queue_as :default def perform(user_id) user = User.find(user_id) tracks_created = Tracks::CreateFromPoints.new(user).call create_success_notification(user, tracks_created) rescue StandardError => e ExceptionReporter.call(e, 'Failed to create tracks for user') create_error_notification(user, e) end private def create_success_notification(user, tracks_created) Notifications::Create.new( user: user, kind: :info, title: 'Tracks Generated', content: "Created #{tracks_created} tracks from your location data. Check your tracks section to view them." ).call end def create_error_notification(user, error) Notifications::Create.new( user: user, kind: :error, title: 'Track Generation Failed', content: "Failed to generate tracks from your location data: #{error.message}" ).call end end