all(); DB::transaction(function () use ($request) { if ($request['multiple'] == 'true') { self::saveMultiple($request); } else { self::saveUpload($request); } }); return self::show($request); } public static function saveUpload($request) { if(!empty($request['upload'])){ foreach ($request['upload'] as $file) { $upload = new Upload(); $solicitacaoId = $request['solicitacao_id']; $arquivo = request()->get('nome_arquivo'); $arquivo = $request['upload'][0]; $extensao = $arquivo->getClientOriginalExtension(); $nomeCompletoReal = $arquivo->getClientOriginalName(); $nomeCompletoRealSemExtensao = pathinfo($nomeCompletoReal, PATHINFO_FILENAME); $nomeArquivo = $file->hashName(); $upload->solicitacao_id = $solicitacaoId; $upload->usuario_id = self::getCurrentLotacao()->usuario_id; $upload->extensao_arquivo = strtoupper($extensao); $upload->arquivo = $nomeArquivo; $upload->nome_arquivo_real = strtoupper($nomeCompletoRealSemExtensao); $upload->save(); $pasta = storage_path('app' . DIRECTORY_SEPARATOR . 'regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default')); $file->move($pasta, $nomeArquivo); } } } public static function saveMultiple($request, $solicitacaoId = null) { if (!empty($request['upload'])) { foreach ($request['upload'] as $file) { $upload = new Upload(); $solicitacaoId = $request['solicitacao_id'] ?? $solicitacaoId; $nomeCompletoReal = $file->getClientOriginalName(); $extensao = $file->getClientOriginalExtension(); $nomeCompletoRealSemExtensao = pathinfo($nomeCompletoReal, PATHINFO_FILENAME); $nomeArquivo = $file->hashName(); $upload->solicitacao_id = $solicitacaoId; $upload->usuario_id = self::getCurrentLotacao()->usuario_id; $upload->extensao_arquivo = strtoupper($extensao); $upload->arquivo = $nomeArquivo; $upload->nome_arquivo_real = strtoupper($nomeCompletoRealSemExtensao); $upload->save(); $pasta = storage_path('app' . DIRECTORY_SEPARATOR . 'regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default')); $file->move($pasta, $nomeArquivo); } } } public static function show($request = null) { if ($request == null) { $request = request()->all(); } return Upload::where('solicitacao_id', $request['solicitacao_id']) ->orderBy('arquivo', 'ASC') ->get() ->map(function($query) { return [ 'id' => $query->id ?? null, 'usuario' => Lotacao::withTrashed()->findOrFail($query->created_lotacao_id)->usuario->cidadao->nome ?? null, 'data' => (new Carbon($query->created_at))->format('d/m/Y') ?? null, 'arquivo' => $query->nome_arquivo_real.'.'.strtolower($query->extensao_arquivo) ?? null, ]; }); } public static function destroy($id) { $upload = Upload::findOrFail($id); if(Storage::exists('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo)){ Storage::delete('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo); } Upload::findOrFail($id)->delete(); } public static function download($id) { $upload = Upload::findOrFail($id); return [ 'nome' => $upload->arquivo, 'arquivo' => Storage::path('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo), ]; } public static function view($id) { $upload = Upload::findOrFail($id); $path = Storage::path('regulacao' . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . app('config')->get('database.default') . DIRECTORY_SEPARATOR . $upload->arquivo); $mimeType = mime_content_type($path); return [ 'path' => $path, 'mimeType' => $mimeType, ]; } }