diff --git a/controllers/internals/Console.php b/controllers/internals/Console.php index 3451252..2315629 100644 --- a/controllers/internals/Console.php +++ b/controllers/internals/Console.php @@ -11,6 +11,8 @@ namespace controllers\internals; +use DateInterval; + /** * Class to call the console scripts. */ @@ -212,4 +214,46 @@ namespace controllers\internals; $internal_quota = new \controllers\internals\Quota($bdd); $internal_quota->renew_quotas(); } + + /** + * Do some fake population renewal. + */ + public function f() + { + $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); + $internal_sended = new \controllers\internals\Sended($bdd); + + $destinations = ['+33612345678','+33612345679','+33612345680',]; + $statuses = [\models\Sended::STATUS_DELIVERED, \models\Sended::STATUS_FAILED, \models\Sended::STATUS_UNKNOWN]; + $day = new \DateTime(); + $day->sub(new DateInterval('P30D')); + for ($i = 0; $i < 30; $i++) + { + $day->add(new DateInterval('P1D')); + $n = rand(0, 100); + for ($j = 0; $j < $n; $j++) + { + $id_user = 1; + $id_phone = rand(1, 2); + $destination = $destinations[array_rand($destinations)]; + $status = $statuses[array_rand($statuses)]; + $internal_sended->create( + $id_user, + $id_phone, + $day->format('Y-m-d H:i:s'), + "TEST N°$i:$j", + $destination, + uniqid(), + 'adapters\TestAdapter', + false, + false, + null, + [], + null, + $status, + ); + } + } + + } } diff --git a/controllers/internals/Sended.php b/controllers/internals/Sended.php index e58577c..5096621 100644 --- a/controllers/internals/Sended.php +++ b/controllers/internals/Sended.php @@ -207,17 +207,9 @@ use Exception; * * @return array */ - public function count_by_day_since_for_user(int $id_user, $date) + public function count_by_day_and_status_since_for_user(int $id_user, $date) { - $counts_by_day = $this->get_model()->count_by_day_since_for_user($id_user, $date); - $return = []; - - foreach ($counts_by_day as $count_by_day) - { - $return[$count_by_day['at_ymd']] = $count_by_day['nb']; - } - - return $return; + return $this->get_model()->count_by_day_and_status_since_for_user($id_user, $date); } /** diff --git a/controllers/publics/Dashboard.php b/controllers/publics/Dashboard.php index 9cb84ac..bc7b3ed 100644 --- a/controllers/publics/Dashboard.php +++ b/controllers/publics/Dashboard.php @@ -87,11 +87,12 @@ namespace controllers\publics; $stats_start_date_formated = $stats_start_date->format('Y-m-d'); } - $nb_sendeds_by_day = $this->internal_sended->count_by_day_since_for_user($id_user, $stats_start_date_formated); + $nb_sendeds_by_day = $this->internal_sended->count_by_day_and_status_since_for_user($id_user, $stats_start_date_formated); $nb_receiveds_by_day = $this->internal_received->count_by_day_since_for_user($id_user, $stats_start_date_formated); //On va traduire ces données pour les afficher en graphique - $array_area_chart = []; + $array_bar_chart_sended = []; + $array_bar_chart_received = []; $date = clone $stats_start_date; $one_day = new \DateInterval('P1D'); @@ -101,12 +102,15 @@ namespace controllers\publics; while ($date <= $now) { $date_f = $date->format('Y-m-d'); - $array_area_chart[$date_f] = [ + $array_bar_chart_sended[$date_f] = [ 'period' => $date_f, - 'sendeds' => 0, - 'receiveds' => 0, + 'sendeds_failed' => 0, + 'sendeds_unknown' => 0, + 'sendeds_delivered' => 0, ]; + $array_bar_chart_received[$date_f] = ['period' => $date_f, 'receiveds' => 0]; + $date->add($one_day); } @@ -114,15 +118,16 @@ namespace controllers\publics; $total_receiveds = 0; //0n remplie le tableau avec les données adaptées - foreach ($nb_sendeds_by_day as $date => $nb_sended) + foreach ($nb_sendeds_by_day as $nb_sended) { - $array_area_chart[$date]['sendeds'] = $nb_sended; - $total_sendeds += $nb_sended; + $array_bar_chart_sended[$nb_sended['at_ymd']]['sendeds_' . $nb_sended['status']] = $nb_sended['nb']; + $array_bar_chart_sended[$nb_sended['at_ymd']]['sendeds_total'] = ($array_bar_chart_sended[$nb_sended['at_ymd']]['sendeds_total'] ?? 0) + $nb_sended['nb']; + $total_sendeds += $nb_sended['nb']; } foreach ($nb_receiveds_by_day as $date => $nb_received) { - $array_area_chart[$date]['receiveds'] = $nb_received; + $array_bar_chart_received[$date]['receiveds'] = $nb_received; $total_receiveds += $nb_received; } @@ -130,7 +135,8 @@ namespace controllers\publics; $avg_sendeds = round($total_sendeds / $nb_days, 2); $avg_receiveds = round($total_receiveds / $nb_days, 2); - $array_area_chart = array_values($array_area_chart); + $array_bar_chart_sended = array_values($array_bar_chart_sended); + $array_bar_chart_received = array_values($array_bar_chart_received); $this->render('dashboard/show', [ 'nb_contacts' => $nb_contacts, @@ -145,7 +151,9 @@ namespace controllers\publics; 'sendeds' => $sendeds, 'receiveds' => $receiveds, 'events' => $events, - 'data_area_chart' => json_encode($array_area_chart), + 'data_bar_chart_sended' => json_encode($array_bar_chart_sended), + 'data_bar_chart_received' => json_encode($array_bar_chart_received), + 'stats_start_date_formated' => $stats_start_date_formated, ]); } } diff --git a/models/Sended.php b/models/Sended.php index 3644dee..e742e24 100644 --- a/models/Sended.php +++ b/models/Sended.php @@ -222,14 +222,14 @@ namespace models; * * @return array */ - public function count_by_day_since_for_user($id_user, $date) + public function count_by_day_and_status_since_for_user($id_user, $date) { $query = " - SELECT COUNT(id) as nb, DATE_FORMAT(at, '%Y-%m-%d') as at_ymd + SELECT COUNT(id) as nb, status, DATE_FORMAT(at, '%Y-%m-%d') as at_ymd FROM sended WHERE at > :date AND id_user = :id_user - GROUP BY at_ymd + GROUP BY at_ymd, status "; $params = [ diff --git a/templates/dashboard/show.php b/templates/dashboard/show.php index 9c5f52f..137ec52 100644 --- a/templates/dashboard/show.php +++ b/templates/dashboard/show.php @@ -1,147 +1,160 @@ render('incs/head') + //Template dashboard + + $this->render('incs/head') ?>