File "class-mailchimp-promo-rule.php"

Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/mailchimp-for-woocommerce_bk/includes/api/assets/class-mailchimp-promo-rule.php
File size: 6.62 KB
MIME-type: text/x-php
Charset: utf-8

<?php

/**
 * Created by Vextras.
 *
 * Name: Ryan Hungate
 * Email: ryan@vextras.com
 * Date: 6/13/17
 * Time: 1:19 PM
 */
class MailChimp_WooCommerce_PromoRule {

	/**
	 * @var string
	 * @title Promo Rule Foreign ID
	 * @default = null
	 * @description
	 * A unique identifier for the promo rule. If Ecomm platform does not support promo rule,
	 * use promo code id as promo rule id.
	 * Restricted to UTF-8 characters with max length 50
	 */
	protected $id;

	/**
	 * @var string
	 * @title Title
	 * @default null
	 * @description The title that will show up in promotion campaign. Restricted to UTF-8 characters with max length 100
	 */
	protected $title;

	/**
	 * @var string
	 * @title Description
	 * @default null
	 * @description The description of a promotion
	 */
	protected $description;

	/**
	 * @var string
	 * @title Start Time
	 * @default null
	 * @description The date and time when the promotion starts in ISO 8601 format
	 */
	protected $starts_at;

	/**
	 * @var string
	 * @title Start Time
	 * @default null
	 * @description The date and time when the promotion starts in ISO 8601 format
	 */
	protected $ends_at;

	/**
	 * @var float
	 * @title Amount
	 * @required
	 * @description The amount of discount; Positive dollar or percentage amount.
	 */
	protected $amount;

	/**
	 * @var string
	 * @title Type
	 * @required
	 * @description One of ‘fixed’ , ‘percentage’
	 */
	protected $type;

	/**
	 * @var string
	 * @title Target
	 * @required
	 * @description One of ‘per_item’, ‘total’, ‘shipping’
	 */
	protected $target;

	/**
	 * @var boolean
	 * @title Enabled
	 * @default true
	 * @description Whether the promo rule is currently enabled
	 */
	protected $enabled = true;

	/**
	 * @var DateTime
	 * @title Start Time
	 * @default null
	 * @description The date and time when the promotion starts in ISO 8601 format
	 */
	protected $created_at_foreign;

	/**
	 * @var DateTime
	 * @title Start Time
	 * @default null
	 * @description The date and time when the promotion starts in ISO 8601 format
	 */
	protected $updated_at_foreign;

	/**
	 * @return array
	 */
	public function getValidation() {
		return array(
			'id'                 => 'required',
			'amount'             => 'required|number',
			'type'               => 'required',
			'target'             => 'required',
			'enabled'            => 'boolean',
			'starts_at'          => 'date',
			'ends_at'            => 'date',
			'created_at_foreign' => 'date',
			'updated_at_foreign' => 'date',
		);
	}

	/**
	 * @return string
	 */
	public function getId() {
		return $this->id;
	}

	/**
	 * @param null $id
	 * @return MailChimp_WooCommerce_PromoRule
	 */
	public function setId( $id ) {
		$this->id = $id;

		return $this;
	}

	/**
	 * @return string
	 */
	public function getTitle() {
		return $this->title;
	}

	/**
	 * @param $name
	 *
	 * @return $this
	 */
	public function setTitle( $name ) {
		$this->title = $name;

		return $this;
	}

	/**
	 * @return string
	 */
	public function getDescription() {
		return $this->description;
	}

	/**
	 * @param $description
	 *
	 * @return $this
	 */
	public function setDescription( $description ) {
		$this->description = $description;

		return $this;
	}

	/**
	 * @param DateTime $date
	 * @return $this
	 */
	public function setStartsAt( DateTime $date ) {
		$this->starts_at = $date->format( DATE_ISO8601 );

		return $this;
	}

	/**
	 * @return string
	 */
	public function getStartsAt() {
		return $this->starts_at;
	}

	/**
	 * @param DateTime $date
	 * @return $this
	 */
	public function setEndsAt( DateTime $date ) {
		$this->ends_at = $date->format( DATE_ISO8601 );

		return $this;
	}

	/**
	 * @return string
	 */
	public function getEndsAt() {
		return $this->ends_at;
	}

	/**
	 * @param $enabled
	 * @return $this
	 */
	public function setEnabled( $enabled ) {
		$this->enabled = (bool) $enabled;
		return $this;
	}

	/**
	 * @return bool
	 */
	public function isEnabled() {
		return (bool) $this->enabled;
	}

	/**
	 * @return string
	 */
	public function getAmount() {
		return $this->amount;
	}

	/**
	 * @param $amount
	 *
	 * @return $this
	 */
	public function setAmount( $amount ) {
		$this->amount = $amount;

		return $this;
	}

	/**
	 * @return string
	 */
	public function getType() {
		return $this->type;
	}

	/**
	 * @return string
	 */
	public function getTarget() {
		return $this->target;
	}

	/**
	 * @return $this
	 */
	public function setTypeFixed() {
		$this->type = 'fixed';

		return $this;
	}

	/**
	 * @return $this
	 */
	public function setTypePercentage() {
		$this->type = 'percentage';

		return $this;
	}

	/**
	 * @return $this
	 */
	public function setTargetTypePerItem() {
		$this->target = 'per_item';

		return $this;
	}

	/**
	 * @return $this
	 */
	public function setTargetTypeShipping() {
		$this->target = 'shipping';

		return $this;
	}

	/**
	 * @return $this
	 */
	public function setTargetTypeTotal() {
		$this->target = 'total';

		return $this;
	}
	/**
	 * @param DateTime $time
	 * @return $this
	 */
	public function setUpdatedAt( DateTime $time ) {
		$this->updated_at_foreign = $time->format( DATE_ISO8601 );

		return $this;
	}

	/**
	 * @return null|string
	 */
	public function getUpdatedAt() {
		return $this->updated_at_foreign;
	}

	/**
	 * @param DateTime $time
	 * @return $this
	 */
	public function setCreatedAt( DateTime $time ) {
		$this->created_at_foreign = $time->format( DATE_ISO8601 );

		return $this;
	}

	/**
	 * @return null|string
	 */
	public function getCreatedAt() {
		return $this->created_at_foreign;
	}

	/**
	 * @return array
	 */
	public function toArray() {
		return mailchimp_array_remove_empty(
			array(
				'id'                 => (string) $this->getId(),
				'title'              => (string) $this->getTitle(),
				'description'        => (string) $this->getDescription(),
				'starts_at'          => (string) $this->getStartsAt(),
				'ends_at'            => (string) $this->getEndsAt(),
				'amount'             => floatval( $this->getAmount() ),
				'type'               => (string) $this->getType(),
				'target'             => (string) $this->getTarget(),
				'enabled'            => (bool) $this->isEnabled(),
				'created_at_foreign' => (string) $this->getCreatedAt(),
				'updated_at_foreign' => (string) $this->getUpdatedAt(),
			)
		);
	}

	/**
	 * @param array $data
	 * @return MailChimp_WooCommerce_PromoRule
	 */
	public function fromArray( array $data ) {
		$singles = array(
			'id',
			'title',
			'description',
			'starts_at',
			'ends_at',
			'amount',
			'type',
			'target',
			'enabled',
			'created_at_foreign',
			'updated_at_foreign',
		);

		foreach ( $singles as $key ) {
			if ( array_key_exists( $key, $data ) ) {
				$this->$key = $data[ $key ];
			}
		}

		return $this;
	}
}