<?php

/**
 * Created by Vextras.
 *
 * Name: Ryan Hungate
 * Email: ryan@vextras.com
 * Date: 7/8/16
 * Time: 4:16 PM
 */
class MailChimp_WooCommerce_CreateListSubmission {

	/**
	 * @var array
	 */
	protected $props = array();

	/**
	 * @param $name
	 * @return $this
	 */
	public function setName( $name ) {
		$this->props['name'] = $name;

		return $this;
	}

	/**
	 * @param $bool
	 * @return $this
	 */
	public function setUseArchiveBar( $bool ) {
		$this->props['use_archive_bar'] = (bool) $bool;

		return $this;
	}

	/**
	 * @param $reminder
	 * @return $this
	 */
	public function setPermissionReminder( $reminder ) {
		$this->props['permission_reminder'] = $reminder;

		return $this;
	}

	/**
	 * @param $email
	 * @return $this
	 */
	public function setNotifyOnSubscribe( $email ) {
		$this->props['notify_on_subscribe'] = $email;

		return $this;
	}

	/**
	 * @param $email
	 *
	 * @return $this
	 */
	public function setNotifyOnUnSubscribe( $email ) {
		$this->props['notify_on_unsubscribe'] = $email;

		return $this;
	}

	/**
	 * @param $bool
	 * @return $this
	 */
	public function setEmailTypeOption( $bool ) {
		$this->props['email_type_option'] = (bool) $bool;

		return $this;
	}

	/**
	 * @param bool $public
	 * @return $this
	 */
	public function setVisibility( $public = true ) {
		$this->props['visibility'] = $public ? 'pub' : 'prv';

		return $this;
	}

	/**
	 * @param false $doi
	 *
	 * @return $this
	 */
	public function setDoi( $doi = false ) {
		$this->props['double_optin'] = (bool) $doi;

		return $this;
	}

	/**
	 * @param $name
	 * @param $email
	 * @param $subject
	 * @param string  $language
	 * @return $this
	 */
	public function setCampaignDefaults( $name, $email, $subject, $language = 'en' ) {
		$this->props['campaign_defaults'] = array(
			'from_name'  => $name,
			'from_email' => $email,
			'subject'    => $subject,
			'language'   => $language,
		);

		return $this;
	}

	/**
	 * @param MailChimp_WooCommerce_Address $address
	 * @return $this
	 */
	public function setContact( MailChimp_WooCommerce_Address $address ) {
		$data = array();

		if ( ( $company = $address->getCompany() ) && ! empty( $company ) ) {
			$data['company'] = $company;
		}

		if ( ( $street = $address->getAddress1() ) && ! empty( $address ) ) {
			$data['address1'] = $street;
		}

		if ( ( $city = $address->getCity() ) && ! empty( $city ) ) {
			$data['city'] = $city;
		}

		if ( ( $state = $address->getProvince() ) && ! empty( $state ) ) {
			$data['state'] = $state;
		}

		if ( ( $zip = $address->getPostalCode() ) && ! empty( $zip ) ) {
			$data['zip'] = $zip;
		}

		if ( ( $country = $address->getCountry() ) && ! empty( $country ) ) {
			$data['country'] = $country;
		}

		if ( ( $phone = $address->getPhone() ) && ! empty( $phone ) ) {
			$data['phone'] = $phone;
		}

		$this->props['contact'] = $data;

		return $this;
	}

	/**
	 * @return array
	 */
	public function getSubmission() {
		return $this->props;
	}
}
