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 |