TRUE, 'edit'=>TRUE, 'list'=>TRUE, 'stat'=>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() { $this->meta->title = 'ADSL Plans'; 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("active")'=>'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')); if (! $apo->loaded()) throw HTTP_Exception::factory(403,'Plan either doesnt exist, or you are not authorised to see it'); $this->meta->title = 'ADSL Plan: '.$apo->name(); $test_result = array(); if (! $apo->loaded()) HTTP::redirect(URL::link('admin','adsl/list')); if ($this->request->post()) { if ($apo->values($this->request->post())->changed() AND (! $this->save($apo))) $apo->reload(); if ($this->request->post('test')) { $charge = $this->request->post('test.charge'); $test_result = $apo->allowance($this->request->post('test'),FALSE,$charge,TRUE); } } 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()) ->columns(array( 'id'=>'ID', 'name(Site::language())'=>'Name', 'status'=>'Active', )) ->prepend(array( 'id'=>array('url'=>URL::link('admin','product/edit/')), )) ); } /** * Usage statistics for the previous moth */ public function action_stat() { $this->meta->title = 'ADSL Stats'; // @todo This needs to be configurable. $traffic = array(1,2,5,10,25,50,75,100,150,200); $svs = ORM::factory('Service')->list_bylistgroup('ADSL'); $stats = array(); $output = ''; $ts = 0; foreach ($svs as $a=>$so) { // Number of services if (! isset($stats[$so->product->plugin()->supplier_plan->speed]['c'])) $stats[$so->product->plugin()->supplier_plan->speed]['c'] = 0; $stats[$so->product->plugin()->supplier_plan->speed]['c']++; $ts++; $a = 0; foreach (array_reverse($traffic) as $i) { if ($i < $so->plugin()->traffic_month(strtotime('first day of last month'),TRUE)) break; $a = $i; } if (! isset($stats[$so->product->plugin()->supplier_plan->speed]['d'][$a])) $stats[$so->product->plugin()->supplier_plan->speed]['d'][$a] = 0; $stats[$so->product->plugin()->supplier_plan->speed]['d'][$a]++; } Block::factory() ->title('ADSL Traffic Summary Stats - Last Month') ->title_icon('icon-list') ->body( View::factory('adsl/admin/stats') ->set('stats',$stats) ->set('traffic',$traffic) ->set('ts',$ts) ); } /** * Reconcile billing for an ADSL supplier */ public function action_traffic() { if (! $this->request->post('sid')) HTTP::redirect(URL::link('admin','adsl/index')); $aso = ORM::factory('ADSL_Supplier',$this->request->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->active'=>'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/')), )) ); } } ?>