$distribution = $distributionManager->findOneDistribution($date); | $distribution = $distributionManager->findOneDistribution($date); | ||||
$selectedProductsArray = $productDistributionManager->findProductDistributionsByDistribution($distribution); | $selectedProductsArray = $productDistributionManager->findProductDistributionsByDistribution($distribution); | ||||
$productsArray = $productManager->findProducts(); | $productsArray = $productManager->findProducts(); | ||||
$ordersArray = $orderManager->findOrdersByDate($date); | |||||
$ordersArray = $orderManager->findOrdersByDistributionDate($date); | |||||
$pointsSaleArray = $pointSaleManager->findPointSales(); | $pointsSaleArray = $pointSaleManager->findPointSales(); | ||||
foreach ($pointsSaleArray as $pointSale) { | foreach ($pointsSaleArray as $pointSale) { |
<?php | |||||
/** | |||||
* Copyright distrib (2018) | |||||
* | |||||
* contact@opendistrib.net | |||||
* | |||||
* Ce logiciel est un programme informatique servant à aider les producteurs | |||||
* à distribuer leur production en circuits courts. | |||||
* | |||||
* Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
* respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
* utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
* sur le site "http://www.cecill.info". | |||||
* | |||||
* En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
* de modification et de redistribution accordés par cette licence, il n'est | |||||
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
* seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
* titulaire des droits patrimoniaux et les concédants successifs. | |||||
* | |||||
* A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
* associés au chargement, à l'utilisation, à la modification et/ou au | |||||
* développement et à la reproduction du logiciel par l'utilisateur étant | |||||
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
* manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
* avertis possédant des connaissances informatiques approfondies. Les | |||||
* utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
* logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
* sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
* | |||||
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
* pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
* termes. | |||||
*/ | |||||
namespace backend\controllers; | |||||
use common\helpers\GlobalParam; | |||||
use yii\filters\AccessControl; | |||||
use Yii; | |||||
use DateTime; | |||||
use DateInterval; | |||||
use DatePeriod; | |||||
class StatsAdminController extends BackendController | |||||
{ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'access' => [ | |||||
'class' => AccessControl::class, | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return $this->isUserCurrentAdmin(); | |||||
} | |||||
] | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
public function actionIndex() | |||||
{ | |||||
$orderManager = $this->getOrderManager(); | |||||
$data = []; | |||||
$dataLabels = []; | |||||
$dateStart = date('Y-m-d', time() - 60 * 60 * 24 * 30); | |||||
$dateEnd = date('Y-m-d', time() + 60 * 60 * 24); | |||||
$start = new DateTime($dateStart); | |||||
$interval = new DateInterval('P1D'); | |||||
$end = new DateTime($dateEnd); | |||||
$period = new DatePeriod($start, $interval, $end); | |||||
foreach ($period as $date) { | |||||
$dateFormat = date('d/m/Y', $date->getTimestamp()); | |||||
$dataLabels[] = $dateFormat; | |||||
$data[] = $orderManager->countOrdersByDateAndOrigin($date); | |||||
} | |||||
return $this->render('index', [ | |||||
'dataLabels' => $dataLabels, | |||||
'data' => $data, | |||||
]); | |||||
} | |||||
} | |||||
?> |
['label' => 'Administration', 'options' => ['class' => 'header'], 'visible' => $userManager->isCurrentAdmin()], | ['label' => 'Administration', 'options' => ['class' => 'header'], 'visible' => $userManager->isCurrentAdmin()], | ||||
['label' => 'Producteurs', 'icon' => 'th-list', 'url' => ['/producer-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | ['label' => 'Producteurs', 'icon' => 'th-list', 'url' => ['/producer-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | ||||
['label' => 'Statistiques', 'icon' => 'line-chart', 'url' => ['/stats-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | |||||
['label' => 'Tranches de prix', 'icon' => 'eur', 'url' => ['/producer-price-range-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | ['label' => 'Tranches de prix', 'icon' => 'eur', 'url' => ['/producer-price-range-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | ||||
['label' => 'Taxes', 'icon' => 'eur', 'url' => ['/tax-rate-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | ['label' => 'Taxes', 'icon' => 'eur', 'url' => ['/tax-rate-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | ||||
['label' => 'Communiquer', 'icon' => 'bullhorn', 'url' => ['/communicate-admin/index'], 'visible' => $userManager->isCurrentAdmin()], | ['label' => 'Communiquer', 'icon' => 'bullhorn', 'url' => ['/communicate-admin/index'], 'visible' => $userManager->isCurrentAdmin()], |
<?php | |||||
/** | |||||
Copyright distrib (2018) | |||||
contact@opendistrib.net | |||||
Ce logiciel est un programme informatique servant à aider les producteurs | |||||
à distribuer leur production en circuits courts. | |||||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
sur le site "http://www.cecill.info". | |||||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
de modification et de redistribution accordés par cette licence, il n'est | |||||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
titulaire des droits patrimoniaux et les concédants successifs. | |||||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
associés au chargement, à l'utilisation, à la modification et/ou au | |||||
développement et à la reproduction du logiciel par l'utilisateur étant | |||||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
avertis possédant des connaissances informatiques approfondies. Les | |||||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
termes. | |||||
*/ | |||||
use dosamigos\chartjs\ChartJs; | |||||
$this->setTitle('Statistiques') ; | |||||
$this->addBreadcrumb('Statistiques') ; | |||||
?> | |||||
<?= ChartJs::widget([ | |||||
'type' => 'line', | |||||
'options' => [ | |||||
'height' => 400, | |||||
'width' => 1100 | |||||
], | |||||
'data' => [ | |||||
'labels' => $dataLabels, | |||||
'datasets' => [ | |||||
[ | |||||
'label' => 'Nombre de commandes clients', | |||||
'backgroundColor' => "rgb(255,127,0,0.5)", | |||||
'borderColor' => "rgb(255,127,0,1)", | |||||
'pointBackgroundColor' => "rgb(255,127,0,1)", | |||||
'pointStrokeColor' => "#fff", | |||||
'data' => $data | |||||
] | |||||
] | |||||
] | |||||
]); | |||||
?> |
->findOne(); | ->findOne(); | ||||
} | } | ||||
public function findOrdersByDate(string $date): array | |||||
public function countOrdersByDateAndOrigin(\DateTime $date, string $origin = Order::ORIGIN_USER) | |||||
{ | |||||
return $this->createDefaultQuery() | |||||
->filterByDate($date) | |||||
->filterByOrigin($origin) | |||||
->count(); | |||||
} | |||||
public function findOrdersByDistributionDate(string $date): array | |||||
{ | { | ||||
return $this->createDefaultQuery() | return $this->createDefaultQuery() | ||||
->filterByDistributionDate($date) | ->filterByDistributionDate($date) |
return $this; | return $this; | ||||
} | } | ||||
public function filterByOrigin(string $origin) | |||||
{ | |||||
$this->andWhere(['origin' => $origin]); | |||||
return $this; | |||||
} | |||||
public function filterByDate(\DateTime $date) | |||||
{ | |||||
$this | |||||
->andWhere('`order`.date >= \'' .$date->format('Y-m-d 00:00:00').'\'') | |||||
->andWhere('`order`.date <= \'' .$date->format('Y-m-d 23:59:59').'\''); | |||||
return $this; | |||||
} | |||||
public function filterByDistributionDate(string $date): self | public function filterByDistributionDate(string $date): self | ||||
{ | { | ||||
$this->andWhere(['distribution.date' => $date]); | $this->andWhere(['distribution.date' => $date]); |