/application/models/lectura/CronogramaLectura_model.php

https://gitlab.com/AnonymousMaster/scot-n · PHP · 272 lines · 226 code · 30 blank · 16 comment · 9 complexity · ffbb93cf7f9ff3a089a36826ac414f17 MD5 · raw file

  1. <?php
  2. class CronogramaLectura_model extends CI_Model {
  3. function __construct() {
  4. parent::__construct();
  5. $this->load->database();
  6. $this->load->model('general/Actividad_model');
  7. $this->load->model('catastro/Catastro_model');
  8. }
  9. //CRONOGRAMA ANUAL
  10. public function get_one_cronograma_anual($idCronograma) {
  11. $query = $this->db->query('SELECT * FROM "Cron_lectura_anual" JOIN "Nivel_grupo" ON "ClaNgrId" = "NgrId" WHERE "ClaId" = ? AND "ClaEli" = FALSE', array($idCronograma));
  12. $cronograma = $query->row_array();
  13. $cronograma['detalle'] = $this->get_detalle_cronograma_anual_x_cronograma($cronograma['ClaId']);
  14. return $cronograma;
  15. }
  16. public function get_cronograma_anual_actual($idContratante) {
  17. $query = $this->db->query('SELECT * FROM "Cron_lectura_anual" '
  18. . 'WHERE "ClaEli" = FALSE AND "ClaVig" = TRUE AND "ClaCntId" = ? ORDER BY "ClaVer" DESC', array($idContratante));
  19. return $query->row_array();
  20. }
  21. public function get_detalle_cronograma_anual_x_cronograma($idCronogramaAnual)
  22. {
  23. $query = $this->db->query('SELECT "Detalle_cron_lectura_anual".*,"Periodo"."PrdOrd","Periodo"."PrdAni","Periodo"."PrdCod" '
  24. . 'FROM "Detalle_cron_lectura_anual" JOIN "Periodo" ON "DlaPrdId" = "PrdId" '
  25. . 'WHERE "DlaEli" = FALSE AND "DlaClaId" = ?', array($idCronogramaAnual));
  26. $rows = $query->result_array();
  27. $ciclos = array();
  28. foreach ($rows as $key => $row)
  29. {
  30. $ciclos[$row['DlaGprId']][$row['PrdOrd']] = $row['DlaDia'];
  31. }
  32. return $ciclos;
  33. }
  34. public function get_all_cronograma_anual($idContratante) {
  35. $query = $this->db->query('SELECT * FROM "Cron_lectura_anual" JOIN "Nivel_grupo" ON "ClaNgrId" = "NgrId" '
  36. . 'WHERE "ClaEli" = FALSE AND "ClaCntId" = ? ORDER BY "ClaAni" DESC, "ClaVer" DESC', array($idContratante));
  37. return $query->result_array();
  38. }
  39. public function get_all_cronograma_anual_x_anio($idContratante,$anio) {
  40. $query = $this->db->query('SELECT * FROM "Cron_lectura_anual" JOIN "Nivel_grupo" ON "ClaNgrId" = "NgrId"
  41. WHERE "ClaEli" = FALSE AND "ClaCntId" = ? AND "ClaAni" = ? ORDER BY "ClaAni" DESC, "ClaVer" DESC', array($idContratante,$anio));
  42. return $query->result_array();
  43. }
  44. public function get_anios($idContratante) {
  45. $query = $this->db->query('SELECT DISTINCT "ClaAni" FROM "Cron_lectura_anual" '
  46. . 'WHERE "ClaCntId" = ? AND "ClaEli" = FALSE ORDER BY "ClaAni" DESC', array($idContratante));
  47. $anios = $query->result_array();
  48. return array_column($anios, 'ClaAni');
  49. }
  50. // CronogramaLectura_ctrllr -> cronograma_anual_editar
  51. public function get_periodos_x_cronograma_anual($idCronogramaAnual) {
  52. $query = $this->db->query('SELECT DISTINCT "PrdOrd","PrdCod" FROM "Cron_lectura_anual"
  53. JOIN "Detalle_cron_lectura_anual" ON "DlaClaId" = "ClaId"
  54. JOIN "Periodo" ON "DlaPrdId" = "PrdId"
  55. WHERE "ClaId" = ? AND "ClaEli" = FALSE ORDER BY "PrdOrd"', array($idCronogramaAnual));
  56. return $query->result_array();
  57. }
  58. // CronogramaLectura_ctrllr -> cronograma_anual_nuevo
  59. public function get_ultima_lectura($periodo) {
  60. if (!is_null($periodo)) {
  61. $query = $this->db->query('SELECT * FROM "Detalle_cron_lectura_anual" '
  62. . 'JOIN "Cron_lectura_anual" ON "DlaClaId" = "ClaId" JOIN "Periodo" ON "DlaPrdId" = "PrdId" '
  63. . 'WHERE "ClaEli" = FALSE AND "PrdId" = ? ORDER BY "ClaVer" ASC', array($periodo['PrdId']));
  64. $rows = $query->result_array();
  65. foreach ($rows as $key => $row) {
  66. $rows[$key]['DlaFchTm'] = date('d/m/Y', strtotime($row['DlaFchTm']));
  67. }
  68. return array_column($rows, 'DlaFchTm', 'DlaGprId');
  69. } else {
  70. return NULL;
  71. }
  72. }
  73. //CronogramaLectura_ctrllr=>cronograma_mensual_editar
  74. public function get_lectura_anual_ciclos($anio, $mes, $idContratante) {
  75. $query = $this->db->query('SELECT * FROM "Detalle_cron_lectura_anual"
  76. JOIN "Cron_lectura_anual" ON "DlaClaId" = "ClaId"
  77. JOIN "Periodo" ON "DlaPrdId" = "PrdId"
  78. WHERE "ClaEli" = FALSE AND "ClaCntId"= ? AND "ClaAni" = ? AND "PrdOrd" = ?;', array($idContratante, $anio, $mes));
  79. $rows = $query->result_array();
  80. foreach ($rows as $key => $row) {
  81. $fechaToma = date('d/m/Y', strtotime($row['DlaFchTm']));
  82. $fechaAnt = date('d/m/Y', strtotime('- ' . $row['DlaDia'] . ' day', strtotime($row['DlaFchTm'])));
  83. $fechaEntrega = date('d/m/Y', strtotime('- 1 day', strtotime($row['DlaFchTm'])));
  84. $fechaConsistencia = date('d/m/Y', strtotime('+ 1 day', strtotime($row['DlaFchTm'])));
  85. $rows[$key]['valores'] = array('DlaFchTm' => $fechaToma, 'DlaDia' => $row['DlaDia'], 'AuxFchAn' => $fechaAnt,
  86. 'AuxFchEn' => $fechaEntrega, 'AuxFchCo' => $fechaConsistencia);
  87. }
  88. return array_column($rows, 'valores', 'DlaGprId');
  89. }
  90. public function get_ultima_lectura_x_cronograma($idCronograma) {
  91. // $query = $this->db->query('SELECT ("DlaFchTm" - interval \'1\' day * "DlaDia") as "DlaFchTm", "DlaGprId" FROM "Detalle_cronograma_lectura_anual" '
  92. // . 'JOIN "Cronograma_lectura_anual" ON "DlaClaId" = "ClaId" '
  93. // . 'WHERE "ClaEli" = FALSE AND "ClaCroId" = ? AND "DlaMes" = 1', array($idCronograma));
  94. $query = $this->db->query('SELECT * FROM "Detalle_cron_lectura_anual"
  95. JOIN "Cron_lectura_anual" ON "DlaClaId" = "ClaId"
  96. JOIN "Periodo" ON "DlaPrdId" = "PrdId"
  97. WHERE "ClaEli" = FALSE AND "ClaId" = ? AND "PrdOrd" = 1', array($idCronograma));
  98. $rows = $query->result_array();
  99. foreach ($rows as $key => $row) {
  100. $rows[$key]['AuxFchAn'] = date('d/m/Y', strtotime('- ' . $row['DlaDia'] . ' day', strtotime($row['DlaFchTm'])));
  101. }
  102. return array_column($rows, 'AuxFchAn', 'DlaGprId');
  103. }
  104. // CronogramaLectura_ctrllr -> cronograma_anual_nuevo
  105. public function insert_cronograma_anual($anio, $cronograma, $periodos, $aprobado, $rutaDoc, $idNivel, $idContratante, $idActividad) {
  106. $version = $this->get_cronAnual_version($anio, $idContratante);
  107. $vigente = ($aprobado && $anio == date('Y'));
  108. $this->db->trans_start();
  109. // periodos
  110. $periodosTemp = array();
  111. foreach ($periodos as $key => $periodo) {
  112. $query = $this->db->query('INSERT into "Periodo" ("PrdOrd", "PrdAni", "PrdCod", "PrdEli", "PrdFchRg", "PrdFchAc", "PrdActId" , "PrdCntId") VALUES (?,?,?,?,?,?,?,?); '
  113. , array($key, $anio, $periodo, FALSE, date("Y-m-d H:i:s"), date("Y-m-d H:i:s"), $idActividad , $idContratante));
  114. $periodosTemp[$key] = $this->db->insert_id();
  115. }
  116. $query = $this->db->query('INSERT into "Cron_lectura_anual" ("ClaAni", "ClaVer", "ClaVig", "ClaApr", "ClaDocAp", "ClaEli", "ClaFchRg", "ClaFchAc", "ClaNgrId", "ClaCntId") VALUES (?,?,?,?,?,?,?,?,?,?); '
  117. , array($anio, $version+1, $vigente, $aprobado, $rutaDoc, FALSE, date("Y-m-d H:i:s"), date("Y-m-d H:i:s"), $idNivel, $idContratante));
  118. $idCronogramaLectura = $this->db->insert_id();
  119. foreach ($cronograma as $idGrupo => $filaCron) {
  120. for ($i = 1; $i <= count($periodos); $i++) {
  121. $query = $this->db->query('INSERT into "Detalle_cron_lectura_anual" ("DlaPrdId", "DlaFchTm", "DlaDia", "DlaEli", "DlaFchRg", "DlaFchAc", "DlaGprId", "DlaClaId") VALUES (?,?,?,?,?,?,?,?); '
  122. , array($periodosTemp[$i], $filaCron[$i]['fecha'], $filaCron[$i]['dias'], FALSE, date("Y-m-d H:i:s"), date("Y-m-d H:i:s"), $idGrupo, $idCronogramaLectura));
  123. }
  124. }
  125. $this->db->trans_complete();
  126. return $query;
  127. }
  128. public function get_all_detalle_cronograma_anual_x_cronograma($idCronogramaAnual)
  129. {
  130. $query = $this->db->query('SELECT "Detalle_cron_lectura_anual".*,"Periodo"."PrdOrd","Periodo"."PrdAni","Periodo"."PrdCod" '
  131. . 'FROM "Detalle_cron_lectura_anual" JOIN "Periodo" ON "DlaPrdId" = "PrdId" '
  132. . 'WHERE "DlaEli" = FALSE AND "DlaClaId" = ?', array($idCronogramaAnual));
  133. $rows = $query->result_array();
  134. $ciclos = array();
  135. foreach ($rows as $key => $row)
  136. {
  137. $ciclos[$row['DlaGprId']][$row['PrdOrd']]['Id'] = $row['DlaId'];
  138. $ciclos[$row['DlaGprId']][$row['PrdOrd']]['dias'] = $row['DlaDia'];
  139. $ciclos[$row['DlaGprId']][$row['PrdOrd']]['fecha'] = $row['DlaFchTm'];
  140. }
  141. return $ciclos;
  142. }
  143. // CronogramaLectura_ctrllr -> cronograma_anual_editar
  144. public function update_cronograma_anual( $detalleCronograma , $cronogramaEdit , $aprobado, $anio, $idCronograma , $idContratante)
  145. {
  146. $vigente = ($aprobado && $anio == date('Y'));
  147. $this->db->trans_start();
  148. $version = $this->get_cronAnual_version($anio, $idContratante);
  149. $query = $this->db->query('UPDATE "Cron_lectura_anual" SET "ClaVer" = ?, "ClaVig" = ?, "ClaFchAc" = ? WHERE "ClaId" = ?'
  150. , array($version+1, $vigente, date("Y-m-d H:i:s"), $idCronograma ));
  151. $periodos = $this->get_periodos_x_cronograma_anual($idCronograma);
  152. foreach ($cronogramaEdit as $idGrupo => $filaCron) {
  153. for ($i = 1; $i <= count($periodos); $i++) {
  154. $query = $this->db->query('UPDATE "Detalle_cron_lectura_anual" SET "DlaFchTm" = ?, "DlaDia" = ? , "DlaFchAc" = ? WHERE "DlaId" = ?'
  155. , array( $filaCron[$i]['fecha'], $filaCron[$i]['dias'], date("Y-m-d H:i:s"), $detalleCronograma[$idGrupo][$i]['Id'] ));
  156. }
  157. }
  158. $this->db->trans_complete();
  159. return $query;
  160. }
  161. public function get_cronAnual_version($anio, $idContratante) {
  162. $query = $this->db->query('SELECT "ClaVer" FROM "Cron_lectura_anual" '
  163. . 'WHERE "ClaEli" = FALSE AND "ClaAni" = ? AND "ClaCntId" = ? ORDER BY "ClaVer" DESC', array($anio, $idContratante));
  164. $version = $query->row_array();
  165. $version = is_null($version) ? 1 : ($version['CroVer'] + 1);
  166. return $version;
  167. }
  168. //CRONOGRAMA PERIODO
  169. //CronogramaLectura_ctrllr=>cronograma_periodo_editar
  170. public function get_one_cronograma_periodo($idCronograma) {
  171. $query = $this->db->query('SELECT * FROM "Cron_lectura_periodo" '
  172. . 'WHERE "ClpId" = ? AND "ClpEli" = FALSE ', array($idCronograma));
  173. $cronograma = $query->row_array();
  174. $cronograma['detalle'] = $this->get_detalle_conograma_periodol_x_cronograma($cronograma['ClpId']);
  175. return $cronograma;
  176. }
  177. public function get_one_detalle_cronograma_periodo($idDetalle) {
  178. $query = $this->db->query('SELECT * FROM "Detalle_cron_lectura_periodo" '
  179. . 'JOIN "Cron_lectura_periodo" ON "DlpClpId" = "ClpId" '
  180. . 'WHERE "DlpId" = ?', array($idDetalle));
  181. $row = $query->row_array();
  182. $this->load->library('utilitario_cls');
  183. if ($row) {
  184. $row['mes'] = $this->utilitario_cls->nombreMes(intval($row['ClpMes']));
  185. // $row['DlpFchEn'] = date('d/m/Y', strtotime($row['DlpFchEn']));
  186. // $row['DlpFchTm'] = date('d/m/Y', strtotime($row['DlpFchTm']));
  187. // $row['DlpFchCo'] = date('d/m/Y', strtotime($row['DlpFchCo']));
  188. $ciclos[$row['DlpCicId']] = $row;
  189. }
  190. return $row;
  191. }
  192. //CronogramaLectura_model=>get_one_cronograma_periodo
  193. public function get_detalle_conograma_periodol_x_cronograma($idCronogramaMensual) {
  194. $query = $this->db->query('SELECT * FROM "Detalle_cron_lectura_periodo"
  195. WHERE "DlpClpId" = ? ORDER BY "DlpGprId" ASC, "DlpFchTm" ASC', array($idCronogramaMensual));
  196. $rows = $query->result_array();
  197. $ciclos = array();
  198. foreach ($rows as $key => $row) {
  199. $row['DlpFchEn'] = date('d/m/Y', strtotime($row['DlpFchEn']));
  200. $row['DlpFchTm'] = date('d/m/Y', strtotime($row['DlpFchTm']));
  201. $row['DlpFchCo'] = date('d/m/Y', strtotime($row['DlpFchCo']));
  202. $ciclos[$row['DlpGprId']] = $row;
  203. }
  204. return $ciclos;
  205. }
  206. public function get_all_cronograma_periodo($idContratante) {
  207. $query = $this->db->query('SELECT * FROM "Cron_lectura_periodo"
  208. JOIN "Periodo" ON "ClpPrdId" = "PrdId"
  209. JOIN "Nivel_grupo" ON "ClpNgrId" = "NgrId"
  210. WHERE "ClpEli" = FALSE AND "ClpCntId" = ?
  211. ORDER BY "ClpAni" DESC, "PrdOrd" DESC', array($idContratante));
  212. $rows = $query->result_array();
  213. $anios = array();
  214. foreach ($rows as $key => $row) {
  215. $anios[$row['ClpAni']][$key] = $row;
  216. }
  217. return $anios;
  218. }
  219. public function insert_cronograma_periodo($anio, $ClpPrdId , $cronograma, $idContratante , $idNivelGrupo) {
  220. $this->db->trans_start();
  221. $query = $this->db->query('INSERT into "Cron_lectura_periodo" ("ClpAni", "ClpPrdId", "ClpEli", "ClpFchRg", "ClpFchAc", "ClpCntId", "ClpNgrId") VALUES (?,?,?,?,?,?,?); '
  222. , array($anio, $ClpPrdId , FALSE, date("Y-m-d H:i:s"), date("Y-m-d H:i:s"), $idContratante, $idNivelGrupo ));
  223. $idCronogramaLectura = $this->db->insert_id();
  224. foreach ($cronograma as $codGrupoPredio => $filaCron) {
  225. $query = $this->db->query('INSERT into "Detalle_cron_lectura_periodo" ("DlpFchEn", "DlpFchTm", "DlpDiaTm", "DlpFchCo", "DlpDiaCo", "DlpClpId", "DlpGprId") VALUES (?,?,?,?,?,?,?); '
  226. , array($filaCron['fechaEntrega'], $filaCron['fechaToma'], $filaCron['diasToma'], $filaCron['fechaCons'], $filaCron['diasCons'], $idCronogramaLectura, $codGrupoPredio));
  227. }
  228. $this->db->trans_complete();
  229. return $query;
  230. }
  231. public function update_cronograma_periodo($idCronograma, $cronograma) {
  232. $this->db->trans_start();
  233. $query = $this->db->query('DELETE FROM "Detalle_cron_lectura_periodo" '
  234. . 'WHERE "DlpClpId" = ?', array($idCronograma));
  235. foreach ($cronograma as $codCiclo => $filaCron) {
  236. $query = $this->db->query('INSERT into "Detalle_cron_lectura_periodo" ("DlpFchEn", "DlpFchTm", "DlpDiaTm", "DlpFchCo", "DlpDiaCo", "DlpClpId", "DlpCicId") VALUES (?,?,?,?,?,?,?); '
  237. , array($filaCron['fechaEntrega'], $filaCron['fechaToma'], $filaCron['diasToma'], $filaCron['fechaCons'], $filaCron['diasCons'], $idCronograma, $codCiclo));
  238. }
  239. $this->db->trans_complete();
  240. return $query;
  241. }
  242. }