<?php

namespace PayPal\Api;

use PayPal\Common\PayPalModel;

/**
 * Class PlanList
 *
 * Resource representing a list of billing plans with basic information and get link.
 *
 * @package PayPal\Api
 *
 * @property \PayPal\Api\Plan[] plans
 * @property string total_items
 * @property string total_pages
 * @property \PayPal\Api\Links[] links
 */
class PlanList extends PayPalModel {

	/**
	 * Array of billing plans.
	 *
	 * @param \PayPal\Api\Plan[] $plans
	 * 
	 * @return $this
	 */
	public function setPlans( $plans) {
		$this->plans = $plans;
		return $this;
	}

	/**
	 * Array of billing plans.
	 *
	 * @return \PayPal\Api\Plan[]
	 */
	public function getPlans() {
		return $this->plans;
	}

	/**
	 * Append Plans to the list.
	 *
	 * @param \PayPal\Api\Plan $plan
	 * @return $this
	 */
	public function addPlan( $plan) {
		if (!$this->getPlans()) {
			return $this->setPlans(array($plan));
		} else {
			return $this->setPlans(
				array_merge($this->getPlans(), array($plan))
			);
		}
	}

	/**
	 * Remove Plans from the list.
	 *
	 * @param \PayPal\Api\Plan $plan
	 * @return $this
	 */
	public function removePlan( $plan) {
		return $this->setPlans(
			array_diff($this->getPlans(), array($plan))
		);
	}

	/**
	 * Total number of items.
	 *
	 * @param string $total_items
	 * 
	 * @return $this
	 */
	public function setTotalItems( $total_items) {
		$this->total_items = $total_items;
		return $this;
	}

	/**
	 * Total number of items.
	 *
	 * @return string
	 */
	public function getTotalItems() {
		return $this->total_items;
	}

	/**
	 * Total number of pages.
	 *
	 * @param string $total_pages
	 * 
	 * @return $this
	 */
	public function setTotalPages( $total_pages) {
		$this->total_pages = $total_pages;
		return $this;
	}

	/**
	 * Total number of pages.
	 *
	 * @return string
	 */
	public function getTotalPages() {
		return $this->total_pages;
	}

	/**
	 * Sets Links
	 *
	 * @param \PayPal\Api\Links[] $links
	 * 
	 * @return $this
	 */
	public function setLinks( $links) {
		$this->links = $links;
		return $this;
	}

	/**
	 * Gets Links
	 *
	 * @return \PayPal\Api\Links[]
	 */
	public function getLinks() {
		return $this->links;
	}

	/**
	 * Append Links to the list.
	 *
	 * @param \PayPal\Api\Links $links
	 * @return $this
	 */
	public function addLink( $links) {
		if (!$this->getLinks()) {
			return $this->setLinks(array($links));
		} else {
			return $this->setLinks(
				array_merge($this->getLinks(), array($links))
			);
		}
	}

	/**
	 * Remove Links from the list.
	 *
	 * @param \PayPal\Api\Links $links
	 * @return $this
	 */
	public function removeLink( $links) {
		return $this->setLinks(
			array_diff($this->getLinks(), array($links))
		);
	}

}
