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