class Dscf::Marketplace::BusinessesController

def create

def create
  business = @clazz.new(model_params.except(:business_license))
  if business.save
    # Add document upload after save
    if params[:business][:business_license].present?
      document = Dscf::Core::Document.new(
        documentable: business,
        document_type: :business_license
      )
      document.file.attach(params[:business][:business_license])
      document.save!
    end
    business = @clazz.includes(eager_loaded_associations).find(business.id) if eager_loaded_associations.present?
    includes = serializer_includes_for_action(:create)
    options = {include: includes} if includes.present?
    render_success(data: business, serializer_options: options, status: :created)
  else
    render_error(errors: business.errors.full_messages[0], status: :unprocessable_entity)
  end
rescue => e
  render_error(error: e.message)
end

def default_serializer_includes

def default_serializer_includes
  {
    index: [ :business_type, :user, :documents ],
    show: [ :business_type, :user, :documents ],
    create: [ :business_type, :user, :documents ],
    update: [ :business_type, :user, :documents ]
  }
end

def eager_loaded_associations

def eager_loaded_associations
  [ :business_type, :user, :documents ]
end

def has_business

def has_business
  has_business = current_user&.businesses&.exists? || false
  render_success("business.success.has_business_check", data: {has_business: has_business})
end

def model_params

def model_params
  params.require(:business).permit(
    :name, :description, :contact_email, :contact_phone, :tin_number,
    :business_type_id, :user_id, business_license: :file
  )
end

def my_businesses

def my_businesses
  service = MyResourceService.new(current_user)
  businesses = service.my_businesses(params)
  options = {
    include: default_serializer_includes[:index] || [],
    meta: {resource_type: "my_businesses"}
  }
  render_success("businesses.success.index", data: businesses, serializer_options: options)
end