PageRenderTime 46ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/application/models/ModelMonotony.php

https://bitbucket.org/nando123/iamperform
PHP | 295 lines | 259 code | 33 blank | 3 comment | 36 complexity | fd71076d4bbb836ec36b0aef6806d7f6 MD5 | raw file
  1. <?php
  2. class ModelMonotony extends CI_Model {
  3. function getMonotonyByID($monotonyID){
  4. $sql = " SELECT a.*,b.* FROM `master_monotony_detail` as a "
  5. . " LEFT JOIN (SELECT * FROM master_pmc WHERE pmcType = 'core' AND pmcCouchType = 'Physic') as b"
  6. . " on b.monotonyDetailID = a.monotonyDetailID"
  7. . " WHERE a.monotonyID = '$monotonyID'"
  8. . " ORDER BY monotonyDetailDate ASC";
  9. $query = $this->db->query($sql);
  10. if($query -> num_rows() > 0){
  11. return $query->result();
  12. }else{
  13. return false;
  14. }
  15. }
  16. function getMonotonyTarget($monotony_id){
  17. $sql = " SELECT monotonyTarget, monotonyLastWeek FROM master_monotony"
  18. ." WHERE monotonyID = '$monotony_id';";
  19. $query = $this->db->query($sql);
  20. if($query -> num_rows() > 0){
  21. $row = $query->row();
  22. $target = $row->monotonyTarget;
  23. $last = $row->monotonyLastWeek;
  24. return array($target,$last);
  25. }else{
  26. return false;
  27. }
  28. }
  29. function getMonotony($atletID,$month,$year){
  30. $sql = " SELECT * FROM master_monotony "
  31. . " WHERE monotonyAtletID = '$atletID' AND MONTH(monotonyStartDttm) = '$month'"
  32. . " AND YEAR(monotonyStartDttm) = '$year' AND monotonyActive = '0'"
  33. . " ORDER BY monotonyID DESC";
  34. $query = $this->db->query($sql);
  35. if($query -> num_rows() > 0){
  36. return $query->result();
  37. }else{
  38. return false;
  39. }
  40. }
  41. function cekIsExist($week,$atlet){
  42. $sql = " SELECT monotonyID FROM master_monotony "
  43. . " WHERE monotonyAtletID = '$atlet'"
  44. . " AND monotonyWeek='$week'"
  45. . " AND monotonyActive = '0'";
  46. $query = $this->db->query($sql);
  47. if($query->num_rows()>0){
  48. $row = $query->row();
  49. $monotony_id = $row->monotonyID;
  50. $status = "existed";
  51. }else{
  52. $monotony_id = "";
  53. $status = "empty";
  54. }
  55. return array($status,$monotony_id);
  56. }
  57. function saveMonotony($arrAtlet,$user_id,$session,$rpe,$volume,$weekID,$StartDay,$EndDay,$phase,$target){
  58. $this->db->trans_begin();
  59. $role_type = $this->session->userdata("sessRoleType");
  60. for($k=0; $k<count($arrAtlet); $k++) {
  61. $cekIsExist = $this->cekIsExist($weekID,$arrAtlet[$k]);
  62. list($status,$monotonyID)=$cekIsExist;
  63. $query = $this->db->query("SELECT MAX(monotonyID) as monotonyID FROM master_monotony WHERE monotonyAtletID = '{$arrAtlet[$k]}'");
  64. if($query->num_rows()>0){
  65. $row = $query->row();
  66. $monotonyID = $row->monotonyID;
  67. $cek = $this->db->query("SELECT SUM(monotonyIntensity*monotonyVolume) as dailyMonotony FROM master_monotony_detail WHERE monotonyID = '{$monotonyID[$k]}'");
  68. if($cek->num_rows()>0){
  69. $key = $cek->result();
  70. $tmpM = "";
  71. $row = $cek->row();
  72. $dailyMonotony = $row->dailyMonotony;
  73. }
  74. }else{
  75. $dailyMonotony = 0;
  76. }
  77. if($status == "existed"){
  78. $monotony_id = $monotonyID;
  79. }else{
  80. $monotony_id = $this->getMonotonyID();
  81. $sql = " INSERT INTO master_monotony (monotonyID,created_user_id,monotonyTarget,monotonyPhase,monotonyWeek"
  82. . " ,monotonyLastWeek,created_dttm,monotonyAtletID,monotonyStartDttm,monotonyEndDttm,monotonyActive)"
  83. . " values ('$monotony_id','$user_id','$target','$phase','$weekID'"
  84. . " ,'$dailyMonotony',now(),'{$arrAtlet[$k]}','$StartDay','$EndDay','0')";
  85. $query = $this->db->query($sql);
  86. }
  87. $dttm = $StartDay." ".date("H:i:s");
  88. for($i=0; $i<count($session); $i++) {
  89. $w = date('w', strtotime($StartDay. ' +'.($i).' day'));
  90. // $Date = date('Y-m-d', strtotime($StartDay. ' +'.($i).' day'));
  91. // for($j=0; $j<count($session[$i]); $j++) {
  92. $detail_id = $this->uniqekey();
  93. $sqldetail = " INSERT INTO master_monotony_detail (monotonyDetailID,monotonyID,monotonyDay,monotonyDetailUser,"
  94. ." monotonyDetailDate,monotonyDetailSession,monotonyIntensity,monotonyVolume,monotonyLoadPerSession,monotonyType) "
  95. ." values ('$detail_id','$monotony_id','$w','$user_id','$StartDay','{$session[$i]}',"
  96. ." '{$rpe[$i]}','{$volume[$i]}','{$rpe[$i]}*{$volume[$i]}','$role_type')";
  97. $qDetail = $this->db->query($sqldetail);
  98. // }
  99. }
  100. }
  101. if ($this->db->trans_status() === FALSE)
  102. {
  103. $this->db->trans_rollback();
  104. return "gagal";
  105. }
  106. else
  107. {
  108. $this->db->trans_commit();
  109. return "sukses";
  110. }
  111. }
  112. function saveMonotonyDetail($arrAtlet,$user_id,$session,$rpe,$volume,$weekID,$StartDay){
  113. $this->db->trans_begin();
  114. $role_type = $this->session->userdata("sessRoleType");
  115. for($k=0; $k<count($arrAtlet); $k++) {
  116. $cekIsExist = $this->cekIsExist($weekID,$arrAtlet[$k]);
  117. list($status,$monotonyID)=$cekIsExist;
  118. for($i=0; $i<count($session); $i++) {
  119. $w = date('w', strtotime($StartDay. ' +'.($i).' day'));
  120. $detail_id = $this->uniqekey();
  121. $sqldetail = " INSERT INTO master_monotony_detail (monotonyDetailID,monotonyID,monotonyDay,monotonyDetailUser,"
  122. ." monotonyDetailDate,monotonyDetailSession,monotonyIntensity,monotonyVolume,monotonyLoadPerSession,monotonyType) "
  123. ." values ('$detail_id','$monotonyID','$w','$user_id','$StartDay','{$session[$i]}',"
  124. ." '{$rpe[$i]}','{$volume[$i]}','{$rpe[$i]}*{$volume[$i]}','$role_type')";
  125. $qDetail = $this->db->query($sqldetail);
  126. }
  127. }
  128. if ($this->db->trans_status() === FALSE)
  129. {
  130. $this->db->trans_rollback();
  131. return "gagal";
  132. }
  133. else
  134. {
  135. $this->db->trans_commit();
  136. return "sukses";
  137. }
  138. }
  139. function uniqekey() {
  140. $tr = "DETA_";
  141. $year = date("Y");
  142. $month = date("m");
  143. $day = date("d");
  144. $sql = "SELECT left(a.monotonyDetailID,5) as tr, mid(a.monotonyDetailID,6,4) as fyear,"
  145. . " mid(a.monotonyDetailID,10,2) as fmonth, mid(a.monotonyDetailID,12,2) as fday,"
  146. . " right(a.monotonyDetailID,4) as fno FROM master_monotony_detail AS a"
  147. . " where left(a.monotonyDetailID,5) = '$tr' and mid(a.monotonyDetailID,6,4) = '$year'"
  148. . " and mid(a.monotonyDetailID,10,2) = '$month' and mid(a.monotonyDetailID,12,2)= '$day'"
  149. . " order by fyear desc, CAST(fno AS SIGNED) DESC LIMIT 1";
  150. $result = $this->db->query($sql);
  151. if($result->num_rows($result) > 0) {
  152. $row = $result->row();
  153. $tr = $row->tr;
  154. $fyear = $row->fyear;
  155. $fmonth = $row->fmonth;
  156. $fday = $row->fday;
  157. $fno = $row->fno;
  158. $fno++;
  159. } else {
  160. $tr = $tr;
  161. $fyear = $year;
  162. $fmonth = $month;
  163. $fday = $day;
  164. $fno = 0;
  165. $fno++;
  166. }
  167. if (strlen($fno)==1){
  168. $strfno = "000".$fno;
  169. } else if (strlen($fno)==2){
  170. $strfno = "00".$fno;
  171. } else if (strlen($fno)==3){
  172. $strfno = "0".$fno;
  173. } else if (strlen($fno)==4){
  174. $strfno = $fno;
  175. }
  176. $id_goal = $tr.$fyear.$fmonth.$fday.$strfno;
  177. return $id_goal;
  178. }
  179. function getMonotonyID(){
  180. $tr = "MONO_";
  181. $year = date("Y");
  182. $month = date("m");
  183. $day = date("d");
  184. $sql = "SELECT left(a.monotonyID,5) as tr, mid(a.monotonyID,6,4) as fyear,"
  185. . " mid(a.monotonyID,10,2) as fmonth, mid(a.monotonyID,12,2) as fday,"
  186. . " right(a.monotonyID,4) as fno FROM master_monotony AS a"
  187. . " where left(a.monotonyID,5) = '$tr' and mid(a.monotonyID,6,4) = '$year'"
  188. . " and mid(a.monotonyID,10,2) = '$month' and mid(a.monotonyID,12,2)= '$day'"
  189. . " order by fyear desc, CAST(fno AS SIGNED) DESC LIMIT 1";
  190. $result = $this->db->query($sql);
  191. if($result->num_rows($result) > 0) {
  192. $row = $result->row();
  193. $tr = $row->tr;
  194. $fyear = $row->fyear;
  195. $fmonth = $row->fmonth;
  196. $fday = $row->fday;
  197. $fno = $row->fno;
  198. $fno++;
  199. } else {
  200. $tr = $tr;
  201. $fyear = $year;
  202. $fmonth = $month;
  203. $fday = $day;
  204. $fno = 0;
  205. $fno++;
  206. }
  207. if (strlen($fno)==1){
  208. $strfno = "000".$fno;
  209. } else if (strlen($fno)==2){
  210. $strfno = "00".$fno;
  211. } else if (strlen($fno)==3){
  212. $strfno = "0".$fno;
  213. } else if (strlen($fno)==4){
  214. $strfno = $fno;
  215. }
  216. $id_goal = $tr.$fyear.$fmonth.$fday.$strfno;
  217. return $id_goal;
  218. }
  219. function STDEV($sample) {
  220. if(is_array($sample)){
  221. $mean = array_sum($sample) / count($sample);
  222. foreach($sample as $key => $num) $devs[$key] = pow($num - $mean, 2);
  223. $stdev = sqrt(array_sum($devs) / (count($devs) - 1));
  224. return $stdev;
  225. }else{
  226. return NULL;
  227. }//END IF
  228. }
  229. function AVERAGE($sample) {
  230. if(is_array($sample)){
  231. return array_sum($sample) / count($sample);
  232. }else{
  233. return NULL;
  234. }//END IF
  235. }
  236. function SUM($sample) {
  237. if(is_array($sample)){
  238. return array_sum($sample);
  239. }else{
  240. return NULL;
  241. }//END IF
  242. }
  243. function ABS($number) {
  244. return abs($number);
  245. }
  246. function getGrafikDay($monotony_id){
  247. $sql = " SELECT a.monotonyDetailDate as detail_date, SUM(a.monotonyIntensity * a.monotonyVolume) as trainingLoad,"
  248. . " SUM(a.monotonyIntensity) as detail_intensity, SUM(b.rpeActual) as detail_actual"
  249. . " FROM `master_monotony_detail` as a"
  250. . " LEFT JOIN (SELECT * FROM master_pmc WHERE pmcType = 'core' AND pmcCouchType = 'Physic') as b"
  251. . " on b.monotonyDetailID = a.monotonyDetailID"
  252. . " WHERE a.monotonyID = '$monotony_id'"
  253. . " GROUP BY a.monotonyDetailDate";
  254. $query = $this->db->query($sql);
  255. if($query -> num_rows() > 0){
  256. return $query->result();
  257. }else{
  258. return false;
  259. }
  260. }
  261. }
  262. ?>