class Seatsio::SocialDistancingRuleset

def self.fixed(name, disabled_seats: [], index: 0)

def self.fixed(name, disabled_seats: [], index: 0)
  SocialDistancingRuleset.new(name, index: index, disabled_seats: disabled_seats, fixed_group_layout: true)
end

def self.rule_based(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,

def self.rule_based(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,
                    number_of_disabled_aisle_seats: 0, max_group_size: 0, max_occupancy_absolute: 0, max_occupancy_percentage: 0, one_group_per_table: false,
                    disabled_seats: [], enabled_seats: [], index: 0)
  SocialDistancingRuleset.new(name,
                              number_of_disabled_seats_to_the_sides: number_of_disabled_seats_to_the_sides,
                              disable_seats_in_front_and_behind: disable_seats_in_front_and_behind,
                              disable_diagonal_seats_in_front_and_behind: disable_diagonal_seats_in_front_and_behind,
                              number_of_disabled_aisle_seats: number_of_disabled_aisle_seats,
                              max_group_size: max_group_size,
                              max_occupancy_absolute: max_occupancy_absolute,
                              max_occupancy_percentage: max_occupancy_percentage,
                              one_group_per_table: one_group_per_table,
                              fixed_group_layout: false,
                              disabled_seats: disabled_seats,
                              enabled_seats: enabled_seats,
                              index: index)
end

def == (other)

def == (other)
  self.name == other.name &&
    self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
    self.disable_seats_in_front_and_behind == other.disable_seats_in_front_and_behind &&
    self.disable_diagonal_seats_in_front_and_behind == other.disable_diagonal_seats_in_front_and_behind &&
    self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
    self.max_group_size == other.max_group_size &&
    self.max_occupancy_absolute == other.max_occupancy_absolute &&
    self.max_occupancy_percentage == other.max_occupancy_percentage &&
    self.one_group_per_table == other.one_group_per_table &&
    self.fixed_group_layout == other.fixed_group_layout &&
    self.disabled_seats == other.disabled_seats &&
    self.enabled_seats == other.enabled_seats &&
    self.index == other.index
end

def initialize(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,

def initialize(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,
               number_of_disabled_aisle_seats: 0, max_group_size: 0, max_occupancy_absolute: 0, max_occupancy_percentage: 0, one_group_per_table: false,
               fixed_group_layout: false, disabled_seats: [], enabled_seats: [], index: 0)
  @name = name
  @number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
  @disable_seats_in_front_and_behind = disable_seats_in_front_and_behind
  @disable_diagonal_seats_in_front_and_behind = disable_diagonal_seats_in_front_and_behind
  @number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
  @max_group_size = max_group_size
  @max_occupancy_absolute = max_occupancy_absolute
  @max_occupancy_percentage = max_occupancy_percentage
  @one_group_per_table = one_group_per_table
  @fixed_group_layout = fixed_group_layout
  @disabled_seats = disabled_seats
  @enabled_seats = enabled_seats
  @index = index
end