Commit 8269ca6a2b446af916a1a52221770dbf8843befb

Authored by Lucas Schmoeller da Silva
1 parent 4185f9bd
Exists in master

Alterado processo do empréstimo do módulo Biblioteca

Alterado processo para calcular datas considerando apenas dias da semana e feriados cadastrados;

portabilis/ieducar#105
ieducar/modules/Biblioteca/Views/EmprestimoApiController.php
... ... @@ -34,6 +34,8 @@
34 34  
35 35 require_once 'lib/Portabilis/Controller/ApiCoreController.php';
36 36 require_once 'include/pmieducar/clsPmieducarExemplar.inc.php';
  37 +require_once 'include/pmieducar/clsPmieducarBibliotecaDia.inc.php';
  38 +require_once 'include/pmieducar/clsPmieducarBibliotecaFeriados.inc.php';
37 39 require_once 'lib/Portabilis/Array/Utils.php';
38 40  
39 41 class EmprestimoApiController extends ApiCoreController
... ... @@ -206,13 +208,60 @@ class EmprestimoApiController extends ApiCoreController
206 208 list($diaInicio, $mesInicio, $anoInicio) = explode("/", $dataInicio);
207 209 $dataInicio = "$mesInicio/$diaInicio/$anoInicio";
208 210 }
  211 +
  212 + // soma dias emprestimo
  213 + $date = date('Y-m-d', strtotime("+$qtdDiasEmprestimo days", strtotime($dataInicio)));
  214 +
  215 + // #TODO Caso seja a devolução seja refatorada, separar esse trecho num método para reutilizar código
  216 + $dias_da_semana = array( 'Sun' => 1, 'Mon' => 2, 'Tue' => 3, 'Wed' => 4, 'Thu' => 5, 'Fri' => 6, 'Sat' => 7 );
  217 +
  218 + $obj_biblioteca_dia = new clsPmieducarBibliotecaDia();
  219 + $lst_biblioteca_dia = $obj_biblioteca_dia->lista($this->getRequest()->biblioteca_id);
  220 + if( is_array( $lst_biblioteca_dia ) && count( $lst_biblioteca_dia ) )
  221 + {
  222 + foreach ($lst_biblioteca_dia AS $dia_semana)
  223 + {
  224 + // dias de funcionamento da biblioteca
  225 + $biblioteca_dias_semana[] = $dia_semana["dia"];
  226 + }
  227 + }
  228 + // Array de dias de não funcionamento
  229 + $biblioteca_dias_folga = array_diff($dias_da_semana, $biblioteca_dias_semana);
  230 + // inverte as relacoes entre chaves e valores ( de $variavel["Sun"] => 1, para $variavel[1] => "Sun")
  231 + $biblioteca_dias_folga = array_flip($biblioteca_dias_folga);
  232 +
  233 + $obj_biblioteca_feriado = new clsPmieducarBibliotecaFeriados();
  234 + $lst_biblioteca_feriado = $obj_biblioteca_feriado->lista( null, $this->getRequest()->biblioteca_id );
  235 + if( is_array( $lst_biblioteca_feriado ) && count( $lst_biblioteca_feriado ) )
  236 + {
  237 + foreach ($lst_biblioteca_feriado AS $dia_feriado)
  238 + {
  239 + // dias de feriado da biblioteca
  240 + $biblioteca_dias_feriado[] = dataFromPgToBr($dia_feriado["data_feriado"], "D Y-m-d");
  241 + }
  242 + }
209 243  
  244 + $data_entrega = dataFromPgToBr($date, "D Y-m-d");
210 245  
211   - // #TODO se data cair em feriado ou dia de não trabalho somar +1 dia ?
212   - // soma dias emprestimo
213   - $date = date($format, strtotime("+$qtdDiasEmprestimo days", strtotime($dataInicio)));
  246 + if(!is_array($biblioteca_dias_folga))
  247 + {
  248 + $biblioteca_dias_folga = array(null);
  249 + }
  250 + if(!is_array($biblioteca_dias_feriado))
  251 + {
  252 + $biblioteca_dias_feriado = array(null);
  253 + }
  254 +
  255 + // verifica se a data cai em algum dia que a biblioteca n funciona
  256 + while( in_array(substr($data_entrega,0,3), $biblioteca_dias_folga) || in_array($data_entrega, $biblioteca_dias_feriado) )
  257 + {
  258 + $data_entrega = date("D Y-m-d ",strtotime("$data_entrega +1 day"));
  259 + $data_entrega = dataFromPgToBr($data_entrega, "D Y-m-d");
  260 + }
  261 +
  262 + $data_entrega = dataFromPgToBr($data_entrega, $format);
214 263  
215   - return $date;
  264 + return $data_entrega;
216 265 }
217 266  
218 267  
... ...