# booktics/1.0.3/core/appointment/services/appointment-validator.php

Booktics – Appointment Booking Calendar for Service Businesses, version 1.0.3. 65 lines.

- Page: https://pluginprobe.com/plugins/booktics/1.0.3/code/core/appointment/services/appointment-validator.php
- Raw: https://pluginprobe.com/plugins/booktics/1.0.3/raw/core/appointment/services/appointment-validator.php
- Modified: 2025-07-10T13:13:56+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/booktics/1.0.3/code/core/appointment/services/appointment-validator.php#L10-L20`.

```php
<?php
namespace Booktics\Appointment\Services;

use Booktics\Utils\Singleton;
use WP_Error;

class Appointment_Validator {

    use Singleton;
    /**
     * Validate data for creating an appointment.
     * @param array $data
     * @return WP_Error|null
     */
    public static function validate_create(array $data): ?WP_Error {
        if (empty($data['start_time'])) {
            return new WP_Error('missing_start_time', __('Start time is required', 'booktics'));
        }
        if (empty($data['end_time'])) {
            return new WP_Error('missing_end_time', __('End time is required', 'booktics'));
        }
        if (empty($data['date'])) {
            return new WP_Error('missing_date', __('Date is required', 'booktics'));
        }
        if (empty($data['service_id'])) {
            return new WP_Error('missing_service_id', __('Service ID is required', 'booktics'));
        }
        if (empty($data['team_member_id'])) {
            return new WP_Error('missing_team_member_id', __('Team member ID is required', 'booktics'));
        }
        // Add more validation as needed
        return null;
    }

    /**
     * Validate data for updating an appointment.
     * @param array $data
     * @return WP_Error|null
     */
    public static function validate_update(array $data): ?WP_Error {
        if (empty($data)) {
            return new WP_Error('no_data', __('No data provided for update', 'booktics'));
        }
        // Optionally, check for required fields on update
        return null;
    }

    /**
     * Validate data for rescheduling an appointment.
     * @param array $data
     * @return WP_Error|null
     */
    public static function validate_reschedule(array $data): ?WP_Error {
        if (empty($data['start_time'])) {
            return new WP_Error('missing_start_time', __('Start time is required for reschedule', 'booktics'));
        }
        if (empty($data['end_time'])) {
            return new WP_Error('missing_end_time', __('End time is required for reschedule', 'booktics'));
        }
        if (empty($data['date'])) {
            return new WP_Error('missing_date', __('Date is required for reschedule', 'booktics'));
        }
        return null;
    }
} 
```
