entradaItens->map(fn ($entradaItem) => [ 'entrada_item_id' => $entradaItem->id, 'quantidade_saida' => $entradaItem->pivotSaidaItemEntradaItem->quantidade_saida, 'lote' => $entradaItem->lote, 'validade_lote' => $entradaItem->validade_lote, ]); $semLote = collect(); $comLote = collect(); collect($entradaItens)->each(function ($entrada) use ($semLote, $comLote) { if (is_null($entrada['lote'])) { $semLote->push($entrada); } else { $comLote->push($entrada); } }); $possuiEntradaComLote = $comLote->isNotEmpty(); $semLote = $semLote ->sortBy('entrada_item_id') ->values(); $comLote = $comLote ->sortBy([ ['validade_lote', 'asc'], ['entrada_item_id', 'asc'] ]) ->values(); $entradaItens = $comLote->concat($semLote)->map(function ($entrada) { if (!is_null($entrada['validade_lote'])) { $entrada['validade_lote'] = $entrada['validade_lote']->format('d/m/Y'); } return $entrada; }); return [ 'data' => $saidaItem->saida->created_at->format('d/m/Y'), 'unidade' => $saidaItem->createdCentroCusto->infraestrutura->unidade->nome_fantasia, 'localAtendimento' => $saidaItem->createdCentroCusto->infraestrutura->nome, 'setor' => $saidaItem->createdCentroCusto->setor->nome, 'usuario' => $saidaItem->createdLotacao->usuario->cidadao->nome, 'endereco' => $saidaItem->createdCentroCusto->infraestrutura->endereco->completo, 'telefone' => MaskUtil::getPhoneMasked($saidaItem->createdCentroCusto->infraestrutura->telefone), 'motivo' => $saidaItem->saida->baixa->motivo->descricao, 'justificativa' => $saidaItem->saida->baixa->justificativa, 'usuarioSolicitante' => $saidaItem->saida->baixa->usuarioSolicitante->cidadao->nome ?? null, 'itens' => collect([ [ 'material' => [ 'id' => $saidaItem->material->id, 'descricao' => $saidaItem->material->descricao_completa, ], 'quantidade' => $saidaItem->quantidade, 'possui_entrada_com_lote' => $possuiEntradaComLote, 'entrada_itens' => $entradaItens, 'estornado' => $saidaItem->estornado, ] ])->filter(fn ($i) => !$i['estornado'])->all() ]; } public function __invoke($id) { return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id)); } }