|
Server : LiteSpeed System : Linux premium92.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : rbnsfqys ( 805) PHP Version : 8.1.33 Disable Function : NONE Directory : /home/rbnsfqys/public_html/wp-content/plugins/latepoint/lib/helpers/ |
<?php
class OsServiceHelper {
/**
* @return OsServiceModel[]
*/
public static function get_allowed_active_services(): array {
$agents = new OsServiceModel();
return $agents->should_be_active()->filter_allowed_records()->get_results_as_models();
}
public static function get_max_capacity_by_service_id( $service_id ) {
$service = new OsServiceModel( $service_id );
return self::get_max_capacity( $service );
}
public static function get_min_capacity_by_service_id( $service_id ) {
$service = new OsServiceModel( $service_id );
return self::get_min_capacity( $service );
}
public static function get_minimum_duration_across_services() {
$service = new OsServiceModel();
$services = $service->should_be_active()->get_results_as_models();
$min_duration = false;
foreach ( $services as $service ) {
$min_duration = $min_duration ? min( $min_duration, $service->duration ) : $service->duration;
}
return $min_duration;
}
public static function get_summary_duration_label( $duration ) {
if ( ! $duration ) {
return '';
}
if ( ( $duration >= 60 ) && ! OsSettingsHelper::is_on( 'steps_show_duration_in_minutes' ) ) {
$hours = floor( $duration / 60 );
$minutes = $duration % 60;
$summary_duration_label = $hours . ' ';
$summary_duration_label .= ( $hours > 1 ) ? __( 'Hours', 'latepoint' ) : __( 'Hour', 'latepoint' );
if ( $minutes ) {
$summary_duration_label .= ', ' . $minutes . ' ' . __( 'Minutes', 'latepoint' );
}
} else {
$summary_duration_label = $duration . ' ' . __( 'Minutes', 'latepoint' );
}
return $summary_duration_label;
}
public static function get_max_capacity( $service ) {
if ( $service && ! empty( $service->capacity_max ) ) {
return $service->capacity_max;
}
return 1;
}
public static function get_min_capacity( $service ) {
if ( $service && ! empty( $service->capacity_min ) ) {
return $service->capacity_min;
}
return 1;
}
public static function get_percent_of_capacity_booked( $service, $total_attendees ) {
$total_attendees = empty( $total_attendees ) ? 1 : $total_attendees;
$max_capacity = self::get_max_capacity( $service );
return min( 100, round( $total_attendees / $max_capacity * 100 ) );
}
public static function get_default_colors() {
return array( '#2752E4', '#C066F1', '#26B7DD', '#E8C634', '#19CED6', '#2FEAA3', '#252a3e', '#8d87a5', '#b9b784' );
}
public static function get_default_duration_for_service( $service_id ) {
$service = new OsServiceModel( $service_id );
return $service->duration;
}
public static function service_option_html_for_select( $service, $selected = false ) {
?>
<div class="service-option <?php if ( $selected ) {
echo 'selected';
} ?>"
data-extra-durations="<?php echo esc_attr( wp_json_encode( $service->get_extra_durations() ) ); ?>"
data-id="<?php echo esc_attr( $service->id ); ?>"
data-buffer-before="<?php echo esc_attr( $service->buffer_before ); ?>"
data-buffer-after="<?php echo esc_attr( $service->buffer_after ); ?>"
data-capacity-min="<?php echo esc_attr( $service->capacity_min ); ?>"
data-capacity-max="<?php echo esc_attr( $service->capacity_max ); ?>"
data-duration-name="<?php echo esc_attr( $service->duration_name ); ?>"
data-duration="<?php echo esc_attr( $service->duration ); ?>">
<div class="service-color" style="background-color: <?php echo esc_attr( $service->bg_color ); ?>"></div>
<span><?php echo esc_html( $service->name ); ?></span>
</div>
<?php
}
/**
* @param $agent_id
*
* @return OsServiceModel[]
*/
public static function get_services( bool $filter_allowed_records = false ): array {
$services = new OsServiceModel();
if ( $filter_allowed_records ) {
$services->filter_allowed_records();
}
$services = $services->get_results_as_models();
return $services;
}
/**
* @param bool $filter_allowed_records
* @param array $service_ids
*
* @return array
*/
public static function get_services_list( bool $filter_allowed_records = false, array $service_ids = [], bool $exclude_disabled = false ): array {
$services = new OsServiceModel();
if ( $filter_allowed_records ) {
$services->filter_allowed_records();
}
if ( ! empty( $service_ids ) ) {
$services->where_in( 'id', $service_ids );
}
if ( $exclude_disabled ) {
$services->where( [ 'status' => LATEPOINT_SERVICE_STATUS_ACTIVE ] );
}
$services = $services->order_by('status asc, name asc')->get_results_as_models();
$services_list = [];
if ( $services ) {
foreach ( $services as $service ) {
$label = ( $service->status == LATEPOINT_LOCATION_STATUS_DISABLED ) ? ( $service->name . ' [' . esc_html__( 'Disabled', 'latepoint' ) . ']' ) : $service->name;
$services_list[] = [ 'value' => $service->id, 'label' => $label ];
}
}
return $services_list;
}
public static function has_multiple_durations( int $service_id ): bool {
$service = new OsServiceModel( $service_id );
$extra_durations = $service->get_extra_durations();
return ! empty( $extra_durations );
}
}