add customer class and endpoint
This commit is contained in:
@@ -0,0 +1,175 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
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';
|
||||||
|
include_once dirname( __FILE__ ) . '/helper/class-rest-helper-functions.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function register_routes() {
|
||||||
|
|
||||||
|
register_rest_route( self::$namespace, 'customer/(?P<id>\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<id>\d+)/profile-addresses', array(
|
||||||
|
'methods' => 'POST',
|
||||||
|
'callback' => array(__CLASS__, 'delete_customer_profile_address'),
|
||||||
|
'permission_callback' => 'is_user_logged_in'
|
||||||
|
) );
|
||||||
|
|
||||||
|
register_rest_route( self::$namespace, 'customer/(?P<id>\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<id>\d+)/billing-addresses', array(
|
||||||
|
'methods' => 'POST',
|
||||||
|
'callback' => array(__CLASS__, 'delete_customer_billing_addresses'),
|
||||||
|
'permission_callback' => 'is_user_logged_in'
|
||||||
|
) );
|
||||||
|
|
||||||
|
register_rest_route( self::$namespace, 'customer/(?P<id>\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<id>\d+)/company-info', array(
|
||||||
|
'methods' => 'PUT',
|
||||||
|
'callback' => array(__CLASS__, 'update_customer_company_info'),
|
||||||
|
'permission_callback' => 'is_user_logged_in'
|
||||||
|
) );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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 self::generate_wiaas_response('PROFILE_ADDRESS_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::generate_wiaas_response('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'];
|
||||||
|
$params = $request->get_body_params();
|
||||||
|
$address_id = $params['address_id'];
|
||||||
|
|
||||||
|
if (!Wiaas_Customer::delete_customer_profile_address($customer_id, $address_id)){
|
||||||
|
return self::generate_wiaas_response('ADDRESS_ERROR', 'error', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::generate_wiaas_response('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 self::generate_wiaas_response('BILLING_ADDRESS_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::generate_wiaas_response('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'];
|
||||||
|
$params = $request->get_body_params();
|
||||||
|
$address_id = json_decode($params['address_id']);
|
||||||
|
|
||||||
|
if (!Wiaas_Customer::delete_customer_billing_address($customer_id, $address_id)){
|
||||||
|
return self::generate_wiaas_response('ADDRESS_ERROR', 'error', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::generate_wiaas_response('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 self::generate_wiaas_response('ADD_NAME', 'error', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_string($phone) || strlen($phone) < 1){
|
||||||
|
return self::generate_wiaas_response('ADD_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 self::generate_wiaas_response('PROFILE_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::generate_wiaas_response('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 self::generate_wiaas_response('ADD_COPMANY_NAME', 'error', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_string($vat_code) || strlen($vat_code) < 1){
|
||||||
|
return self::generate_wiaas_response('ADD_VAT', 'error', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Wiaas_Customer::update_customer_company_info($customer_id, $company_name, $vat_code)){
|
||||||
|
return self::generate_wiaas_response('COMPANY_NOT_CHANGED', 'warning', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::generate_wiaas_response('COMPANY_UPDATED', 'success', Wiaas_Customer::get_customer_info($customer_id));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static function generate_wiaas_response($message, $code, $data = NULL){
|
||||||
|
$response = array(
|
||||||
|
'messages' => [
|
||||||
|
array(
|
||||||
|
'code' => $code,
|
||||||
|
'message' => $message
|
||||||
|
)
|
||||||
|
],
|
||||||
|
'data' => $data
|
||||||
|
);
|
||||||
|
|
||||||
|
return new WP_REST_Response($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -38,6 +38,9 @@ class Wiaas_API {
|
|||||||
#User controller
|
#User controller
|
||||||
include_once dirname( __FILE__ ) . '/api/class-wiaas-rest-user-api.php';
|
include_once dirname( __FILE__ ) . '/api/class-wiaas-rest-user-api.php';
|
||||||
|
|
||||||
|
#Customer controller
|
||||||
|
include_once dirname( __FILE__ ) . '/api/class-wiaas-rest-customer.php';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function register_rest_routes() {
|
public static function register_rest_routes() {
|
||||||
@@ -45,7 +48,8 @@ class Wiaas_API {
|
|||||||
'Wiass_REST_Delivery_Process_API',
|
'Wiass_REST_Delivery_Process_API',
|
||||||
'Wiaas_Cart_API',
|
'Wiaas_Cart_API',
|
||||||
'Wiaas_Document_API',
|
'Wiaas_Document_API',
|
||||||
'Wiass_REST_User_API'
|
'Wiass_REST_User_API',
|
||||||
|
'Wiaas_REST_Customer_API'
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ( $controllers as $controller ) {
|
foreach ( $controllers as $controller ) {
|
||||||
|
|||||||
@@ -9,158 +9,15 @@ class Wiaas_User {
|
|||||||
|
|
||||||
public static function init() {
|
public static function init() {
|
||||||
include_once dirname( __FILE__ ) . '/class-wiaas-countries.php';
|
include_once dirname( __FILE__ ) . '/class-wiaas-countries.php';
|
||||||
|
include_once dirname( __FILE__ ) . '/user/class-wiaas-customer.php';
|
||||||
|
|
||||||
add_action('init', array(__CLASS__, 'load_user_organization'));
|
add_action('init', array(__CLASS__, 'load_user_organization'));
|
||||||
add_action('plugins_loaded', array(__CLASS__, 'remove_default_user_groups'), 30);
|
add_action('plugins_loaded', array(__CLASS__, 'remove_default_user_groups'), 30);
|
||||||
add_action('woocommerce_rest_insert_customer', array(__CLASS__, 'add_meta_data_to_customer'), 10, 3);
|
|
||||||
|
|
||||||
add_filter('woocommerce_rest_prepare_customer', array(__CLASS__, 'transform_rest_customer'), 10, 3);
|
add_filter('woocommerce_rest_prepare_customer', array(__CLASS__, 'transform_rest_customer'), 10, 3);
|
||||||
add_filter('jwt_auth_token_before_dispatch', array(__CLASS__, 'transform_jwt_token_response'), 10, 2);
|
add_filter('jwt_auth_token_before_dispatch', array(__CLASS__, 'transform_jwt_token_response'), 10, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Fires after a customer is created or updated via the REST API.
|
|
||||||
*
|
|
||||||
* @param WP_User $customer Data used to create the customer.
|
|
||||||
* @param WP_REST_Request $request Request object.
|
|
||||||
* @param boolean $creating True when creating customer, false when updating customer.
|
|
||||||
*/
|
|
||||||
public static function add_meta_data_to_customer($customer, $request, $creating){
|
|
||||||
if (isset($request['phone'])){
|
|
||||||
update_user_meta( $customer->ID, 'phone', $request['phone'] );
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($request['vatCode'])){
|
|
||||||
update_user_meta( $customer->ID, 'vat_code', $request['vatCode']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($request['companyName'])){
|
|
||||||
update_user_meta( $customer->ID, 'company_name', $request['companyName']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($request['deliveryAddress'])){
|
|
||||||
$received_address = json_decode($request['deliveryAddress']);
|
|
||||||
if (!self::validate_address($received_address)){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$profile_addresses = get_user_meta($customer->ID, 'profile_addresses', true) ?: [];
|
|
||||||
|
|
||||||
if ($received_address->id){
|
|
||||||
$updated = array(
|
|
||||||
'id' => $received_address->id,
|
|
||||||
'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected),
|
|
||||||
'deliveryMail' => $received_address->deliveryMail,
|
|
||||||
'idCountrySelected' => $received_address->idCountrySelected,
|
|
||||||
'city' => $received_address->city,
|
|
||||||
'detailedAddress' => $received_address->detailedAddress,
|
|
||||||
'zipCode' => $received_address->zipCode,
|
|
||||||
'firstName' => $received_address->firstName,
|
|
||||||
'lastName' => $received_address->lastName,
|
|
||||||
'deliveryMail' => $received_address->deliveryMail
|
|
||||||
);
|
|
||||||
foreach($profile_addresses as $key => $address){
|
|
||||||
if ($address['id'] === $received_address->id){
|
|
||||||
$profile_addresses[$key] = $updated;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$new_delivery_address = array(
|
|
||||||
'id' => time(),
|
|
||||||
'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected),
|
|
||||||
'deliveryMail' => $received_address->deliveryMail,
|
|
||||||
'idCountrySelected' => $received_address->idCountrySelected,
|
|
||||||
'city' => $received_address->city,
|
|
||||||
'detailedAddress' => $received_address->detailedAddress,
|
|
||||||
'zipCode' => $received_address->zipCode,
|
|
||||||
'firstName' => $received_address->firstName,
|
|
||||||
'lastName' => $received_address->lastName,
|
|
||||||
'deliveryMail' => $received_address->deliveryMail
|
|
||||||
);
|
|
||||||
|
|
||||||
array_push($profile_addresses, $new_delivery_address);
|
|
||||||
}
|
|
||||||
|
|
||||||
update_user_meta( $customer->ID, 'profile_addresses', $profile_addresses);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($request['billingAddress'])){
|
|
||||||
$received_address = json_decode($request['billingAddress']);
|
|
||||||
if (!self::validate_address($received_address)){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$billing_addresses = get_user_meta($customer->ID, 'billing_addresses', true) ?: [];
|
|
||||||
|
|
||||||
if ($received_address->id){
|
|
||||||
$updated = array(
|
|
||||||
'id' => $received_address->id,
|
|
||||||
'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected),
|
|
||||||
'deliveryMail' => $received_address->deliveryMail,
|
|
||||||
'idCountrySelected' => $received_address->idCountrySelected,
|
|
||||||
'city' => $received_address->city,
|
|
||||||
'detailedAddress' => $received_address->detailedAddress,
|
|
||||||
'zipCode' => $received_address->zipCode,
|
|
||||||
'firstName' => $received_address->firstName,
|
|
||||||
'lastName' => $received_address->lastName,
|
|
||||||
'invoiceMail' => $received_address->invoiceMail
|
|
||||||
);
|
|
||||||
foreach($billing_addresses as $key => $address){
|
|
||||||
if ($address['id'] === $received_address->id){
|
|
||||||
$billing_addresses[$key] = $updated;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
$new_billing_address = array(
|
|
||||||
'id' => time(),
|
|
||||||
'countryName' => Wiaas_Countries::get_country_name_by_id($received_address->idCountrySelected),
|
|
||||||
'deliveryMail' => $received_address->deliveryMail,
|
|
||||||
'idCountrySelected' => $received_address->idCountrySelected,
|
|
||||||
'city' => $received_address->city,
|
|
||||||
'detailedAddress' => $received_address->detailedAddress,
|
|
||||||
'zipCode' => $received_address->zipCode,
|
|
||||||
'firstName' => $received_address->firstName,
|
|
||||||
'lastName' => $received_address->lastName,
|
|
||||||
'invoiceMail' => $received_address->invoiceMail
|
|
||||||
);
|
|
||||||
|
|
||||||
array_push($billing_addresses, $new_billing_address);
|
|
||||||
}
|
|
||||||
|
|
||||||
update_user_meta( $customer->ID, 'billing_addresses', $billing_addresses);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($request['removeDeliveryAddress'])){
|
|
||||||
$addressID = $request['removeDeliveryAddress'];
|
|
||||||
$profile_addresses = get_user_meta($customer->ID, 'profile_addresses', true) ?: [];
|
|
||||||
$counter = 0;
|
|
||||||
foreach($profile_addresses as $key => $address){
|
|
||||||
if ($address['id'] == $addressID){
|
|
||||||
array_splice($profile_addresses, $counter, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$counter++;
|
|
||||||
}
|
|
||||||
update_user_meta( $customer->ID, 'profile_addresses', $profile_addresses);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($request['removeBillingAddress'])){
|
|
||||||
$addressID = $request['removeBillingAddress'];
|
|
||||||
$billing_addresses = get_user_meta($customer->ID, 'billing_addresses', true) ?: [];
|
|
||||||
$counter = 0;
|
|
||||||
foreach($billing_addresses as $key => $address){
|
|
||||||
if ($address['id'] == $addressID){
|
|
||||||
array_splice($billing_addresses, $counter, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$counter++;
|
|
||||||
}
|
|
||||||
|
|
||||||
update_user_meta( $customer->ID, 'billing_addresses', $billing_addresses);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function load_user_organization() {
|
public static function load_user_organization() {
|
||||||
if (class_exists('WP_User_Taxonomy')) {
|
if (class_exists('WP_User_Taxonomy')) {
|
||||||
require_once dirname( __FILE__ ) . '/user/class-wiaas-user-organization.php';
|
require_once dirname( __FILE__ ) . '/user/class-wiaas-user-organization.php';
|
||||||
@@ -186,21 +43,9 @@ class Wiaas_User {
|
|||||||
public static function transform_rest_customer($response, $order, $request) {
|
public static function transform_rest_customer($response, $order, $request) {
|
||||||
$data = $response->get_data();
|
$data = $response->get_data();
|
||||||
$user_id = $data['id'];
|
$user_id = $data['id'];
|
||||||
$result = array(
|
$customer_info = Wiaas_Customer::get_customer_info($user_id);
|
||||||
'id' => $user_id,
|
|
||||||
'idCompany' => 0,
|
|
||||||
'isCompanyAdmin' => 1,
|
|
||||||
'mail' => $data['email'],
|
|
||||||
'name' => $data['first_name'] . ' ' . $data['last_name'],
|
|
||||||
'phone' => get_user_meta($user_id, 'phone', true),
|
|
||||||
'companyName' => get_user_meta($user_id, 'company_name', true),
|
|
||||||
'vatCode' => get_user_meta($user_id, 'vat_code', true),
|
|
||||||
'billingAddresses' => get_user_meta($user_id, 'billing_addresses', true) ?: [],
|
|
||||||
'profileAddresses' => get_user_meta($user_id, 'profile_addresses', true) ?: [],
|
|
||||||
'userType' => $data['role']
|
|
||||||
);
|
|
||||||
|
|
||||||
return new WP_REST_Response($result);
|
return new WP_REST_Response($customer_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -225,25 +70,6 @@ class Wiaas_User {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if address is valid
|
|
||||||
*
|
|
||||||
* @param $address
|
|
||||||
*
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
private static function validate_address($address){
|
|
||||||
if (empty($address->city)){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($address->detailedAddress)){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return is_numeric($address->zipCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
217
backend/app/plugins/wiaas/includes/user/class-wiaas-customer.php
Normal file
217
backend/app/plugins/wiaas/includes/user/class-wiaas-customer.php
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
defined( 'ABSPATH' ) || exit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Wiaas_Customer
|
||||||
|
*/
|
||||||
|
class Wiaas_Customer {
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
include_once dirname( __FILE__ ) . '/../class-wiaas-countries.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_info($customer_id){
|
||||||
|
$user = get_userdata($customer_id);
|
||||||
|
$result = array(
|
||||||
|
'id' => $customer_id,
|
||||||
|
'company_id' => self::get_customer_company_id($customer_id),
|
||||||
|
'is_company_admin' => self::get_customer_company_admin_status($customer_id),
|
||||||
|
'mail' => $user->user_email,
|
||||||
|
'name' => $user->first_name . ' ' . $user->last_name,
|
||||||
|
'phone' => self::get_customer_phone_number($customer_id),
|
||||||
|
'company_name' => self::get_customer_company_name($customer_id),
|
||||||
|
'vat_code' => self::get_customer_vat_code($customer_id),
|
||||||
|
'billing_addresses' => self::get_customer_billing_addresses($customer_id),
|
||||||
|
'profile_addresses' => self::get_customer_profile_addresses($customer_id),
|
||||||
|
'user_type' => $user->roles
|
||||||
|
);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_profile_addresses($customer_id){
|
||||||
|
return get_user_meta($customer_id, 'profile_addresses', true) ?: [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_billing_addresses($customer_id){
|
||||||
|
return get_user_meta($customer_id, 'billing_addresses', true) ?: [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_vat_code($customer_id){
|
||||||
|
return get_user_meta($customer_id, 'vat_code', true) ?: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_company_name($customer_id){
|
||||||
|
return get_user_meta($customer_id, 'company_name', true) ?: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_company_id($customer_id){
|
||||||
|
return 0; //TODO: don't hardocde this
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_company_admin_status($customer_id){
|
||||||
|
return 1; //TODO: don't hardcode this
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_customer_phone_number($customer_id){
|
||||||
|
return get_user_meta($customer_id, 'phone', true) ?: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function update_customer_profile_info($customer_id, $first_name, $last_name, $phone){
|
||||||
|
$user = array(
|
||||||
|
'ID' => $customer_id,
|
||||||
|
'first_name' => $first_name,
|
||||||
|
'last_name' => $last_name
|
||||||
|
);
|
||||||
|
|
||||||
|
if (is_wp_error(wp_update_user($user))){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
update_user_meta( $customer_id, 'phone', $phone);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function update_customer_company_info($customer_id, $company_name, $vat_code){
|
||||||
|
$result = update_user_meta( $customer_id, 'company_name', $company_name);
|
||||||
|
return $result || update_user_meta( $customer_id, 'vat_code', $vat_code );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function update_customer_billing_addresses($customer_id, $new_address){
|
||||||
|
if (!self::validate_address($new_address)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$billing_addresses = self::get_customer_billing_addresses($customer_id);
|
||||||
|
|
||||||
|
if ($new_address->id){
|
||||||
|
$updated = array(
|
||||||
|
'id' => $new_address->id,
|
||||||
|
'countryName' => Wiaas_Countries::get_country_name_by_id($new_address->idCountrySelected),
|
||||||
|
'deliveryMail' => $new_address->deliveryMail,
|
||||||
|
'idCountrySelected' => $new_address->idCountrySelected,
|
||||||
|
'city' => $new_address->city,
|
||||||
|
'detailedAddress' => $new_address->detailedAddress,
|
||||||
|
'zipCode' => $new_address->zipCode,
|
||||||
|
'firstName' => $new_address->firstName,
|
||||||
|
'lastName' => $new_address->lastName,
|
||||||
|
'invoiceMail' => $new_address->invoiceMail
|
||||||
|
);
|
||||||
|
foreach($billing_addresses as $key => $address){
|
||||||
|
if ($address['id'] === $new_address->id){
|
||||||
|
$billing_addresses[$key] = $updated;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$new_billing_address = array(
|
||||||
|
'id' => time(),
|
||||||
|
'countryName' => Wiaas_Countries::get_country_name_by_id($new_address->idCountrySelected),
|
||||||
|
'deliveryMail' => $new_address->deliveryMail,
|
||||||
|
'idCountrySelected' => $new_address->idCountrySelected,
|
||||||
|
'city' => $new_address->city,
|
||||||
|
'detailedAddress' => $new_address->detailedAddress,
|
||||||
|
'zipCode' => $new_address->zipCode,
|
||||||
|
'firstName' => $new_address->firstName,
|
||||||
|
'lastName' => $new_address->lastName,
|
||||||
|
'invoiceMail' => $new_address->invoiceMail
|
||||||
|
);
|
||||||
|
|
||||||
|
array_push($billing_addresses, $new_billing_address);
|
||||||
|
}
|
||||||
|
|
||||||
|
return update_user_meta( $customer_id, 'billing_addresses', $billing_addresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function update_customer_profile_addresses($customer_id, $new_address){
|
||||||
|
if (!self::validate_address($new_address)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$profile_addresses = self::get_customer_profile_addresses($customer_id);
|
||||||
|
|
||||||
|
if ($new_address->id){
|
||||||
|
$updated = array(
|
||||||
|
'id' => $new_address->id,
|
||||||
|
'countryName' => Wiaas_Countries::get_country_name_by_id($new_address->idCountrySelected),
|
||||||
|
'deliveryMail' => $new_address->deliveryMail,
|
||||||
|
'idCountrySelected' => $new_address->idCountrySelected,
|
||||||
|
'city' => $new_address->city,
|
||||||
|
'detailedAddress' => $new_address->detailedAddress,
|
||||||
|
'zipCode' => $new_address->zipCode,
|
||||||
|
'firstName' => $new_address->firstName,
|
||||||
|
'lastName' => $new_address->lastName,
|
||||||
|
'deliveryMail' => $new_address->deliveryMail
|
||||||
|
);
|
||||||
|
foreach($profile_addresses as $key => $address){
|
||||||
|
if ($address['id'] === $new_address->id){
|
||||||
|
$profile_addresses[$key] = $updated;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$new_delivery_address = array(
|
||||||
|
'id' => time(),
|
||||||
|
'countryName' => Wiaas_Countries::get_country_name_by_id($new_address->idCountrySelected),
|
||||||
|
'deliveryMail' => $new_address->deliveryMail,
|
||||||
|
'idCountrySelected' => $new_address->idCountrySelected,
|
||||||
|
'city' => $new_address->city,
|
||||||
|
'detailedAddress' => $new_address->detailedAddress,
|
||||||
|
'zipCode' => $new_address->zipCode,
|
||||||
|
'firstName' => $new_address->firstName,
|
||||||
|
'lastName' => $new_address->lastName,
|
||||||
|
'deliveryMail' => $new_address->deliveryMail
|
||||||
|
);
|
||||||
|
|
||||||
|
array_push($profile_addresses, $new_delivery_address);
|
||||||
|
}
|
||||||
|
|
||||||
|
return update_user_meta( $customer_id, 'profile_addresses', $profile_addresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function delete_customer_profile_address($customer_id, $address_id){
|
||||||
|
$profile_addresses = self::get_customer_profile_addresses($customer_id);
|
||||||
|
$counter = 0;
|
||||||
|
foreach($profile_addresses as $key => $address){
|
||||||
|
if ($address['id'] == $address_id){
|
||||||
|
array_splice($profile_addresses, $counter, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$counter++;
|
||||||
|
}
|
||||||
|
return update_user_meta( $customer_id, 'profile_addresses', $profile_addresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function delete_customer_billing_address($customer_id, $address_id){
|
||||||
|
$billing_addresses = self::get_customer_billing_addresses($customer_id);
|
||||||
|
$counter = 0;
|
||||||
|
foreach($billing_addresses as $key => $address){
|
||||||
|
if ($address['id'] == $address_id){
|
||||||
|
array_splice($billing_addresses, $counter, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$counter++;
|
||||||
|
}
|
||||||
|
return update_user_meta( $customer_id, 'billing_addresses', $billing_addresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if address is valid
|
||||||
|
*
|
||||||
|
* @param $address
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private static function validate_address($address){
|
||||||
|
if (empty($address->city)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($address->detailedAddress)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return is_numeric($address->zipCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user