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

/**
 * This class is able to collect traffic information for Exetel VISP
 *
 * @package    ADSL
 * @category   Service
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Service_Traffic_Adsl_Exetelvisp extends Service_Traffic_Adsl {
	private $login_user_field = 'username';
	private $login_pass_field = 'password';
	private $date_field = 'date';

	protected function getdata($date) {
		$result = array();

		// Assume we have a bad fetch, unless otherwise specified.
		$this->fetchresult = FALSE;

		$request = Request::factory($this->so->stats_url)
			->method('POST')
			->post($this->login_user_field,$this->so->stats_username)
			->post($this->login_pass_field,$this->so->stats_password)
			->post($this->date_field,$date);

		$request->client()->options($this->curlopts+array(
			CURLOPT_POST => TRUE,
		));

		$response = $request->execute();
		$data = $response->body();

		$resultarray = explode("\n",$data);

		// The first field should be a header, so we can ignore it:
		if (preg_match('/^Login/',$resultarray[0])) {
			array_shift($resultarray);
			$this->fetchresult = TRUE;
		}

		// If we got the expected data, we can parse it.
		if ($this->fetchresult)
			foreach ($resultarray as $details) {
				if (! trim($details))
					continue;

				$valuesarray = explode(',',$details);

				// Extel VISP stores data in MB's*100.
				$attrs = array();
				$attrs['service'] = $valuesarray[0];
				$attrs['date'] = $valuesarray[1];
				$attrs['up_peak'] = $valuesarray[2]/100;
				$attrs['down_peak'] = $valuesarray[3]/100;
				$attrs['up_offpeak'] = $valuesarray[4]/100;
				$attrs['down_offpeak'] = $valuesarray[5]/100;

				array_push($result,$attrs);
			}

		return $result;
	}
}
?>