feat(05-admin-panel): Admin panel z historią rezerwacji
Phase 5 complete — CPT carei_reservation z automatycznym zapisem, lista z kolumnami i filtrem statusu, meta box szczegółów, system statusów nowe/przeczytane/zrealizowane, auto-mark-read. Milestone v0.1 Formularz Rezerwacji MVP — all 5 phases complete. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -30,6 +30,13 @@ class Carei_REST_Proxy {
|
||||
'permission_callback' => '__return_true',
|
||||
) );
|
||||
|
||||
// GET /segments-branches-map (cached segment→branches mapping)
|
||||
register_rest_route( self::NAMESPACE, '/segments-branches-map', array(
|
||||
'methods' => 'GET',
|
||||
'callback' => array( $this, 'get_segments_branches_map' ),
|
||||
'permission_callback' => '__return_true',
|
||||
) );
|
||||
|
||||
// POST /car-classes
|
||||
register_rest_route( self::NAMESPACE, '/car-classes', array(
|
||||
'methods' => 'POST',
|
||||
@@ -99,6 +106,17 @@ class Carei_REST_Proxy {
|
||||
),
|
||||
) );
|
||||
|
||||
// POST /booking/cancel
|
||||
register_rest_route( self::NAMESPACE, '/booking/cancel', array(
|
||||
'methods' => 'POST',
|
||||
'callback' => array( $this, 'cancel_booking' ),
|
||||
'permission_callback' => array( $this, 'check_nonce' ),
|
||||
'args' => array(
|
||||
'reservationId' => array( 'required' => true, 'sanitize_callback' => 'sanitize_text_field' ),
|
||||
'reason' => array( 'required' => true, 'sanitize_callback' => 'sanitize_text_field' ),
|
||||
),
|
||||
) );
|
||||
|
||||
// GET /agreements
|
||||
register_rest_route( self::NAMESPACE, '/agreements', array(
|
||||
'methods' => 'GET',
|
||||
@@ -141,6 +159,14 @@ class Carei_REST_Proxy {
|
||||
|
||||
// ─── Callbacks ────────────────────────────────────────────────
|
||||
|
||||
public function get_segments_branches_map( WP_REST_Request $request ) {
|
||||
$api = $this->api();
|
||||
if ( is_wp_error( $api ) ) {
|
||||
return $api;
|
||||
}
|
||||
return $this->respond( $api->get_segments_branches_map() );
|
||||
}
|
||||
|
||||
public function get_all_car_classes( WP_REST_Request $request ) {
|
||||
$api = $this->api();
|
||||
if ( is_wp_error( $api ) ) {
|
||||
@@ -218,8 +244,15 @@ class Carei_REST_Proxy {
|
||||
if ( is_wp_error( $api ) ) {
|
||||
return $api;
|
||||
}
|
||||
$data = $request->get_json_params();
|
||||
return $this->respond( $api->make_booking( $data ) );
|
||||
$data = $request->get_json_params();
|
||||
$result = $api->make_booking( $data );
|
||||
|
||||
// Save reservation to WP on success (fire-and-forget)
|
||||
if ( ! is_wp_error( $result ) && isset( $result['success'] ) && $result['success'] ) {
|
||||
Carei_Admin_Panel::save_reservation( $data, $result );
|
||||
}
|
||||
|
||||
return $this->respond( $result );
|
||||
}
|
||||
|
||||
public function confirm_booking( WP_REST_Request $request ) {
|
||||
@@ -232,6 +265,17 @@ class Carei_REST_Proxy {
|
||||
) );
|
||||
}
|
||||
|
||||
public function cancel_booking( WP_REST_Request $request ) {
|
||||
$api = $this->api();
|
||||
if ( is_wp_error( $api ) ) {
|
||||
return $api;
|
||||
}
|
||||
return $this->respond( $api->cancel_booking(
|
||||
$request->get_param( 'reservationId' ),
|
||||
$request->get_param( 'reason' )
|
||||
) );
|
||||
}
|
||||
|
||||
public function get_agreements( WP_REST_Request $request ) {
|
||||
$api = $this->api();
|
||||
if ( is_wp_error( $api ) ) {
|
||||
|
||||
Reference in New Issue
Block a user