2
0

stats.class.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. class stats {
  3. public static function countStatistiquesGenerale(int $_actifOnly = 1){
  4. $actif = ($_actifOnly == 1) ? " AND actif = 1" : "";
  5. // Récupération des lieux distincts
  6. $lieuxQuery = db::query("SELECT DISTINCT lieu FROM " . DB_T_SALARIES);
  7. $lieuxList = db::resultset($lieuxQuery);
  8. $lieuxStats = [];
  9. $globalEntrees = [];
  10. foreach ($lieuxList as $row) {
  11. $lieu = addslashes($row['lieu']);
  12. // Statistiques par lieu
  13. $sql = "SELECT "
  14. . "SUM(IF(sexe = 'F'{$actif} AND lieu = '{$lieu}', 1, 0)) AS Femme, "
  15. . "SUM(IF(sexe = 'M'{$actif} AND lieu = '{$lieu}', 1, 0)) AS Homme, "
  16. . "SUM(IF(contrat = 1{$actif} AND lieu = '{$lieu}', 1, 0)) AS ContratOn, "
  17. . "SUM(IF(contrat = 0{$actif} AND lieu = '{$lieu}', 1, 0)) AS ContratOff, "
  18. . "SUM(IF(actif = 1 AND lieu = '{$lieu}', 1, 0)) AS ActifOn, "
  19. . "SUM(IF(actif = 0 AND lieu = '{$lieu}', 1, 0)) AS ActifOff "
  20. . "FROM " . DB_T_SALARIES;
  21. db::query($sql);
  22. $stats = db::single();
  23. $totalLieu = $stats['Femme'] + $stats['Homme'];
  24. $stats['PourcentageFemme'] = $totalLieu > 0 ? round(($stats['Femme'] / $totalLieu) * 100, 2) : 0;
  25. $stats['PourcentageHomme'] = $totalLieu > 0 ? round(($stats['Homme'] / $totalLieu) * 100, 2) : 0;
  26. // Entrées par année pour ce lieu
  27. $entrees = [];
  28. $entreeQuery = db::query("SELECT SUBSTR(jourEntree, 1, 4) AS anEntree FROM " . DB_T_SALARIES . " WHERE lieu = '{$lieu}'" . ($_actifOnly == 1 ? " AND actif = 1" : ""));
  29. foreach (db::resultset() as $value) {
  30. $an = $value["anEntree"];
  31. $entrees[$an] = isset($entrees[$an]) ? $entrees[$an] + 1 : 1;
  32. // Comptage global
  33. $globalEntrees[$an] = isset($globalEntrees[$an]) ? $globalEntrees[$an] + 1 : 1;
  34. }
  35. if (empty($entrees)) {
  36. $entrees[date("Y")] = 0;
  37. } else {
  38. ksort($entrees);
  39. }
  40. $stats['EntreesParAnnee'] = $entrees;
  41. $lieuxStats[$row['lieu']] = $stats;
  42. }
  43. // Statistiques globales
  44. $sqlGlobal = "SELECT "
  45. . "SUM(IF(sexe = 'F'{$actif}, 1, 0)) AS Femme, "
  46. . "SUM(IF(sexe = 'M'{$actif}, 1, 0)) AS Homme, "
  47. . "SUM(IF(contrat = 1{$actif}, 1, 0)) AS ContratOn, "
  48. . "SUM(IF(contrat = 0{$actif}, 1, 0)) AS ContratOff, "
  49. . "SUM(IF(actif = 1, 1, 0)) AS ActifOn, "
  50. . "SUM(IF(actif = 0, 1, 0)) AS ActifOff "
  51. . "FROM " . DB_T_SALARIES;
  52. db::query($sqlGlobal);
  53. $globalStats = db::single();
  54. $totalGlobal = $globalStats['Femme'] + $globalStats['Homme'];
  55. $globalStats['PourcentageFemme'] = $totalGlobal > 0 ? round(($globalStats['Femme'] / $totalGlobal) * 100, 2) : 0;
  56. $globalStats['PourcentageHomme'] = $totalGlobal > 0 ? round(($globalStats['Homme'] / $totalGlobal) * 100, 2) : 0;
  57. ksort($globalEntrees);
  58. $globalStats['EntreesParAnnee'] = $globalEntrees;
  59. $globalStats['Lieux'] = $lieuxStats;
  60. return $globalStats;
  61. }
  62. }