<?php namespace WPDesk\FS\TableRate\FreeShipping; /** * Can provide free shipping data. */ class FreeShippingNoticeData implements \JsonSerializable { const SHOW_PROGRESS_BAR = 'show_progress_bar'; const PERCENTAGE = 'percentage'; const THRESHOLD = 'threshold'; const THRESHOLD_DISPLAY_VALUE = 'threshold_display_value'; const ZERO_DISPLAY_VALUE = 'zero_display_value'; const MISSING_AMOUNT = 'missing_amount'; const NOTICE_TEXT = 'notice_text'; const BUTTON_URL = 'button_url'; const BUTTON_LABEL = 'button_label'; const META_DATA = 'meta_data'; /** * @var bool */ private $show_progress_bar; /** * @var float */ private $percentage; /** * @var float */ private $threshold; /** * @var string */ private $threshold_display_value; /** * @var string */ private $zero_display_value; /** * @var float */ private $missing_amount; /** * @var string */ private $notice_text; /** * @var string */ private $button_url; /** * @var string */ private $button_label; /** * @var array */ private $meta_data; /** * @param bool $show_progress_bar * @param float $percentage * @param float $threshold * @param string $threshold_display_value * @param string $zero_display_value * @param float $missing_amount * @param string $notice_text * @param string $button_url * @param string $button_label * @param array $meta_data */ public function __construct( bool $show_progress_bar = false, float $percentage = 0.0, float $threshold = 0.0, string $threshold_display_value = '', string $zero_display_value = '', float $missing_amount = 0.0, string $notice_text = '', string $button_url = '', string $button_label = '', array $meta_data = [] ) { $this->show_progress_bar = $show_progress_bar; $this->percentage = $percentage; $this->threshold = $threshold; $this->threshold_display_value = $threshold_display_value; $this->zero_display_value = $zero_display_value; $this->missing_amount = $missing_amount; $this->notice_text = $notice_text; $this->button_url = $button_url; $this->button_label = $button_label; $this->meta_data = $meta_data; } /** * @return bool */ public function is_show_progress_bar(): bool { return $this->show_progress_bar; } /** * @return float */ public function get_percentage(): float { return $this->percentage; } /** * @return float */ public function get_threshold(): float { return $this->threshold; } /** * @return float */ public function get_missing_amount(): float { return $this->missing_amount; } /** * @return string */ public function get_notice_text(): string { return $this->notice_text; } /** * @return string */ public function get_threshold_display_value(): string { return $this->threshold_display_value; } /** * @return string */ public function get_zero_display_value(): string { return $this->zero_display_value; } /** * @return string */ public function get_button_url(): string { return $this->button_url; } /** * @return string */ public function get_button_label(): string { return $this->button_label; } /** * @return array */ public function get_meta_data(): array { return $this->meta_data; } #[\ReturnTypeWillChange] public function jsonSerialize(): array { return [ self::SHOW_PROGRESS_BAR => $this->is_show_progress_bar(), self::PERCENTAGE => $this->get_percentage(), self::THRESHOLD => $this->get_threshold(), self::THRESHOLD_DISPLAY_VALUE => $this->get_threshold_display_value(), self::ZERO_DISPLAY_VALUE => $this->get_zero_display_value(), self::MISSING_AMOUNT => $this->get_missing_amount(), self::NOTICE_TEXT => $this->get_notice_text(), self::BUTTON_URL => $this->get_button_url(), self::BUTTON_LABEL => $this->get_button_label(), self::META_DATA => $this->get_meta_data(), ]; } /** * Static factory. Creates notice data from array. * * @param array $data * * @return self */ public static function create_from_array( array $data ): self { return new self( $data[ self::SHOW_PROGRESS_BAR ] ?? false, $data[ self::PERCENTAGE ] ?? 0.0, $data[ self::THRESHOLD ] ?? 0.0, $data[ self::THRESHOLD_DISPLAY_VALUE ] ?? '', $data[ self::ZERO_DISPLAY_VALUE ] ?? '', $data[ self::MISSING_AMOUNT ] ?? '0.0', $data[ self::NOTICE_TEXT ] ?? '', $data[ self::BUTTON_URL ] ?? '', $data[ self::BUTTON_LABEL ] ?? '', is_array( $data[ self::META_DATA ] ?? null ) ? $data[ self::META_DATA ] : [] ); } }