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 | 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 | ... | ... |