Commit 8269ca6a2b446af916a1a52221770dbf8843befb
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
Showing
1 changed file
with
53 additions
and
4 deletions
Show diff stats
ieducar/modules/Biblioteca/Views/EmprestimoApiController.php
@@ -34,6 +34,8 @@ | @@ -34,6 +34,8 @@ | ||
34 | 34 | ||
35 | require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | 35 | require_once 'lib/Portabilis/Controller/ApiCoreController.php'; |
36 | require_once 'include/pmieducar/clsPmieducarExemplar.inc.php'; | 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 | require_once 'lib/Portabilis/Array/Utils.php'; | 39 | require_once 'lib/Portabilis/Array/Utils.php'; |
38 | 40 | ||
39 | class EmprestimoApiController extends ApiCoreController | 41 | class EmprestimoApiController extends ApiCoreController |
@@ -206,13 +208,60 @@ class EmprestimoApiController extends ApiCoreController | @@ -206,13 +208,60 @@ class EmprestimoApiController extends ApiCoreController | ||
206 | list($diaInicio, $mesInicio, $anoInicio) = explode("/", $dataInicio); | 208 | list($diaInicio, $mesInicio, $anoInicio) = explode("/", $dataInicio); |
207 | $dataInicio = "$mesInicio/$diaInicio/$anoInicio"; | 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 |