# frozen_string_literal: true

# Check the access policies for API::CartController
class CartPolicy < ApplicationPolicy
  def create?
    !Setting.get('store_hidden') || user&.privileged?
  end

  %w[add_item remove_item set_quantity refresh_item validate create_item].each do |action|
    define_method "#{action}?" do
      return user.privileged? || (record.statistic_profile_id == user.statistic_profile.id) if user

      record.statistic_profile_id.nil? && record.operator_profile_id.nil?
    end
  end

  def set_offer?
    !record.is_offered || (user.privileged? && record.customer_id != user.id)
  end

  def set_customer?
    user.privileged?
  end
end
