# booktics/1.0.3/trunk/core/onboard/controllers/onboard-controller.php

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

- Page: https://pluginprobe.com/plugins/booktics/1.0.3/code/trunk/core/onboard/controllers/onboard-controller.php
- Raw: https://pluginprobe.com/plugins/booktics/1.0.3/raw/trunk/core/onboard/controllers/onboard-controller.php
- Modified: 2025-07-10T04:07:52+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/trunk/core/onboard/controllers/onboard-controller.php#L10-L20`.

```php
<?php
namespace Booktics\Onboard\Controllers;

use Booktics\Abstracts\Base_Rest_Controller;
use Booktics\Onboard\Onboarding;
use WP_REST_Server;

/**
 * Onboard controller
 *
 * @package Booktics/Onboard
 */
class Onboard_Controller extends Base_Rest_Controller {
    /**
     * Endpoint namespace
     *
     * @var string
     */
    protected $namespace = 'booktics/v1';

    /**
     * Route name
     *
     * @var string
     */
    protected $base = 'onboard';

    /**
     * Register routes
     *
     * @return  void
     */
    public function register_routes(): void {
        register_rest_route(
            $this->namespace, $this->base, array(
				array(
					'methods'             => WP_REST_Server::CREATABLE,
					'callback'            => array( $this, 'setup_profile' ),
					'permission_callback' => array( $this, 'setup_profile_permissions_check' ),
				),
            )
        );
    }

    /**
     * Setup bussinsess profile
     *
     * @param   WP_Rest_Request  $request  Request Object
     *
     * @return  WP_Rest_Response | WP_Error
     */
    public function setup_profile( $request ) {
        $data = json_decode( $request->get_body(), true );

        $result = Onboarding::update( $data );

        if ( is_wp_error( $result ) ) {
            return $this->error( $result->get_error_message() );
        }
        $message = __( 'Successfully updated business profile', 'booktics' );

        $response = $this->prepare_item_for_response( $data, $request );

        return $this->response( $response, $message );
    }

    /**
     * Check permissions for setup profile
     *
     * @param   WP_Rest_Request  $request
     *
     * @return  WP_Rest_Response | WP_Error
     */
    public function setup_profile_permissions_check( $request ): bool {
        return current_user_can( 'manage_options' );
    }

    /**
     * Prepare item for response
     *
     * @param   array  $item     Response item
     * @param   array  $request  Requested data
     *
     * @return  array            Collection of response data
     */
    public function prepare_item_for_response( $item, $request ): array {
        $data = array(
            'business_email'    => Onboarding::get( 'business_email' ),
            'business_name'     => Onboarding::get( 'business_name' ),
            'business_type'     => Onboarding::get( 'business_type' ),
            'business_timezone' => Onboarding::get( 'business_timezone' ),
            'schedule'          => Onboarding::get( 'schedule' ),
            'onboard_setup'     => Onboarding::get( 'onboard_setup' ),
        );

        return $data;
    }
}

```
