weeklyReportModel.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. class weeklyReportModel extends Staple_Model
  3. {
  4. private $db;
  5. function __construct()
  6. {
  7. $this->db = Staple_DB::get();
  8. }
  9. function timeWorked($uid,$year)
  10. {
  11. //Get an array of weeks
  12. $weeks = array();
  13. for($i=1;$i<=53;$i++)
  14. {
  15. $weeks[$i] = $this->getStartAndEndDate($i, $year);
  16. $sql = "
  17. SELECT ROUND((TIME_TO_SEC(SEC_TO_TIME(SUM(outTime - inTime)-SUM(lessTime*60)))/3600)*4)/4 AS 'totalTime' FROM timeEntries WHERE inTime >= ".$weeks[$i]['start']['unix']." AND outTime <= ".$weeks[$i]['end']['unix']." AND userId = $uid;
  18. ";
  19. $total = 0;
  20. if($this->db->query($sql)->num_rows > 0)
  21. {
  22. $query = $this->db->query($sql);
  23. $result = $query->fetch_assoc();
  24. $total = $result['totalTime'];
  25. }
  26. $weeks[$i]['hoursWorked'] = $total;
  27. }
  28. return $weeks;
  29. }
  30. function getWeekWorked($uid,$week,$year)
  31. {
  32. $week = $this->getStartAndEndDate($week, $year);
  33. $sql = "
  34. SELECT ROUND((TIME_TO_SEC(SEC_TO_TIME(SUM(outTime - inTime)-SUM(lessTime*60)))/3600)*4)/4 AS 'totalTime' FROM timeEntries WHERE inTime >= ".$week['start']['unix']." AND outTime <= ".$week['end']['unix']." AND userId = $uid;
  35. ";
  36. $total = 0;
  37. if($this->db->query($sql)->num_rows > 0)
  38. {
  39. $query = $this->db->query($sql);
  40. $result = $query->fetch_assoc();
  41. $total = $result['totalTime'];
  42. }
  43. if($total == 0)
  44. {
  45. $total = "0";
  46. }
  47. $week['total'] = $total;
  48. return $week;
  49. }
  50. function getStartAndEndDate($week, $year)
  51. {
  52. $dto = new DateTime();
  53. $dto->setISODate($year, $week,0);
  54. $ret = array();
  55. $ret['week'] = $week;
  56. $ret['year'] = $year;
  57. //Week Start
  58. $dto->setTime(0,0,0);
  59. $ret['start']['unix'] = $dto->format('U');
  60. $ret['start']['formatted'] = $dto->format('Y-m-d');
  61. $ret['start']['dayName'] = $dto->format('l');
  62. $ret['start']['day'] = $dto->format('jS');
  63. $ret['start']['month'] = $dto->format('F');
  64. $ret['start']['year'] = $dto->format('Y');
  65. //Week End
  66. $dto->modify('+6 days')->setTime(23,59,59);
  67. $ret['end']['unix'] = $dto->format('U');
  68. $ret['end']['formatted'] = $dto->format('Y-m-d');
  69. $ret['end']['dayName'] = $dto->format('l');
  70. $ret['end']['day'] = $dto->format('jS');
  71. $ret['end']['month'] = $dto->format('F');
  72. $ret['end']['year'] = $dto->format('Y');
  73. return $ret;
  74. }
  75. }