This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/modules/adsl/classes/Controller/Admin/Adsl.php
2013-11-15 16:25:45 +11:00

161 lines
4.1 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class provides Admin ADSL functions
*
* @package ADSL
* @category Controllers/Admin
* @author Deon George
* @copyright (c) 2009-2013 Open Source Billing
* @license http://dev.osbill.net/license.html
*/
class Controller_Admin_Adsl extends Controller_Adsl {
protected $secure_actions = array(
'index'=>TRUE,
'edit'=>TRUE,
'list'=>TRUE,
'traffic'=>TRUE,
);
public function action_index() {
$output = '';
$output .= Form::open(URL::link('admin','adsl/traffic'));
$output .= Form::select('sid',ORM::factory('ADSL_Supplier')->list_select());
$output .= Form::button('submit','Submit',array('class'=>'btn btn-primary'));
$output .= Form::close();
Block::factory()
->title('Select ADSL Supplier')
->title_icon('icon-share')
->body($output);
}
public function action_list() {
Block::factory()
->title('ADSL Plans')
->title_icon('icon-th-list')
->body(Table::factory()
->data(ORM::factory('Product_Plugin_Adsl')->find_all())
->jssort('adsl')
->columns(array(
'id'=>'ID',
'supplier_plan->name()'=>'Plan',
'supplier_plan->display("status")'=>'Avail',
'base_down_peak'=>'PD',
'base_down_offpeak'=>'OPD',
'base_up_peak'=>'PU',
'base_up_offpeak'=>'OPU',
'extra_charged'=>'$',
'extra_down_peak'=>'EPD',
'extra_down_offpeak'=>'EOPD',
'extra_up_peak'=>'EPU',
'extra_up_offpeak'=>'EOPU',
'contract_term'=>'Cont',
))
->prepend(array(
'id'=>array('url'=>URL::link('admin','adsl/edit/')),
))
);
}
public function action_edit() {
$apo = ORM::factory('Product_Plugin_Adsl',$this->request->param('id'));
$test_result = array();
if (! $apo->loaded())
HTTP::redirect(URL::link('admin','adsl/list'));
if ($_POST) {
// Entry updated
if ($apo->values($_POST)->check() AND $apo->changed()) {
try {
if ($apo->save())
SystemMessage::factory()
->title('Record updated')
->type('success')
->body(_('Your Charge record has been recorded/updated.'));
} catch (ORM_Validation_Exception $e) {
$errors = $e->errors('models');
SystemMessage::factory()
->title('Record NOT updated')
->type('error')
->body(join('<br/>',array_values($errors)));
$sco->reload();
}
}
if (isset($_POST['test'])) {
$charge = isset($_POST['test']['charge']) ? $_POST['test']['charge'] : FALSE;
$test_result = $apo->allowance($_POST['test'],FALSE,$charge,1000);
}
}
Block::factory()
->type('form-horizontal')
->title('Update ADSL Plan')
->title_icon('icon-wrench')
->body(View::factory('adsl/admin/edit')
->set('test_result',$test_result)
->set('o',$apo));
Block::factory()
->title('Products Using this Plan')
->title_icon('icon-th-list')
->body(Table::factory()
->jssort('traffic')
->data($apo->products()->find_all())
->columns(array(
'id'=>'ID',
'title()'=>'Name',
'status'=>'Active',
))
->prepend(array(
'id'=>array('url'=>URL::link('admin','product/edit/')),
))
);
}
/**
* Reconcile billing for an ADSL supplier
*/
public function action_traffic() {
if (empty($_POST['sid']))
HTTP::redirect(URL::link('admin','adsl/index'));
$aso = ORM::factory('ADSL_Supplier',$_POST['sid']);
if (! $aso->loaded())
HTTP::redirect(URL::link('admin','adsl/index'));
$t = ORM::factory('Service_Plugin_Adsl_Traffic');
$date = date('Y-m-d',time()-86400);
Block::factory()
->title(sprintf('ADSL Traffic for %s',$date))
->title_icon('icon-th-list')
->body(Table::factory()
->jssort('traffic')
->data($aso->traffic->where('date','=',$date)->find_all())
->columns(array(
'service'=>'Service Login',
'plan->service->id'=>'Service',
'plan->service_number'=>'Service',
'plan->service->status'=>'Active',
'up_peak'=>'Up Peak',
'down_peak'=>'Down Peak',
'up_offpeak'=>'Up OffPeak',
'down_offpeak'=>'Down OffPeak',
'peer'=>'Peer',
'internal'=>'Internal',
))
->prepend(array(
'plan->service->id'=>array('url'=>URL::link('user','service/view/')),
))
);
}
}
?>