weeklyReportModel.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 getStartAndEndDate($week, $year)
  31. {
  32. $dto = new DateTime();
  33. $dto->setISODate($year, $week,0);
  34. $ret = array();
  35. $ret['week'] = $week;
  36. $ret['year'] = $year;
  37. //Week Start
  38. $dto->setTime(0,0,0);
  39. $ret['start']['unix'] = $dto->format('U');
  40. $ret['start']['formatted'] = $dto->format('Y-m-d h:i:s');
  41. $ret['start']['dayName'] = $dto->format('l');
  42. $ret['start']['day'] = $dto->format('jS');
  43. $ret['start']['month'] = $dto->format('F');
  44. $ret['start']['year'] = $dto->format('Y');
  45. //Week End
  46. $dto->modify('+5 days')->setTime(24,0,0);
  47. $ret['end']['unix'] = $dto->format('U');
  48. $ret['end']['formatted'] = $dto->format('Y-m-d h:i:s');
  49. $ret['end']['dayName'] = $dto->format('l');
  50. $ret['end']['day'] = $dto->format('jS');
  51. $ret['end']['month'] = $dto->format('F');
  52. $ret['end']['year'] = $dto->format('Y');
  53. return $ret;
  54. }
  55. }