\d+)/user/(?P\d+) * * Class Wiaas_REST_Customer_API */ class Wiaas_REST_Customer_API { /** * Endpoint namespace. * * @var string */ private static $namespace = 'wiaas'; public function __construct() { include_once dirname( __FILE__ ) . '/../user/class-wiaas-customer.php'; } public static function register_routes() { register_rest_route( self::$namespace, 'customer/(?P\d+)/shops', array( 'methods' => 'GET', 'callback' => array(__CLASS__, 'get_customer_shops'), 'permission_callback' => 'is_user_logged_in' ) ); register_rest_route( self::$namespace, 'customer/(?P\d+)/profile-addresses', array( 'methods' => 'PUT', 'callback' => array(__CLASS__, 'update_customer_profile_addresses'), 'permission_callback' => 'is_user_logged_in' ) ); register_rest_route( self::$namespace, 'customer/(?P\d+)/profile-addresses/(?P\d+)', array( 'methods' => 'DELETE', 'callback' => array(__CLASS__, 'delete_customer_profile_address'), 'permission_callback' => 'is_user_logged_in' ) ); register_rest_route( self::$namespace, 'customer/(?P\d+)/billing-addresses', array( 'methods' => 'PUT', 'callback' => array(__CLASS__, 'update_customer_billing_addresses'), 'permission_callback' => 'is_user_logged_in' ) ); register_rest_route( self::$namespace, 'customer/(?P\d+)/billing-addresses/(?P\d+)', array( 'methods' => 'DELETE', 'callback' => array(__CLASS__, 'delete_customer_billing_addresses'), 'permission_callback' => 'is_user_logged_in' ) ); register_rest_route( self::$namespace, 'customer/(?P\d+)/personal-info', array( 'methods' => 'PUT', 'callback' => array(__CLASS__, 'update_customer_personal_info'), 'permission_callback' => 'is_user_logged_in' ) ); register_rest_route( self::$namespace, 'customer/(?P\d+)/company-info', array( 'methods' => 'PUT', 'callback' => array(__CLASS__, 'update_customer_company_info'), 'permission_callback' => 'is_user_logged_in' ) ); } public static function get_customer_shops() { $customer_shops = Wiaas_Customer::get_customer_shops(); $customer_shops = array_map(function($customer_shop) { return array( 'id' => $customer_shop['owner_id'], 'type' => $customer_shop['order_type'], 'name' => wiaas_get_organization_name($customer_shop['owner_id']) ); }, $customer_shops); return rest_ensure_response($customer_shops); } public static function update_customer_profile_addresses(WP_REST_Request $request){ $customer_id = $request['id']; $params = $request->get_body_params(); $new_address = json_decode($params['profile_address']); if (!Wiaas_Customer::update_customer_profile_addresses($customer_id, $new_address)){ return wiaas_api_notice('PROFILE_ADDRESS_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id)); } return wiaas_api_notice('PROFILE_ADDRESS_UPDATED', 'success', Wiaas_Customer::get_customer_info($customer_id)); } public static function delete_customer_profile_address(WP_REST_Request $request){ $customer_id = $request['id']; $address_id = $request['address_id']; if (!Wiaas_Customer::delete_customer_profile_address($customer_id, $address_id)){ return wiaas_api_notice('ADDRESS_ERROR', 'error', Wiaas_Customer::get_customer_info($customer_id)); } return wiaas_api_notice('ADDRESS_REMOVED', 'success', Wiaas_Customer::get_customer_info($customer_id)); } public static function update_customer_billing_addresses(WP_REST_Request $request){ $customer_id = $request['id']; $params = $request->get_body_params(); $new_address = json_decode($params['billing_address']); if (!Wiaas_Customer::update_customer_billing_addresses($customer_id, $new_address)){ return wiaas_api_notice('BILLING_ADDRESS_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id)); } return wiaas_api_notice('BILLING_ADDRESS_UPDATED', 'success', Wiaas_Customer::get_customer_info($customer_id)); } public static function delete_customer_billing_addresses(WP_REST_Request $request){ $customer_id = $request['id']; $address_id = $request['address_id']; if (!Wiaas_Customer::delete_customer_billing_address($customer_id, $address_id)){ return wiaas_api_notice('ADDRESS_ERROR', 'error', Wiaas_Customer::get_customer_info($customer_id)); } return wiaas_api_notice('ADDRESS_REMOVED', 'success', Wiaas_Customer::get_customer_info($customer_id)); } public static function update_customer_personal_info(WP_REST_Request $request){ $customer_id = $request['id']; $params = $request->get_body_params(); $first_name = $params['first_name']; $last_name = $params['last_name']; $phone = $params['phone']; $name = $first_name . ' ' . $last_name; if (!is_string($name) || strlen($name) === 1){ return wiaas_api_notice('ADD_NAME', 'error', Wiaas_Customer::get_customer_info($customer_id)); } if (!is_string($phone) || strlen($phone) < 1){ return wiaas_api_notice('ADD_PHONE_NUMBER', 'error', Wiaas_Customer::get_customer_info($customer_id)); } if (!Wiaas_Validation::is_phone($phone)){ return wiaas_api_notice('INVALID_PHONE_NUMBER', 'error', Wiaas_Customer::get_customer_info($customer_id)); }; if (!Wiaas_Customer::update_customer_profile_info($customer_id, $first_name, $last_name, $phone)){ return wiaas_api_notice('PROFILE_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id)); } return wiaas_api_notice('PROFILE_UPDATED', 'success', Wiaas_Customer::get_customer_info($customer_id)); } public static function update_customer_company_info(WP_REST_Request $request){ $customer_id = $request['id']; $params = $request->get_body_params(); $company_name = $params['company_name']; $vat_code = $params['vat_code']; if (!is_string($company_name) || strlen($company_name) < 1){ return wiaas_api_notice('ADD_COMPANY_NAME', 'error', Wiaas_Customer::get_customer_info($customer_id)); } if (!is_string($vat_code) || strlen($vat_code) < 1){ return wiaas_api_notice('ADD_VAT', 'error', Wiaas_Customer::get_customer_info($customer_id)); } if (!Wiaas_Customer::update_customer_company_info($customer_id, $company_name, $vat_code)){ return wiaas_api_notice('COMPANY_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id)); } return wiaas_api_notice('COMPANY_UPDATED', 'success', Wiaas_Customer::get_customer_info($customer_id)); } }