406 lines
7.8 KiB
PHP
406 lines
7.8 KiB
PHP
|
|
<?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 \DateTime
|
|||
|
|
* @title Start Time
|
|||
|
|
* @default null
|
|||
|
|
* @description The date and time when the promotion starts in ISO 8601 format
|
|||
|
|
*/
|
|||
|
|
protected $starts_at;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @var \DateTime
|
|||
|
|
* @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 [
|
|||
|
|
'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 string $name
|
|||
|
|
* @return MailChimp_WooCommerce_PromoRule
|
|||
|
|
*/
|
|||
|
|
public function setTitle($name)
|
|||
|
|
{
|
|||
|
|
$this->title = $name;
|
|||
|
|
|
|||
|
|
return $this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @return string
|
|||
|
|
*/
|
|||
|
|
public function getDescription()
|
|||
|
|
{
|
|||
|
|
return $this->description;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @param string $description
|
|||
|
|
* @return MailChimp_WooCommerce_PromoRule
|
|||
|
|
*/
|
|||
|
|
public function setDescription($description)
|
|||
|
|
{
|
|||
|
|
$this->description = $description;
|
|||
|
|
|
|||
|
|
return $this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @param \DateTime $date
|
|||
|
|
* @return $this
|
|||
|
|
*/
|
|||
|
|
public function setStartsAt(\DateTime $date)
|
|||
|
|
{
|
|||
|
|
$this->starts_at = (string) $date;
|
|||
|
|
|
|||
|
|
return $this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @return \DateTime
|
|||
|
|
*/
|
|||
|
|
public function getStartsAt()
|
|||
|
|
{
|
|||
|
|
return $this->starts_at;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @param \DateTime $date
|
|||
|
|
* @return $this
|
|||
|
|
*/
|
|||
|
|
public function setEndsAt(\DateTime $date)
|
|||
|
|
{
|
|||
|
|
$this->ends_at = (string) $date;
|
|||
|
|
|
|||
|
|
return $this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @return \DateTime
|
|||
|
|
*/
|
|||
|
|
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 int $amount
|
|||
|
|
* @return MailChimp_WooCommerce_PromoRule
|
|||
|
|
*/
|
|||
|
|
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 = (string) $time;
|
|||
|
|
|
|||
|
|
return $this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @return null
|
|||
|
|
*/
|
|||
|
|
public function getUpdatedAt()
|
|||
|
|
{
|
|||
|
|
return $this->updated_at_foreign;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @param \DateTime $time
|
|||
|
|
* @return $this
|
|||
|
|
*/
|
|||
|
|
public function setCreatedAt(\DateTime $time)
|
|||
|
|
{
|
|||
|
|
$this->created_at_foreign = (string) $time;
|
|||
|
|
|
|||
|
|
return $this;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @return null
|
|||
|
|
*/
|
|||
|
|
public function getCreatedAt()
|
|||
|
|
{
|
|||
|
|
return $this->created_at_foreign;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @return array
|
|||
|
|
*/
|
|||
|
|
public function toArray()
|
|||
|
|
{
|
|||
|
|
return mailchimp_array_remove_empty([
|
|||
|
|
'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 = [
|
|||
|
|
'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;
|
|||
|
|
}
|
|||
|
|
}
|