✏️ 正在编辑: Folga.php
路径:
/srv/systems_dir/yuppiecred/application/services/Folga.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Service_Folga { /** @var DateTime */ private $jornada; /** @var array */ private $diasTrabalhado; /** @var stdClass */ private $folgas; /** * @param array $jornada * @param array $folgas */ public function resolve(array $jornada, array $folgas): stdClass { $this->folgas = new stdClass(); $this->setJornada($jornada['jornada']); $this->setDiasTrabalho($jornada['dias']); $this->setDiasFolga($folgas); return $this->folgas; } /** * @param string $dias */ private function setDiasTrabalho(?string $dias): void { if (!$dias) { return; } $arrayDias = array_flip(explode(',', $dias)); for ($dia = 0; $dia < 7; $dia++) { $this->diasTrabalhado[$dia] = isset($arrayDias[$dia]); } } /** * @param array $folgas */ private function setDiasFolga(array $folgas): void { array_map(function ($folga) { $this->addDiaDeFolga($folga); }, $folgas); } /** * @param array $folga * @throws Exception */ private function addDiaDeFolga(array $folga): void { $dataInicio = new DateTime($folga['data_inicial']); $dataFim = new DateTime($folga['data_final']); $dias = $folga['dias'] ?? $dataInicio->diff($dataFim)->d; $dia = (int) ($folga['dia'] ?? $dataInicio->format('d')); $this->folgas->$dia = []; $this->folgas->$dia['isCompleta'] = $this->isFolgaCompleta($folga['horas']); $this->folgas->$dia['horas'] = $this->getHoras($folga['horas']); $this->folgas->$dia['descricao'] = $folga['descricao']; if ($dias > 0) { $folga['dias'] = --$dias; $folga['dia'] = ++$dia; $this->addDiaDeFolga($folga); } } /** * @param string|null $jornada * @throws Exception */ private function setJornada(?string $jornada): void { $this->jornada = new DateTime($jornada); } /** * @param string|null $horas * @return bool * @throws Exception */ private function isFolgaCompleta(?string $horas): bool { if (!$horas) { return true; } $horas = (new DateTime($horas)); $diferenca = $this->jornada->diff($horas); return $diferenca->h === 0; } /** * @param string|null $horas * @return string * @throws Exception */ public function getHoras(?string $horas): string { if ($this->isFolgaCompleta($horas)) { return $this->jornada->format('H:i:s'); } return $horas; } }
💾 保存文件
← 返回文件管理器