FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
latepoint
/
lib
/
misc
Edit File: booking_slot.php
<?php /* * Copyright (c) 2022 LatePoint LLC. All rights reserved. */ namespace LatePoint\Misc; class BookingSlot { public string $start_date; public int $start_time; public int $min_capacity = 1; public int $max_capacity = 1; public int $min_capacity_to_be_blocked = 1; public int $booked_capacity = 0; public int $price; function __construct( $args = [] ) { $allowed_props = self::allowed_props(); foreach ( $args as $key => $arg ) { if ( in_array( $key, $allowed_props ) ) { $this->$key = $arg; } } } /** * @param \LatePoint\Misc\BookingSlot[] $booking_slots * @return int */ public static function find_minimum_gap_between_slots( array $booking_slots ): int { $minimum_slot_gap = 0; // calculate minimum gap between slots if ( count( $booking_slots ) > 1 ) { $prev_start_time = $booking_slots[0]->start_time; $intervals = []; foreach ( $booking_slots as $booking_slot ) { if ( $prev_start_time ) { $gap = $booking_slot->start_time - $prev_start_time; if ( $gap ) { $intervals[] = $gap; } } $prev_start_time = $booking_slot->start_time; } if ( $intervals ) { $minimum_slot_gap = min( $intervals ); } } return $minimum_slot_gap; } public function can_accomodate( $total_attendees ) { if ( $this->booked_capacity >= $this->min_capacity_to_be_blocked ) { return false; } else { return $this->available_capacity() >= $total_attendees; } } public function available_capacity() { return $this->max_capacity - $this->booked_capacity; } public static function allowed_props(): array { return [ 'start_time', 'start_date', 'min_capacity', 'max_capacity', 'min_capacity_to_be_blocked', 'booked_capacity', 'available_capacity', 'price', ]; } }
Save
Back