diff --git a/plugins/tps/reklama/controllers/StatisticsController.php b/plugins/tps/reklama/controllers/StatisticsController.php index d450b4273..035ba3c09 100644 --- a/plugins/tps/reklama/controllers/StatisticsController.php +++ b/plugins/tps/reklama/controllers/StatisticsController.php @@ -4,7 +4,9 @@ namespace Tps\Reklama\Controllers; use Backend\Classes\Controller; use Backend\Facades\BackendMenu; +use Carbon\Carbon; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; use Tps\Reklama\Models\Reklama; use Tps\Reklama\Models\Statistika; use Tps\Reklama\Widgets\Stats; @@ -19,11 +21,21 @@ class StatisticsController extends Controller BackendMenu::setContext('Tps.Reklama', 'main-menu-item', 'side-menu-item3'); + $config = $this->makeConfig('$/tps/reklama/controllers/statisticscontroller/config_filter.yaml'); + + $widget = $this->makeWidget('Backend\Widgets\Filter',$config); + + $this->vars['widget'] = $widget; + + $widget->bindEvent('filter.update', function () use($widget){ + return $this->onFilteer(); + }); + + $widget->bindToController(); } public function index() { -// $config = $this->makeConfig('$/tps/reklama/models/statistika/fields.yaml'); $this->pageTitle = 'Statistics'; $this->vars['stats'] = Statistika::groupBy('item_id') @@ -32,26 +44,58 @@ class StatisticsController extends Controller ->take(20) ->get() ->toArray(); - } - public function onLoad(){ - $item_id = input('item_id'); - - if($item_id){ - $stats = Db::table('tps_reklama_statistika') - ->select(Db::raw("item_id,sum(view) as v, sum(click) as c, extract(year from date) as y, extract(month from date) as m")) - ->where('item_id',$item_id) - ->whereNotNull('date') - ->groupBy(Db::raw("item_id, extract(year from date), extract(month from date)")) - ->orderBy('y') - ->orderBy('m') - ->get() - ->toArray(); - return [ - 'result' => $stats - ]; + protected function getCurrentFilters() { + $filters = []; + foreach (\Session::get('widget', []) as $name => $item) { + if (str_contains($name, 'Filter')) { + $filter = @unserialize(@base64_decode($item)); + if ($filter) { + //$filters[] = $filter; + array_push($filters, $filter); + } + } } + + return $filters[0]; + } + + public function onFilteer(){ + + $this->vars['reklama'] = 'Reklama'; + + $filters = $this->getCurrentFilters(); + + $reklamas = $filters['scope-reklama']; + + $dates = $filters['scope-date']; + + if($reklamas) + { + $ids = array_keys($reklamas); + + $stats = Db::table('tps_reklama_statistika') + ->select(Db::raw("item_id,view, click, date")) + ->whereIn('item_id',$ids); + + if($dates){ + $stats->where('date','>=',$dates[0]) + ->where('date','<=',$dates[1]); + } + else + { + $stats->where('date','<=',Carbon::today()->startOfMonth()); + } + + $this->vars['reklams'] = $reklamas; + + $this->vars['reklam_stats'] = $stats->get(); + + return ['#linechart' => $this->makePartial('linechart')]; + } + + } } diff --git a/plugins/tps/reklama/controllers/statisticscontroller/_barchart.htm b/plugins/tps/reklama/controllers/statisticscontroller/_barchart.htm new file mode 100644 index 000000000..4ed85097c --- /dev/null +++ b/plugins/tps/reklama/controllers/statisticscontroller/_barchart.htm @@ -0,0 +1,35 @@ +