<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class supports ADSL Suppliers
 *
 * @package    OSB
 * @subpackage ADSL
 * @category   Models
 * @author     Deon George
 * @copyright  (c) 2010 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Model_ADSL_Supplier extends ORMOSB {
	// Relationships
	protected $_has_many = array(
		'adsl_supplier_plan'=>array('foreign_key'=>'supplier_id','far_key'=>'id'),
	);

	protected $_updated_column = FALSE;

	/**
	 * Return a list of plans that this supplier makes available
	 */
	public function plans($active=TRUE) {
		$a = $this->adsl_supplier_plan;

		if ($active)
			$a->where_active();

		return $a;
	}

	/**
	 * Return a list of plans that we provide by this supplier
	 */
	public function adsl_plans($active=TRUE) {
		$return = array();

		foreach ($this->plans($active)->find_all() as $po)
			foreach ($po->adsl_plan->find_all() as $apo)
				$return[$apo->id] = $apo;

		return $return;
	}

	/**
	 * Return a list of services for this supplier
	 *
	 * @param boolean $active TRUE List only active Services|False List all services
	 */
	public function services($active=TRUE) {
		$services = array();

		// Get a list of plans made for this supplier
		$plans = array_keys($this->adsl_plans(FALSE));

		// Start with all our ADSL Plans
		foreach (ORM::factory('service')->list_bylistgroup('ADSL') as $so)
			if (! $active OR $so->status)
				if (in_array($so->product->prod_plugin_data,$plans) OR in_array($so->plugin()->provided_adsl_plan_id,$plans))
					array_push($services,$so);

		// @todo poor cludge, we should find them without using list_bylistgroup()
		if (! $services)
		foreach (ORM::factory('service')->list_bylistgroup('HSPA') as $so)
			if (! $active OR $so->status)
				if (in_array($so->product->prod_plugin_data,$plans) OR in_array($so->plugin()->provided_adsl_plan_id,$plans))
					array_push($services,$so);

		return $services;
	}
}
?>
