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

/**
 * This class provides User Service functions
 *
 * @package    OSB
 * @subpackage Service
 * @category   Controllers/User
 * @author     Deon George
 * @copyright  (c) 2010 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Controller_User_Service extends Controller_TemplateDefault_User {
	protected $secure_actions = array(
		'ajaxmanage'=>TRUE,
		'list'=>TRUE,
		'view'=>TRUE,
	);

	public function action_ajaxmanage() {
		$this->auto_render = FALSE;

		$so = ORM::factory('service',$this->request->param('id'));
		$k = Session::instance()->get_once('manage_button');
		$amo = $so->plugin(isset($_REQUEST['t']) ? $_REQUEST['t'] : '');

		$o = array(
			'u'=>$amo->username_value() ? $amo->username_value() : strtolower($amo->name()),
			'p'=>(! $k OR ! $this->request->is_ajax() OR ! $so->loaded() OR ! isset($_REQUEST['k']) OR $k != $_REQUEST['k']) ? Random::char() : $amo->password_value(),
		);

		$this->response->headers('Content-Type','application/json');
		$this->response->body(json_encode($o));
	}

	/**
	 * Show a list of services
	 */
	public function action_list() {
		Block::add(array(
			'title'=>sprintf('%s: %s - %s',_('Services For'),$this->ao->accnum(),$this->ao->name(TRUE)),
			'body'=>Table::display(
				$this->ao->service->find_all(),
				25,
				array(
					'id'=>array('label'=>'ID','url'=>'user/service/view/'),
					'service_name()'=>array('label'=>'Details'),
					'recur_schedule'=>array('label'=>'Billing'),
					'price(TRUE,TRUE)'=>array('label'=>'Price','class'=>'right'),
					'status'=>array('label'=>'Active'),
				),
				array(
					'page'=>TRUE,
					'type'=>'select',
					'form'=>'user/service/view',
				)),
			));
	}

	public function action_view() {
		list($id,$output) = Table::page(__METHOD__);

		$so = ORM::factory('service',$id);

		if (! $so->loaded() OR ! Auth::instance()->authorised($so->account_id,$so->affiliate_id)) {
			$this->template->content = 'Unauthorised or doesnt exist?';
			return FALSE;
		}

		$output .= View::factory($this->viewpath())
			->set('so',$so);

		Block::add(array(
			'title'=>sprintf('%s: %s',$so->id(),$so->service_name()),
			'body'=>$output,
			));
	}
}
?>