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; } }