codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
case 'campaigns': $data = $this->table('definitions')->where('module', 'campaign'); $deniedRows = ['id', 'check']; $dataCount = $data->count(); if(strlen($search['value']) !== 0){ $data = $data->where(function($query) use ($columns, $search, $deniedRows){ foreach ($columns as $key => $value) { if(in_array($columns[$key]['data'], $deniedRows)) { unset($columns[$key]); }else{ if(strlen($columns[$key]['data']) !== 0){ if(!is_numeric($search['value'])){ $query = $query->orWhere($columns[$key]['data'], '~*', $search['value']); }else{ $query = $query->orWhere($columns[$key]['data'], '=', $search['value']); } } } } }); $searchCount = $data->count(); } foreach ($order as $order) { $colKey = $order['column']; $orderDir = $order['dir']; if(strlen($columns[$colKey]['data']) !== 0 && strlen($orderDir) !== 0){ if(!in_array($columns[$colKey]['data'], $deniedRows)) { $data = $data->orderBy($columns[$colKey]['data'], $orderDir); } } } if($length !== "-1"){ $data = $data->skip($start)->take($length); } $data = $data->orderBy('definitions.datetime','desc'); foreach ($data->get() as $key => $value) { $result['data'][$key]['id'] = $value->id; /* Campaign Name => name Budget => budget Lead Count => lead_count Lead Per Cost => lead_per_cost Conversion Rate => conversion_rate Sales => sales */ $data = json_decode($value->data); $result['data'][$key]['name'] = $value->definition; $result['data'][$key]['budget'] = (is_null($data->data->budget) ? 0 : (int) $data->data->budget); $result['data'][$key]['lead_count'] = 0; $result['data'][$key]['lead_per_cost'] = 0; $result['data'][$key]['conversion_rate'] = 0; $result['data'][$key]['sales'] = 0; $channels = $this->table('all_channel')->get(); $total_sale = 0; $sale_count = 0; foreach ($channels as $i => $channel) { $result['data'][$key]['lead_count'] += (int) $channel->lead_count; /*------------------------------DİKKAT---------------------------*/ /* Bu controllerda ekte yolladığım ekran görüntüsüne denk düşen değerleri kontrol eden bölüm. Kod çalışıyor. Fakat sorun şu kanımca for içinde fazlaca for döngüsü var, alttaki $sales değişkeni en çok buna neden olan şey çünkü dönküde sürekli sorgu yapıyor, onu kaldırdığımda hızlıca geliyor sayfa ama bu seferde doğal olarak bazı değerler gelmiyor, sürekli databaseden sorgu yaptığı ve bu değerlerle hesaplama yaptığı için ekrana çok geç geldiğini düşünüyorum, bunu nasıl optimize edebilirim? */ $sales = $this->table('ipd_sales')->where('channel_data','=',$channel->data)->get(); foreach ($sales as $i => $sale) { $sale_data = json_decode($sale->operation_data); $total_sale += (int) $sale_data->total; $sale_count++; } } /* $value->lead_count */ $result['data'][$key]['sales'] = $sale_count; $result['data'][$key]['conversion_rate'] = floor(100 / ((int) $result['data'][$key]['lead_count'] / $sale_count) * 100) / 100 . '%'; $result['data'][$key]['lead_per_cost'] = floor((int) $result['data'][$key]['budget'] / (int) $result['data'][$key]['lead_count'] * 100) / 100; $result['data'][$key]['actions'] = '<div class="btn-group"> <a class="btn green btn-xs" href="javascript:;" data-toggle="dropdown" aria-expanded="false"> <i class="fa fa-user"></i> Options <i class="fa fa-angle-down"></i> </a> <ul class="dropdown-menu"><li> <a href="'.$this->getRootPath().'/panel/edit_campaign/'.$value->id.'"> <i class="fa fa-file-text-o"></i> '._('Edit').' </a> </li>'; if($this->checkPermission('delete')){ $result['data'][$key]['actions'] .= '<li> <a href="#" onclick="Campaigns.delete('.$value->id.', {title: \''._('Are you sure?').'\', text: \''._('This campaign will be delete!').'\', confirmButtonText: \''._('Yes').'\', cancelButtonText: \''._('No').'\', deletedText: \''._('Deleted!').'\'});"> <i class="fa fa-trash-o"></i> '._('Delete').' </a> </li>'; } $result['data'][$key]['actions'] .= ' </ul> </div>'; } $result['recordsFiltered'] = ($search['value'] !== "" ? $searchCount : $dataCount); $result['recordsTotal'] = $this->table('definitions')->where('module', 'campaign')->count(); break;
Private
[
?
]
Run code
Submit