File "class-mailchimp-promo-rule.php"
Full Path: /home/vantageo/public_html/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;
}
}