<?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\DateUnit;

defined( 'ABSPATH' ) || exit;

class RestrictionRulesConfigurator
{
    private bool $ignoreStopSaleRestriction;
    private bool $ignoreCTARestriction;
    private bool $ignoreCTDRestriction;
    private bool $ignoreMinLosRestriction;
    private bool $ignoreMaxLosRestriction;
    private bool $ignoreMinLosArrivalRestriction;
    private bool $ignoreMaxLosArrivalRestriction;
    private bool $ignoreMinAdvBookingRestriction;
    private bool $ignoreMaxAdvBookingRestriction;

    public function __construct(
        $ignoreStopSaleRestriction = false,
        $ignoreCTARestriction = false,
        $ignoreCTDRestriction = false,
        $ignoreMinLosRestriction = false,
        $ignoreMaxLosRestriction = false,
        $ignoreMinLosArrivalRestriction = false,
        $ignoreMaxLosArrivalRestriction = false,
        $ignoreMinAdvBookingRestriction = false,
        $ignoreMaxAdvBookingRestriction = false
    ) {
        $this->ignoreStopSaleRestriction      = $ignoreStopSaleRestriction;
        $this->ignoreCTARestriction           = $ignoreCTARestriction;
        $this->ignoreCTDRestriction           = $ignoreCTDRestriction;
        $this->ignoreMinLosRestriction        = $ignoreMinLosRestriction;
        $this->ignoreMaxLosRestriction        = $ignoreMaxLosRestriction;
        $this->ignoreMinLosArrivalRestriction = $ignoreMinLosArrivalRestriction;
        $this->ignoreMaxLosArrivalRestriction = $ignoreMaxLosArrivalRestriction;
        $this->ignoreMinAdvBookingRestriction = $ignoreMinAdvBookingRestriction;
        $this->ignoreMaxAdvBookingRestriction = $ignoreMaxAdvBookingRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreStopSaleRestriction(): bool
    {
        return $this->ignoreStopSaleRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreCTARestriction(): bool
    {
        return $this->ignoreCTARestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreCTDRestriction(): bool
    {
        return $this->ignoreCTDRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreMinLosRestriction(): bool
    {
        return $this->ignoreMinLosRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreMaxLosRestriction(): bool
    {
        return $this->ignoreMaxLosRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreMinLosArrivalRestriction(): bool
    {
        return $this->ignoreMinLosArrivalRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreMaxLosArrivalRestriction(): bool
    {
        return $this->ignoreMaxLosArrivalRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreMinAdvBookingRestriction(): bool
    {
        return $this->ignoreMinAdvBookingRestriction;
    }

    /**
     * @return bool
     */
    public function isIgnoreMaxAdvBookingRestriction(): bool
    {
        return $this->ignoreMaxAdvBookingRestriction;
    }
}
