Files
fizzy/app/models/user/settings.rb
T
Mike Dalessio e4011ef211 Update primary keys on customer data to UUIDs
- schema changes to primary and foreign keys
- fixture changes
- customer data models subclass AccountScopedRecord
- import script updated
2025-11-17 09:12:30 -05:00

57 lines
1.2 KiB
Ruby

class User::Settings < AccountScopedRecord
belongs_to :user
enum :bundle_email_frequency, %i[ never every_few_hours daily weekly ],
default: :every_few_hours, prefix: :bundle_email
after_update :review_pending_bundles, if: :saved_change_to_bundle_email_frequency?
def bundle_aggregation_period
case bundle_email_frequency
when "every_few_hours"
4.hours
when "daily"
1.day
when "weekly"
1.week
else
1.day
end
end
def bundling_emails?
!bundle_email_never? && !user.system? && user.active?
end
def timezone
if timezone_name.present?
ActiveSupport::TimeZone[timezone_name] || default_timezone
else
default_timezone
end
end
private
def review_pending_bundles
if bundling_emails?
flush_pending_bundles
else
cancel_pending_bundles
end
end
def cancel_pending_bundles
user.notification_bundles.pending.find_each do |bundle|
bundle.destroy
end
end
def flush_pending_bundles
user.notification_bundles.pending.find_each(&:flush)
end
def default_timezone
ActiveSupport::TimeZone["UTC"]
end
end