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

/**
 * OSB Admin Main home page
 *
 * @package    OSB
 * @category   Controllers/Admin
 * @author     Deon George
 * @copyright  (c) 2009-2013 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Controller_Admin_Welcome extends Controller_Welcome {
	protected $auth_required = TRUE;
	public $secure_actions = array(
		'index'=>TRUE,
	);

	public function action_index() {
		$t = time();

		// Show outstanding invoices
		$o = ORM::factory('Invoice');

		Block_Sub::add(array(
			'title'=>'Invoices Overdue - No Auto Billing',
			'body'=>Table::display(
				$o->list_overdue_billing($t),
				25,
				array(
					'due_date'=>array('label'=>'Due Date'),
					'account->accnum()'=>array('label'=>'Num'),
					'account->name()'=>array('label'=>'Account'),
					'account->display("status")'=>array('label'=>'Active'),
					'id'=>array('label'=>'ID','url'=>URL::link('user','invoice/view/')),
					'total(TRUE)'=>array('label'=>'Total','class'=>'right'),
					'due(TRUE)'=>array('label'=>'Amount Due','class'=>'right'),
				),
				array('page'=>TRUE)),
			'position'=>1,
			'order'=>1,
		));

		Block_Sub::add(array(
			'title'=>'Invoices Overdue - Auto Billing',
			'body'=>Table::display(
				$o->list_overdue_billing($t,TRUE),
				25,
				array(
					'due_date'=>array('label'=>'Due Date'),
					'account->accnum()'=>array('label'=>'Num'),
					'account->name()'=>array('label'=>'Account'),
					'account->display("status")'=>array('label'=>'Active'),
					'id'=>array('label'=>'ID','url'=>URL::link('user','invoice/view/')),
					'total(TRUE)'=>array('label'=>'Total','class'=>'right'),
					'due(TRUE)'=>array('label'=>'Amount Due','class'=>'right'),
				),
				array('page'=>TRUE)),
			'position'=>2,
			'order'=>1,
		));

		Block_Sub::add(array(
			'title'=>'Invoices Due',
			'body'=>Table::display(
				$o->list_due(),
				25,
				array(
					'due_date'=>array('label'=>'Due Date'),
					'account->accnum()'=>array('label'=>'Num'),
					'account->name()'=>array('label'),
					'account->display("status")'=>array('label'=>'Active'),
					'id'=>array('label'=>'ID','url'=>URL::link('user','invoice/view/')),
					'total(TRUE)'=>array('label'=>'Total','class'=>'right'),
					'due(TRUE)'=>array('label'=>'Amount Due','class'=>'right'),
				),
				array('show_other'=>'due()')),
			'position'=>3,
			'order'=>1,
		));

		// Show un-applied payments
		Block_Sub::add(array(
			'title'=>'Unapplied Payments',
			'body'=>Table::display(
				ORM::factory('Payment')->list_unapplied(),
				25,
				array(
					'date_payment'=>array('label'=>'Pay Date'),
					'account->accnum()'=>array('label'=>'Num'),
					'account->name()'=>array('label'=>'Account'),
					'account->display("status")'=>array('label'=>'Active'),
					'id'=>array('label'=>'ID','url'=>URL::link('admin','payment/view/')),
					'total_amt'=>array('label'=>'Total','class'=>'right'),
					'balance(TRUE)'=>array('label'=>'Balance','class'=>'right'),
				),
				array('show_other'=>'balance()')),
			'position'=>1,
			'order'=>2,
		));

		Block::add(array(
			'title'=>sprintf('%s: %s %s',$this->ao->accnum(),$this->ao->first_name,$this->ao->last_name),
			'subtitle'=>_('Administrator Overview'),
			'body'=>(string)Block_Sub::factory(),
		));

		// We are a site administrator
		$output = '';
		if ($this->ao->rtm_id == NULL) {
			$rtmo = ORM::factory('RTM',array('account_id','=',$this->ao->id))->find();

			// Quick validation, if we are an admin, we should have an entry in the RTM table.
			if (! $rtmo->loaded())
				throw new Kohana_Exception('User :aid not set up properly',array(':aid'=>$this->ao->id));

			$output = View::factory('welcome/admin')
				->set('o',$rtmo);

		} else {
			$rtmo = ORM::factory('RTM',$this->ao->rtm_id);
		}

		if ($output)
			Block::add(array(
				'title'=>sprintf('Reseller %s',$this->ao->display('company')),
				'body'=>$output,
			));
	}
}
?>