/application/modules/jadwal_pelajaran/models/model_jadwal.php

https://gitlab.com/imadd23/sijs · PHP · 243 lines · 218 code · 25 blank · 0 comment · 0 complexity · 076cf4a3e178b078f304ead5ca8a193f MD5 · raw file

  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class Model_jadwal extends CI_Model {
  4. protected $table_name = 'jadwal';
  5. public function __construct(){
  6. parent::__construct();
  7. }
  8. private function query(){
  9. $query = "SELECT * FROM
  10. (
  11. SELECT `nama_jurusan`, nama_singkat_jurusan, `jenjang`, CONCAT(tahun_mulai, '/', `tahun_selesai`) AS ta, DK.*
  12. FROM `detail_kelas` AS DK
  13. LEFT JOIN
  14. `ref_jenjang` AS RJ
  15. ON RJ.`id_ref_jenjang` = DK.`id_ref_jenjang`
  16. LEFT JOIN
  17. `ref_tahun_ajaran` AS RTA
  18. ON `RTA`.`id_ref_tahun_ajaran` = DK.`id_ref_tahun_ajaran`
  19. LEFT JOIN
  20. `ref_jurusan` AS RJU
  21. ON `RJU`.`id_ref_jurusan` = DK.`id_ref_jurusan`
  22. ) AS temp1 ";
  23. return $query;
  24. }
  25. public function getListData($options = []){
  26. $where_like = empty($options['where_like']) ? '1 = 1' : '('.implode(' OR ', $options['where_like']).')';
  27. $sql = $this->query()."
  28. WHERE
  29. 1 = 1 AND ".$where_like."
  30. ORDER BY ".$options['order']." ".$options['mode']."
  31. LIMIT ".$options['offset'].", ".$options['limit'];
  32. $query = $this->db->query($sql);
  33. return $query->result();
  34. }
  35. public function getTotalData($options){
  36. $where_like = empty($options['where_like']) ? '1 = 1' : '('.implode(' OR ', $options['where_like']).')';
  37. $sql = $this->query()."
  38. WHERE
  39. 1 = 1 AND ".$where_like;
  40. $query = $this->db->query($sql);
  41. return $query->num_rows();
  42. }
  43. public function getTotal(){
  44. $sql = $this->query();
  45. $query = $this->db->query($sql);
  46. return $query->num_rows();
  47. }
  48. public function getData()
  49. {
  50. $result = $this->db->get($this->table_name)->result();
  51. return $result;
  52. }
  53. public function getTahunAjaran()
  54. {
  55. $result = $this->db->select("CONCAT(tahun_mulai, '/', tahun_selesai) AS ta, ref_tahun_ajaran.*")->from('ref_tahun_ajaran')->get()->result_array();
  56. return $result;
  57. }
  58. public function getAlokasiJam($id_ref_tahun_ajaran)
  59. {
  60. $query = "SELECT
  61. hari,
  62. COUNT(id_alokasi_jam) AS jumlah_data,
  63. CONCAT(
  64. '[',
  65. GROUP_CONCAT(
  66. DISTINCT CONCAT('{#kode_jam#:#', kode_jam, '#, #id#:#', `id_alokasi_jam`,'#}')
  67. ORDER BY kode_jam * 1
  68. SEPARATOR ','
  69. ),
  70. ']'
  71. ) AS jam FROM alokasi_jam
  72. WHERE id_ref_tahun_ajaran = '".$id_ref_tahun_ajaran."' AND is_istirahat = '0'
  73. GROUP BY hari
  74. ORDER BY FIELD(hari, 'senin', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu', 'minggu'), kode_jam * 1 ASC";
  75. $result = $this->db->query($query)->result_array();
  76. return $result;
  77. }
  78. public function getDetailKelas($id_ref_tahun_ajaran)
  79. {
  80. $query = "SELECT `nama_jurusan`, DK.id_ref_jurusan, DK.id_ref_tahun_ajaran,
  81. (
  82. SELECT COUNT(id_detail_kelas) FROM detail_kelas WHERE `id_ref_jurusan`= DK.id_ref_jurusan AND `id_ref_tahun_ajaran` = '$id_ref_tahun_ajaran'
  83. ) AS jumlah_data,
  84. CONCAT('[',
  85. GROUP_CONCAT(
  86. DISTINCT CONCAT('{#id_jenjang#:#', DK.id_ref_jenjang, '#, #jenjang#:#', (SELECT jenjang FROM ref_jenjang WHERE `id_ref_jenjang`= DK.id_ref_jenjang LIMIT 1),'#, #jumlah_data#:#', (SELECT COUNT(id_detail_kelas) FROM detail_kelas WHERE id_ref_jenjang = DK.id_ref_jenjang AND id_ref_jurusan = DK.id_ref_jurusan AND id_ref_tahun_ajaran = '$id_ref_tahun_ajaran'), '#}')
  87. ORDER BY DK.id_ref_jenjang ASC
  88. SEPARATOR ','
  89. ),
  90. ']'
  91. ) AS jenjang,
  92. CONCAT('[',
  93. GROUP_CONCAT(
  94. DISTINCT CONCAT(
  95. '{#id#:#', `id_detail_kelas`, '#}')
  96. ORDER BY jenjang, nama_kelas ASC
  97. SEPARATOR ','
  98. ),
  99. ']'
  100. ) AS id
  101. FROM detail_kelas AS DK
  102. LEFT JOIN ref_jenjang AS RJ ON DK.`id_ref_jenjang` = DK.`id_ref_jenjang`
  103. LEFT JOIN ref_tahun_ajaran AS RTA ON RTA.`id_ref_tahun_ajaran` = DK.`id_ref_tahun_ajaran`
  104. LEFT JOIN `ref_jurusan` AS RJU ON RJU.`id_ref_jurusan` = DK.`id_ref_jurusan`
  105. WHERE DK.id_ref_tahun_ajaran = '".$id_ref_tahun_ajaran."'
  106. GROUP BY DK.`id_ref_jurusan`";
  107. $result = $this->db->query($query)->result_array();
  108. return $result;
  109. }
  110. public function getDetailKelasById($id_detail_kelas)
  111. {
  112. $query = "SELECT `nama_jurusan`, jenjang, nama_singkat_jurusan, nama_kelas
  113. FROM detail_kelas AS DK
  114. LEFT JOIN ref_jenjang AS RJ ON DK.`id_ref_jenjang` = DK.`id_ref_jenjang`
  115. LEFT JOIN ref_tahun_ajaran AS RTA ON RTA.`id_ref_tahun_ajaran` = DK.`id_ref_tahun_ajaran`
  116. LEFT JOIN `ref_jurusan` AS RJU ON RJU.`id_ref_jurusan` = DK.`id_ref_jurusan`
  117. WHERE DK.id_detail_kelas = '".$id_detail_kelas."'";
  118. $result = $this->db->query($query)->row_array();
  119. return $result;
  120. }
  121. public function getJenjangById($id_ref_jurusan, $id_ref_jenjang, $id_ref_tahun_ajaran)
  122. {
  123. $query = "SELECT DISTINCT id_detail_kelas
  124. FROM detail_kelas AS DK
  125. LEFT JOIN ref_jenjang AS RJ ON DK.`id_ref_jenjang` = DK.`id_ref_jenjang`
  126. LEFT JOIN ref_tahun_ajaran AS RTA ON RTA.`id_ref_tahun_ajaran` = DK.`id_ref_tahun_ajaran`
  127. LEFT JOIN `ref_jurusan` AS RJU ON RJU.`id_ref_jurusan` = DK.`id_ref_jurusan`
  128. WHERE DK.id_ref_jenjang = '".$id_ref_jenjang."'
  129. AND DK.id_ref_tahun_ajaran = '".$id_ref_tahun_ajaran."'
  130. AND DK.id_ref_jurusan = '".$id_ref_jurusan."'";
  131. $result = $this->db->query($query)->result_array();
  132. return $result;
  133. }
  134. public function getGuruMapel($wheres = [])
  135. {
  136. $result = $this->db->select('*')->from('guru_mapel AS GM')
  137. ->join('ref_tahun_ajaran AS RTA', 'GM.id_ref_tahun_ajaran = RTA.id_ref_tahun_ajaran', 'left')
  138. ->join('ref_mapel AS RM', 'RM.id_ref_mapel = GM.id_ref_mapel', 'left')
  139. ->join('guru AS G', 'G.id_guru = GM.id_guru', 'left')
  140. ->where($wheres)
  141. ->get()->result_array();
  142. return $result;
  143. }
  144. public function getGuruMapelDistinct($wheres = [])
  145. {
  146. $result = $this->db->select('*')->from('guru_mapel AS GM')
  147. ->join('ref_tahun_ajaran AS RTA', 'GM.id_ref_tahun_ajaran = RTA.id_ref_tahun_ajaran', 'left')
  148. ->join('ref_mapel AS RM', 'RM.id_ref_mapel = GM.id_ref_mapel', 'left')
  149. ->join('guru AS G', 'G.id_guru = GM.id_guru', 'left')
  150. ->where($wheres)
  151. ->group_by('G.id_guru')
  152. ->get()->result_array();
  153. return $result;
  154. }
  155. public function getRuang()
  156. {
  157. $result = $this->db->select('*')->from('ref_ruang')
  158. ->order_by('nama_ruang', 'asc')
  159. ->get()->result_array();
  160. return $result;
  161. }
  162. public function getDataById($id)
  163. {
  164. $result = $this->db->select('*')->from('jadwal AS J')
  165. ->join('alokasi_jam AS AJ', 'AJ.id_alokasi_jam = J.id_alokasi_jam', 'left')
  166. ->join('detail_kelas AS DK', 'DK.id_detail_kelas = J.id_detail_kelas', 'left')
  167. ->join('guru_mapel AS GM', 'GM.id_guru_mapel = J.id_guru_mapel')
  168. ->where(['id_jadwal' => $id])->get()->row_array();
  169. return $result;
  170. }
  171. public function getDataByParams($wheres = false)
  172. {
  173. $result = $this->db->select('*')->from('jadwal AS J')
  174. ->join('alokasi_jam AS AJ', 'AJ.id_alokasi_jam = J.id_alokasi_jam', 'left')
  175. ->join('detail_kelas AS DK', 'DK.id_detail_kelas = J.id_detail_kelas', 'left')
  176. ->join('guru_mapel AS GM', 'GM.id_guru_mapel = J.id_guru_mapel', 'left')
  177. ->join('ref_mapel AS RM', 'GM.id_ref_mapel = RM.id_ref_mapel', 'left')
  178. ->join('guru AS G', 'GM.id_guru = G.id_guru', 'left')
  179. ->join('ref_ruang AS R', 'R.id_ref_ruang = J.id_ref_ruang', 'left')
  180. ->where($wheres)->get()->result_array();
  181. return $result;
  182. }
  183. public function getDataRuangByParams($wheres = false)
  184. {
  185. $result = $this->db->select('*')->from('jadwal AS J')
  186. ->join('alokasi_jam AS AJ', 'AJ.id_alokasi_jam = J.id_alokasi_jam', 'left')
  187. ->join('detail_kelas AS DK', 'DK.id_detail_kelas = J.id_detail_kelas', 'left')
  188. ->join('guru_mapel AS GM', 'GM.id_guru_mapel = J.id_guru_mapel', 'left')
  189. ->join('ref_mapel AS RM', 'GM.id_ref_mapel = RM.id_ref_mapel', 'left')
  190. ->join('guru AS G', 'GM.id_guru = G.id_guru', 'left')
  191. ->join('ref_ruang AS R', 'R.id_ref_ruang = J.id_ref_ruang', 'left')
  192. ->where($wheres)->get()->result_array();
  193. return $result;
  194. }
  195. public function add($data)
  196. {
  197. $add = $this->db->insert($this->table_name, $data);
  198. return $add;
  199. }
  200. public function update($data, $wheres)
  201. {
  202. $update = $this->db->update($this->table_name, $data, $wheres);
  203. return $update;
  204. }
  205. public function delete($id_alokasi_jam, $id_detail_kelas){
  206. $delete = $this->db->where(array('id_detail_kelas' => $id_detail_kelas, 'id_alokasi_jam' => $id_alokasi_jam))->delete($this->table_name);
  207. return $delete;
  208. }
  209. public function delete_ruang($id_alokasi_jam, $id_detail_kelas){
  210. $delete = $this->db->update($this->table_name, array('id_ref_ruang' => NULL), array('id_detail_kelas' => $id_detail_kelas, 'id_alokasi_jam' => $id_alokasi_jam));
  211. return $delete;
  212. }
  213. public function get_last_updated(){
  214. $q = $this->db->select('last_updated')->from('jadwal')->where("last_updated = (SELECT MAX(last_updated) FROM jadwal LIMIT 1)")->get()->row();
  215. $data = empty($q) ? date('Y-m-d H:i:s') : $q->last_updated;
  216. return $data;
  217. }
  218. }