dawarich/app/services/families/create.rb
Eugene Burmakin e17f732706 Minor changes
2025-09-27 21:14:40 +02:00

66 lines
1.4 KiB
Ruby

# frozen_string_literal: true
module Families
class Create
attr_reader :user, :name, :family, :errors
def initialize(user:, name:)
@user = user
@name = name
@errors = {}
end
def call
if user.in_family?
@errors[:user] = 'User is already in a family'
return false
end
if user.created_family.present?
@errors[:user] = 'User has already created a family'
return false
end
unless can_create_family?
@errors[:base] = 'Cannot create family'
return false
end
ActiveRecord::Base.transaction do
create_family
create_owner_membership
end
true
rescue ActiveRecord::RecordInvalid => e
if @family&.errors&.any?
@family.errors.each { |attribute, message| @errors[attribute] = message }
else
@errors[:base] = e.message
end
false
end
private
def can_create_family?
return true if DawarichSettings.self_hosted?
# TODO: Add cloud plan validation here when needed
# For now, allow all users to create families
true
end
def create_family
@family = Family.create!(name:, creator: user)
end
def create_owner_membership
FamilyMembership.create!(
family: family,
user: user,
role: :owner
)
end
end
end