getInputs(); $name = trim( (string) ( $inputs['first_name'] ?? '' ) . ' ' . (string) ( $inputs['last_name'] ?? '' ) ); $email = (string) ( $inputs['email'] ?? '' ); return "Create staff member {$name} <{$email}>"; } public function get_approval_inputs(): array { return $this->getInputs(); } public function __invoke( string $first_name, string $email, ?string $last_name = null, ?string $phone = null ): array { $check = $this->guard_admin(); if ( $check ) { return $check; } if ( '' === trim( $first_name ) ) { return [ 'error' => 'first_name cannot be empty.' ]; } if ( ! is_email( $email ) ) { return [ 'error' => 'A valid email is required.' ]; } try { $body = [ 'first_name' => sanitize_text_field( $first_name ), 'last_name' => null !== $last_name ? sanitize_text_field( $last_name ) : '', 'email' => sanitize_email( $email ), 'phone' => null !== $phone ? sanitize_text_field( $phone ) : '', ]; $request = $this->build_request( 'POST', '/timetics/v1/staffs', [], $body ); if ( is_array( $request ) ) { return $request; } $controller = \Timetics\Core\Staffs\Api_Staff::instance(); $data = $this->extract_response( $controller->create_item( $request ), 'Failed to create staff.' ); if ( isset( $data['error'] ) ) { return $data; } return [ 'success' => true, 'staff_id' => $data['id'] ?? null, 'staff' => $this->shape_staff( $data ), 'message' => 'Staff member created successfully.', ]; } catch ( \Throwable $e ) { Log::error( 'Timetics_Create_Staff_Tool error', [ 'error' => $e->getMessage() ] ); return [ 'error' => 'Failed to create staff: ' . $e->getMessage() ]; } } }