<?php
/**
 * BookiFlex Core
 *
 * @package    BookiFlex
 * @subpackage Core
 * @author     BookiFlex
 * @copyright  Copyright (c) 2025 BookiFlex
 * @license    GPL-2.0-or-later
 *
 * @link       https://bookiflex.com
 */


declare(strict_types=1);
namespace BookiFlex\Core\Model\AccommodationType\Scheme;

use BookiFlex\Core\Model\AccommodationType\Guest\GuestType;
use BookiFlex\Core\ValueObject\PlacementLocation;

defined( 'ABSPATH' ) || exit;

/**
 * Single allocation in a scheme
 */
final class Allocation
{
    private GuestType $guestType;
    private PlacementLocation $location;
    private int $quantity;

    public function __construct(GuestType $guestType, PlacementLocation $location, int $quantity = 1)
    {
        $this->guestType = $guestType;
        $this->location = $location;
        $this->quantity = $quantity;
    }

    public function getGuestType(): GuestType
    {
        return $this->guestType;
    }

    public function getLocation(): PlacementLocation
    {
        return $this->location;
    }

    public function getQuantity(): int
    {
        return $this->quantity;
    }
}
