Формирование данных для отчета по транзакциям как список транзакций, правки по коду compaign

parent 8cda316f
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
} }
#period-stats, #period-stats,
#company-stats #campaign-stats
{ {
display: none; display: none;
} }
......
...@@ -52,8 +52,8 @@ $(document).ready(function(){ ...@@ -52,8 +52,8 @@ $(document).ready(function(){
if (sortField) { if (sortField) {
//console.log('AAA sortField = ', sortField); console.log('AAA sortField = ', sortField);
//console.log('AAA dataTable = ', dataTable); console.log('AAA dataTable = ', dataTable);
var dataTableForSort = []; var dataTableForSort = [];
...@@ -61,7 +61,8 @@ $(document).ready(function(){ ...@@ -61,7 +61,8 @@ $(document).ready(function(){
var dataTableSortItem = {}; var dataTableSortItem = {};
dataTableSortItem['period'] = dataTableItem; dataTableSortItem['period'] = dataTableItem;
activeLines.forEach(function(activeLine){ activeLines.forEach(function(activeLine){
dataTableSortItem[activeLine] = dataTable[activeLine][ind]; currentActiveLine = activeLine;
dataTableSortItem[activeLine] = valueFormat(dataTable[activeLine][ind]);
}); });
dataTableForSort.push(dataTableSortItem); dataTableForSort.push(dataTableSortItem);
}); });
...@@ -119,11 +120,21 @@ $(document).ready(function(){ ...@@ -119,11 +120,21 @@ $(document).ready(function(){
activeLines = ['shows', 'clicks', 'transactions', 'salemoney', 'admoney']; activeLines = ['shows', 'clicks', 'transactions', 'salemoney', 'admoney'];
} }
if (dataLineChartStat.report == 'transaction') { if (dataLineChartStat.report == 'transaction') {
activeLines = ['usdollarmoney', 'localmoney']; activeLines = ['localmoney', 'usdollarmoney'];
} }
/*
// Автоматизировать формирование списка категорий таблицы:
activeLines = [];
$('thead.metric.sortable th input[type="checkbox"]', $table).each(function(){
if ($(this).is(":checked")) {
listCats.push($(this).data('field'));
}
})
*/
//console.log('AAA TableStat render: ', dataLineChartStat); //console.log('AAA TableStat render: ', dataLineChartStat);
//console.log('AAA activeLines: ', activeLines); console.log('AAA activeLines: ', activeLines);
dataTable = {}; dataTable = {};
activeLines.forEach(function(item){ activeLines.forEach(function(item){
......
...@@ -47,7 +47,7 @@ $(document).ready(function(){ ...@@ -47,7 +47,7 @@ $(document).ready(function(){
$chartStatError = $('.chart-graph-stat-error'), $chartStatError = $('.chart-graph-stat-error'),
$chartStatErrorMessage = $('.chart-graph-stat-error .message'), $chartStatErrorMessage = $('.chart-graph-stat-error .message'),
periodStatsData, periodStatsData,
companyStatsData, campaignStatsData,
dataLineChartStat; dataLineChartStat;
...@@ -61,12 +61,11 @@ $(document).ready(function(){ ...@@ -61,12 +61,11 @@ $(document).ready(function(){
if ($('#period-stats').val()) { if ($('#period-stats').val()) {
periodStatsData = JSON.parse($('#period-stats').val()); periodStatsData = JSON.parse($('#period-stats').val());
} }
if ($('#company-stats').val()) { if ($('#campaign-stats').val()) {
companyStatsData = JSON.parse($('#company-stats').val()); campaignStatsData = JSON.parse($('#campaign-stats').val());
} }
// Устанавливаем данные по периоду в качестве стартовых: // Устанавливаем данные по периоду в качестве стартовых:
dataLineChartStat = periodStatsData; dataLineChartStat = periodStatsData;
//console.log('AAA dataLineChartStat = ', dataLineChartStat); //console.log('AAA dataLineChartStat = ', dataLineChartStat);
// Отрисовка графика и таблицы по стартовым данным: // Отрисовка графика и таблицы по стартовым данным:
...@@ -144,8 +143,8 @@ $(document).ready(function(){ ...@@ -144,8 +143,8 @@ $(document).ready(function(){
$this.addClass('selected').toggleClass('desc'); $this.addClass('selected').toggleClass('desc');
if ($this.hasClass('main-cat')) { if ($this.hasClass('main-cat')) {
dataLineChartStat = ($this.hasClass('date')) ? periodStatsData : companyStatsData; dataLineChartStat = ($this.hasClass('date')) ? periodStatsData : campaignStatsData;
$tableHeadColsChecks.attr("disabled", $this.hasClass('company')); $tableHeadColsChecks.attr("disabled", $this.hasClass('campaign'));
} }
renderHourTable(); renderHourTable();
}); });
...@@ -199,7 +198,7 @@ $(document).ready(function(){ ...@@ -199,7 +198,7 @@ $(document).ready(function(){
ShowChartData(); ShowChartData();
periodStatsData = res.period; periodStatsData = res.period;
companyStatsData = res.company; campaignStatsData = res.campaign;
dataLineChartStat = periodStatsData; dataLineChartStat = periodStatsData;
$('.main-cat').removeClass('selected'); $('.main-cat').removeClass('selected');
$('.main-cat.date').addClass('selected'); $('.main-cat.date').addClass('selected');
......
...@@ -109,43 +109,54 @@ class Cabinet extends Common ...@@ -109,43 +109,54 @@ class Cabinet extends Common
$statsDaysModel = $this->container->get(StatsDays::class); $statsDaysModel = $this->container->get(StatsDays::class);
//$stats = $statsDaysModel->findAll(['FeedID' => $feed_id_list])->toArray(); //$stats = $statsDaysModel->findAll(['FeedID' => $feed_id_list])->toArray();
$periodStats = $statsDaysModel->getStatsByDate($feed_id_list, $dates); $periodStats = $statsDaysModel->getStatsByDate($feed_id_list, $dates);
$companyStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates); $campaignStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates);
$cats = ['shows','clicks','transactions','salemoney','admoney']; $cats = ['shows','clicks','transactions','salemoney','admoney'];
if ($campaignStats || count($campaignStats['period'])>0) {
$feeds_names = [];
foreach($campaignStats['period'] as $feed_id) {
$feed = $feedsModel->findById($feed_id);
$feeds_names[] = $feed->getTitle();
}
$campaignStats['period'] = $feeds_names;
}
break; break;
case 'transaction': case 'transaction':
/** @var \App\Model\Feeds $transactionsModel */ /** @var \App\Model\Feeds $transactionsModel */
$transactionsModel = $this->container->get(Transactions::class); $transactionsModel = $this->container->get(Transactions::class);
$periodStats = $transactionsModel->getStatsByDate($feed_id_list, $dates); $transactionStats = $transactionsModel->getStatsByTransactions($feed_id_list, $dates);
$companyStats = $transactionsModel->getStatsByFeeds($feed_id_list, $dates);
$cats = ['localmoney','usdollarmoney']; $cats = ['localmoney','usdollarmoney'];
if ($transactionStats || count($transactionStats['period'])>0) {
$transactions_names = [];
foreach($transactionStats['period'] as $transaction_id) {
$transactions_names[] = 'transaction #'.$transaction_id;
}
$transactionStats['period'] = $transactions_names;
}
$periodStats = $transactionStats;
break; break;
default: default:
$data['error'] = _t('Извините, тип отчета "'. $report_type .'" недоступен'); $data['error'] = _t('Извините, тип отчета "'. $report_type .'" недоступен');
break; break;
} }
if ($companyStats || count($companyStats['period'])>0) {
$feeds_names = [];
foreach($companyStats['period'] as $feed_id) {
$feed = $feedsModel->findById($feed_id);
$feeds_names[] = $feed->getTitle();
}
$companyStats['period'] = $feeds_names;
}
//return new JsonResponse($companyStats); //return new JsonResponse($companyStats);
$periodStats['type'] = 'interval'; $periodStats['type'] = 'interval';
$periodStats['report'] = $report_type; $periodStats['report'] = $report_type;
$companyStats['type'] = 'interval'; $campaignStats['type'] = 'interval';
$companyStats['report'] = $report_type; $campaignStats['report'] = $report_type;
$data['feeds'] = $feeds; $data['feeds'] = $feeds;
$data['report'] = $report_type; $data['report'] = $report_type;
$data['current_period'] = $current_period; $data['current_period'] = $current_period;
$data['dates'] = $dates; $data['dates'] = $dates;
$data['periodStats'] = $periodStats; $data['periodStats'] = $periodStats;
$data['companyStats'] = $companyStats; $data['campaignStats'] = $campaignStats;
$data['cats'] = $cats; $data['cats'] = $cats;
/* /*
...@@ -244,17 +255,36 @@ class Cabinet extends Common ...@@ -244,17 +255,36 @@ class Cabinet extends Common
/** @var \App\Model\Feeds $statDaysModel */ /** @var \App\Model\Feeds $statDaysModel */
$statsDaysModel = $this->container->get(StatsDays::class); $statsDaysModel = $this->container->get(StatsDays::class);
$periodStats = $statsDaysModel->getStatsByDate($feed_id_list, $dates); $periodStats = $statsDaysModel->getStatsByDate($feed_id_list, $dates);
$companyStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates); $campaignStats = $statsDaysModel->getStatsByFeeds($feed_id_list, $dates);
if ($campaignStats || count($campaignStats['period'])>0) {
$feeds_names = [];
foreach($campaignStats['period'] as $feed_id) {
$feed = $feedsModel->findById($feed_id);
$feeds_names[] = $feed->getTitle();
}
$campaignStats['period'] = $feeds_names;
}
break; break;
case 'transaction': case 'transaction':
/** @var \App\Model\Feeds $transactionsModel */ /** @var \App\Model\Feeds $transactionsModel */
$transactionsModel = $this->container->get(Transactions::class); $transactionsModel = $this->container->get(Transactions::class);
$periodStats = $transactionsModel->getStatsByDate($feed_id_list, $dates); $transactionStats = $transactionsModel->getStatsByTransactions($feed_id_list, $dates);
$companyStats = $transactionsModel->getStatsByFeeds($feed_id_list, $dates);
if ($transactionStats || count($transactionStats['period'])>0) {
$transactions_names = [];
foreach($transactionStats['period'] as $transaction_id) {
$transactions_names[] = 'transaction #'.$transaction_id;
}
$transactionStats['period'] = $transactions_names;
}
$periodStats = $transactionStats;
break; break;
default: default:
$periodStats = null; $periodStats = null;
$companyStats = null; $campaignStats = null;
break; break;
} }
...@@ -265,13 +295,13 @@ class Cabinet extends Common ...@@ -265,13 +295,13 @@ class Cabinet extends Common
$periodStats['type'] = 'interval'; $periodStats['type'] = 'interval';
$periodStats['report'] = $report_type; $periodStats['report'] = $report_type;
$companyStats['type'] = 'interval'; $campaignStats['type'] = 'interval';
$companyStats['report'] = $report_type; $campaignStats['report'] = $report_type;
if ($periodStats || $companyStats) { if ($periodStats || $companyStats) {
$data = array( $data = array(
'period' => $periodStats, 'period' => $periodStats,
'company' => $companyStats, 'campaign' => $campaignStats,
); );
} else { } else {
$data = null; $data = null;
......
...@@ -35,6 +35,33 @@ use App\Model\Common; ...@@ -35,6 +35,33 @@ use App\Model\Common;
class Transactions extends Common class Transactions extends Common
{ {
public function getStatsByTransactions($feeds, $dates)
{
$adapter = $this->tableGateway->getAdapter();
$sql = 'SELECT TransactionID, SUM(LocalMoney) AS LocalMoney, SUM(USDollarMoney) AS USDollarMoney'
. ' FROM ' . (string) $this->tableGateway->getTable()
. ' WHERE FeedID in (\''.implode('\',\'', $feeds).'\')'
. ' AND (EventDate BETWEEN "'.$dates[0].'" AND "'.$dates[1].'")'
. ' GROUP BY TransactionID'
. ' ORDER BY TransactionID';
$res = $adapter->query($sql, \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);
$stats = array(
'period' => [],
'localmoney' => [],
'usdollarmoney' => []
);
foreach($res as $stat_item) {
$stats['period'][] = $stat_item['TransactionID'];
$stats['localmoney'][] = (float)$stat_item['LocalMoney'];
$stats['usdollarmoney'][] = (float)$stat_item['USDollarMoney'];
}
return $stats;
}
public function getStatsByFeeds($feeds, $dates) public function getStatsByFeeds($feeds, $dates)
{ {
$adapter = $this->tableGateway->getAdapter(); $adapter = $this->tableGateway->getAdapter();
......
...@@ -55,7 +55,7 @@ $src = $sxml['src']; ...@@ -55,7 +55,7 @@ $src = $sxml['src'];
$error = $this->error; $error = $this->error;
$periodStats = $this->periodStats; $periodStats = $this->periodStats;
$companyStats = $this->companyStats; $campaignStats = $this->campaignStats;
$current_period = $this->current_period; $current_period = $this->current_period;
$dates = $this->dates; $dates = $this->dates;
$cats = $this->cats; $cats = $this->cats;
...@@ -111,7 +111,7 @@ $system_link = $this->url('adm.system.actions'); ...@@ -111,7 +111,7 @@ $system_link = $this->url('adm.system.actions');
<?php else: ?> <?php else: ?>
<textarea id="period-stats"><?= ($periodStats ? json_encode($periodStats) : '')?></textarea> <textarea id="period-stats"><?= ($periodStats ? json_encode($periodStats) : '')?></textarea>
<textarea id="company-stats"><?= ($companyStats ? json_encode($companyStats) : '')?></textarea> <textarea id="campaign-stats"><?= ($campaignStats ? json_encode($campaignStats) : '')?></textarea>
<section class="b-content__work"> <section class="b-content__work">
<div class="wrapp" style="position: relative;"> <div class="wrapp" style="position: relative;">
...@@ -175,7 +175,12 @@ $system_link = $this->url('adm.system.actions'); ...@@ -175,7 +175,12 @@ $system_link = $this->url('adm.system.actions');
<thead class="metric sortable"> <thead class="metric sortable">
<tr> <tr>
<th> <th>
<b class="main-cat date selected"><?= _t('Дата')?></b> / <b class="main-cat company"><?= _t('Кампания')?></b> <?php if($report == 'common'): ?>
<b class="main-cat date selected"><?= _t('Дата')?></b> / <b class="main-cat campaign"><?= _t('Кампания')?></b>
<?php else: ?>
<b class="main-cat date selected"><?= _t('Транзакция')?></b>
<?php endif; ?>
</th> </th>
<?php foreach($cats as $name): ?> <?php foreach($cats as $name): ?>
<th> <th>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment