<?php

/**
 * Gets the customer data from the StoreApi object.
 *
 * @package Krokedil/WooCommerce/
 */
namespace KrokedilKlarnaPaymentsDeps\Krokedil\WooCommerce\StoreApi;

use KrokedilKlarnaPaymentsDeps\Krokedil\WooCommerce\CustomerData;
/**
 * Gets the customer data from the StoreApi object.
 */
class StoreApiCustomer extends CustomerData
{
    /**
     * The WooCommerce cart response from the StoreApi.
     *
     * @var array $cart
     */
    public $cart;
    /**
     * The WooCommerce billing address from the StoreApi.
     *
     * @var array $billing_address
     */
    public $billing_address;
    /**
     * The WooCommerce shipping address from the StoreApi.
     *
     * @var array $shipping_address
     */
    public $shipping_address;
    /**
     * Filter prefix.
     *
     * @var mixed
     */
    public $filter_prefix = 'store_api_cart_customer';
    /**
     * Constructor.
     *
     * @param array|string $cart The WooCommerce store api cart.
     * @param array $config Configuration array.
     */
    public function __construct($cart, $config = array())
    {
        parent::__construct($config);
        $this->cart = $cart;
        $this->billing_address = $cart['billing_address'];
        $this->shipping_address = $cart['shipping_address'];
        $this->set_billing_first_name();
        $this->set_billing_last_name();
        $this->set_billing_company();
        $this->set_billing_address_1();
        $this->set_billing_address_2();
        $this->set_billing_city();
        $this->set_billing_state();
        $this->set_billing_postcode();
        $this->set_billing_country();
        $this->set_billing_email();
        $this->set_billing_phone();
        $this->set_shipping_first_name();
        $this->set_shipping_last_name();
        $this->set_shipping_company();
        $this->set_shipping_address_1();
        $this->set_shipping_address_2();
        $this->set_shipping_city();
        $this->set_shipping_state();
        $this->set_shipping_postcode();
        $this->set_shipping_country();
        $this->set_shipping_email();
        $this->set_shipping_phone();
    }
    /**
     * Set billing first name
     *
     * @return void
     */
    public function set_billing_first_name()
    {
        $this->billing_first_name = apply_filters($this->get_filter_name('billing_first_name'), \stripslashes($this->billing_address['first_name']), WC()->checkout);
    }
    /**
     * Set billing last name
     *
     * @return void
     */
    public function set_billing_last_name()
    {
        $this->billing_last_name = apply_filters($this->get_filter_name('billing_last_name'), \stripslashes($this->billing_address['last_name']), WC()->checkout);
    }
    /**
     * Set billing company
     *
     * @return void
     */
    public function set_billing_company()
    {
        $this->billing_company = apply_filters($this->get_filter_name('billing_company'), \stripslashes($this->billing_address['company']), WC()->checkout);
    }
    /**
     * Set billing address 1
     *
     * @return void
     */
    public function set_billing_address_1()
    {
        $this->billing_address_1 = apply_filters($this->get_filter_name('billing_address_1'), \stripslashes($this->billing_address['address_1']), WC()->checkout);
    }
    /**
     * Set billing address 2
     *
     * @return void
     */
    public function set_billing_address_2()
    {
        $this->billing_address_2 = apply_filters($this->get_filter_name('billing_address_2'), \stripslashes($this->billing_address['address_2']), WC()->checkout);
    }
    /**
     * Set billing city
     *
     * @return void
     */
    public function set_billing_city()
    {
        $this->billing_city = apply_filters($this->get_filter_name('billing_city'), \stripslashes($this->billing_address['city']), WC()->checkout);
    }
    /**
     * Set billing state
     *
     * @return void
     */
    public function set_billing_state()
    {
        $this->billing_state = apply_filters($this->get_filter_name('billing_state'), \stripslashes($this->billing_address['state']), WC()->checkout);
    }
    /**
     * Set billing postcode
     *
     * @return void
     */
    public function set_billing_postcode()
    {
        $this->billing_postcode = apply_filters($this->get_filter_name('billing_postcode'), \stripslashes($this->billing_address['postcode']), WC()->checkout);
    }
    /**
     * Set billing country
     *
     * @return void
     */
    public function set_billing_country()
    {
        $this->billing_country = apply_filters($this->get_filter_name('billing_country'), \stripslashes($this->billing_address['country']), WC()->checkout);
    }
    /**
     * Set billing email
     *
     * @return void
     */
    public function set_billing_email()
    {
        $this->billing_email = apply_filters($this->get_filter_name('billing_email'), \stripslashes($this->billing_address['email']), WC()->checkout);
    }
    /**
     * Set billing phone
     *
     * @return void
     */
    public function set_billing_phone()
    {
        $this->billing_phone = apply_filters($this->get_filter_name('billing_phone'), \stripslashes($this->billing_address['phone']), WC()->checkout);
    }
    /**
     * Set shipping email
     *
     * @return void
     */
    public function set_shipping_email()
    {
        $this->shipping_email = apply_filters($this->get_filter_name('shipping_email'), \stripslashes($this->shipping_address['email'] ?? $this->billing_address['email']), WC()->checkout);
    }
    /**
     * Set shipping first name
     *
     * @return void
     */
    public function set_shipping_first_name()
    {
        $this->shipping_first_name = apply_filters($this->get_filter_name('shipping_first_name'), \stripslashes($this->shipping_address['first_name']), WC()->checkout);
    }
    /**
     * Set shipping last name
     *
     * @return void
     */
    public function set_shipping_last_name()
    {
        $this->shipping_last_name = apply_filters($this->get_filter_name('shipping_last_name'), \stripslashes($this->shipping_address['last_name']), WC()->checkout);
    }
    /**
     * Set shipping company
     *
     * @return void
     */
    public function set_shipping_company()
    {
        $this->shipping_company = apply_filters($this->get_filter_name('shipping_company'), \stripslashes($this->shipping_address['company']), WC()->checkout);
    }
    /**
     * Set shipping address 1
     *
     * @return void
     */
    public function set_shipping_address_1()
    {
        $this->shipping_address_1 = apply_filters($this->get_filter_name('shipping_address_1'), \stripslashes($this->shipping_address['address_1']), WC()->checkout);
    }
    /**
     * Set shipping address 2
     *
     * @return void
     */
    public function set_shipping_address_2()
    {
        $this->shipping_address_2 = apply_filters($this->get_filter_name('shipping_address_2'), \stripslashes($this->shipping_address['address_2']), WC()->checkout);
    }
    /**
     * Set shipping city
     *
     * @return void
     */
    public function set_shipping_city()
    {
        $this->shipping_city = apply_filters($this->get_filter_name('shipping_city'), \stripslashes($this->shipping_address['city']), WC()->checkout);
    }
    /**
     * Set shipping state
     *
     * @return void
     */
    public function set_shipping_state()
    {
        $this->shipping_state = apply_filters($this->get_filter_name('shipping_state'), \stripslashes($this->shipping_address['state']), WC()->checkout);
    }
    /**
     * Set shipping postcode
     *
     * @return void
     */
    public function set_shipping_postcode()
    {
        $this->shipping_postcode = apply_filters($this->get_filter_name('shipping_postcode'), \stripslashes($this->shipping_address['postcode']), WC()->checkout);
    }
    /**
     * Set shipping country
     *
     * @return void
     */
    public function set_shipping_country()
    {
        $this->shipping_country = apply_filters($this->get_filter_name('shipping_country'), \stripslashes($this->shipping_address['country']), WC()->checkout);
    }
    /**
     * Set shipping phone
     *
     * @return void
     */
    public function set_shipping_phone()
    {
        $this->shipping_phone = apply_filters($this->get_filter_name('shipping_phone'), \stripslashes($this->shipping_address['phone']), WC()->checkout);
    }
}
