add customer class and endpoint
This commit is contained in:
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