authorize('index', TeamFile::class); if (is_null(Auth::user()->currentTeam)) { $request->session()->flash('error', 'Please choose a team before viewing it\'s files.'); return redirect()->to(route('teams.index')); } return view('dashboard.teams.team-files') ->with('files', TeamFile::with('team', 'uploader')->paginate(6)); } /** * Store a newly created resource in storage. * * @param UploadFileRequest $request * @return RedirectResponse */ public function store(UploadFileRequest $request) { $this->authorize('store', TeamFile::class); $upload = $request->file('file'); $file = $upload->store('uploads'); $originalFileName = $upload->getClientOriginalName(); $originalFileExtension = $upload->extension(); $originalFileSize = $upload->getSize(); $fileEntry = TeamFile::create([ 'uploaded_by' => Auth::user()->id, 'team_id' => Auth::user()->currentTeam->id, 'name' => $originalFileName, 'caption' => $request->caption, 'description' => $request->description, 'fs_location' => $file, 'extension' => $originalFileExtension, 'size' => $originalFileSize ]); if ($fileEntry && !is_bool($file)) { $request->session()->flash('success', 'File uploaded successfully!'); return redirect()->back(); } $request->session()->flash('error', 'There was an unknown error whilst trying to upload your file.'); return redirect()->back(); } public function download(Request $request, TeamFile $teamFile) { $this->authorize('download', TeamFile::class); try { return Storage::download($teamFile->fs_location, $teamFile->name); } catch (FileNotFoundException $ex) { $request->session()->flash('error', 'Sorry, but the requested file could not be found in storage. Sometimes, files may be physically deleted by admins, but not from the app\'s database.'); return redirect()->back(); } } /** * Show the form for editing the specified resource. * * @param \App\TeamFile $teamFile * @return Response */ public function edit(TeamFile $teamFile) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\TeamFile $teamFile * @return Response */ public function update(Request $request, TeamFile $teamFile) { // } /** * Remove the specified resource from storage. * * @param Request $request * @param \App\TeamFile $teamFile * @return RedirectResponse */ public function destroy(Request $request, TeamFile $teamFile) { $this->authorize('delete', $teamFile); try { Storage::delete($teamFile->fs_location); $teamFile->delete(); $request->session()->flash('success', 'File deleted successfully.'); } catch (\Exception $ex) { $request->session()->flash('error', 'There was an error deleting the file: ' . $ex->getMessage()); } return redirect()->back(); } }