search) { $this->searchQuery( $documents, $request->search, null, 'title', ); } $this->sortQuery($documents); $searchFields = trans('Titre'); $documents = $documents->paginate(10); return view('bo.pages.documents.index', compact('documents', 'searchFields')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $documents = Document::get(); $directories = Directory::getChildrenDirectories(); return view('bo.pages.documents.create', compact('documents', 'directories')); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Documents\StoreDocumentRequest $request * @return \Illuminate\Http\Response */ public function store(StoreDocumentRequest $request) { return DB::transaction(function () use ($request) { $document = new Document(); $document->fill($request->validated()); if ($document->saveOrFail()) { return redirect() ->route('bo.documents.edit', $document) ->with('success', trans( ':model a été créé', ['model' => Str::singular(trans('models.classes.documents'))] )); } return redirect() ->back() ->with('error', trans( ':model n\'a pas été créé', ['model' => Str::singular(trans('models.classes.documents'))] )); }); } /** * Show the form for editing the specified resource. * * @param \App\Models\Document $document * @return \Illuminate\Http\Response */ public function edit(Document $document) { $documents = Document::get(); $directories = Directory::getChildrenDirectories(); return view('bo.pages.documents.edit', [ 'documents' => $documents, 'documentModel' => $document, 'directories' => $directories ]); } /** * Update the specified resource in storage. * * @param \App\Http\Requests\Bo\Document\UpdateDocumentRequest $request * @param \App\Models\Document $document * @return \Illuminate\Http\Response */ public function update(UpdateDocumentRequest $request, Document $document) { return DB::transaction(function () use ($request, $document) { $document->fill($request->validated()); if ($document->saveOrFail()) { return redirect() ->route('bo.documents.edit', $document) ->with('success', trans( ':model a été mis à jour', ['model' => Str::singular(trans('models.classes.documents'))] )); } return redirect() ->back() ->with('error', trans( ':model n\'a pas été mis à jour', ['model' => Str::singular(trans('models.classes.documents'))] )); }); } /** * Remove the specified resource from storage. * * @param \App\Models\Document $document * @return \Illuminate\Http\Response */ public function destroy(Document $document) { if ($document->deleteOrFail()) { return redirect() ->route('bo.documents.index') ->with('warning', trans( ':model a bien été supprimé', ['model' => Str::singular(trans('models.classes.documents'))] )); } return redirect() ->back() ->with('error', trans( ':model n\'a pas été supprimé', ['model' => Str::singular(trans('models.classes.documents'))] )); } /** * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\JsonResponse * @throws \Pion\Laravel\ChunkUpload\Exceptions\UploadMissingFileException Bla. */ public function upload(Request $request) { if (isset($request->uuid)) { $uuid = $request->uuid; } else { $uuid = false; } // Create the file receiver. $receiver = new FileReceiver("file", $request, HandlerFactory::classFromRequest($request)); // Check if the upload is success, throw exception or return response you need. if ($receiver->isUploaded() === false) { throw new UploadMissingFileException(); } // Receive the file. $save = $receiver->receive(); // Check if the upload has finished (in chunk mode it will send smaller files). if ($save->isFinished()) { // Save the file and return any response you need, current example uses `move` function. // If you are not using move, you need to manually delete the file: unlink($save->getFile()->getPathname()). return $this->saveFile($save->getFile(), $uuid); } // We are in chunk mode, lets send the current progress. /** @var AbstractHandler $handler */ $handler = $save->handler(); return response()->json([ "done" => $handler->getPercentageDone(), 'status' => true ]); } /** * @param \Illuminate\Http\UploadedFile $file * @param mixed $uuid * @return \Illuminate\Http\JsonResponse * @throws \Illuminate\Contracts\Container\BindingResolutionException Bla. */ protected function saveFile(UploadedFile $file, mixed $uuid) { if ($uuid === false) { $uuid = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff) ); } $finalPath = storage_path('app/public/docs/'); // Move the file name. $file->move($finalPath, $uuid . '.' . $file->getClientOriginalExtension()); return response()->json([ 'uid' => $uuid, ]); } }