<?php
namespace App\Http\Controllers;
use App\Models\document;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\File;
class DocumentController extends Controller
{
public function index()
{
$data['document'] = document::paginate(10);
return view('document.index')->with($data);
}
public function store(Request $request)
{
$dokumen_file = $request->file('document');
$extensi = $dokumen_file->extension();
$size = $dokumen_file->getSize();
$fileSizeKB = ceil($size / 1024);
$nama_asli = $dokumen_file->getClientOriginalName();
$request->validate([
'deskripsi' => 'required',
'document' => 'required|file|mimes:csv,xls,xlsx,pdf,xls,doc,docx,pptx,pps',
], [
'document.mimes' => 'Tolong masukan file dengan format(csv,xls,xlsx,pdf,xls,doc,docx,pptx,pps)!',
]);
$data = [
'name' => $nama_asli,
'deskripsi' => $request->deskripsi,
'admin_id' => auth()->user()->id,
'tanggal' => now(),
'jumlah_download' => 0,
'ekstensi' => $extensi,
'ukuran' => $fileSizeKB,
'jenis' => 1
];
$check = document::where('name', $nama_asli)->first();
$dokumen_file->move(public_path('documents'), $nama_asli);
if ($check == null) {
document::create($data);
return redirect()->route('document')->with('success', 'Data berhasil ditambahkan');
} else {
return redirect()->route('document')->with('error', 'File sudah pernah diupload !');
}
}
public function update(Request $request, string $id)
{
$decryptedId = Crypt::decryptString($id);
$request->validate([
'deskripsi' => 'required',
'document' => 'nullable|file|mimes:csv,xls,xlsx,pdf,xls,doc,docx,pptx,pps',
], [
'document.mimes' => 'Tolong masukan file dengan format(csv,xls,xlsx,pdf,xls,doc,docx,pptx,pps)!',
]);
if ($request->hasFile('document')) {
$dokumen_file = $request->file('document');
$extensi = $dokumen_file->extension();
$size = $dokumen_file->getSize();
$fileSizeKB = ceil($size / 1024);
$nama_asli = $dokumen_file->getClientOriginalName();
$data = [
'name' => $nama_asli,
'deskripsi' => $request->deskripsi,
'admin_id' => auth()->user()->id,
'tanggal' => now(),
'jumlah_download' => 0,
'ekstensi' => $extensi,
'ukuran' => $fileSizeKB,
'jenis' => 1
];
$check = document::where('name', $nama_asli)->where('id', '<>', $decryptedId)->first();
if ($check == null) {
$getfile = document::where('id', $decryptedId)->first();
$oldfile = $getfile->name;
File::delete(public_path('documents') . "/" . $oldfile);
$dokumen_file->move(public_path('documents'), $nama_asli);
document::where('id', $decryptedId)->update($data);
return redirect()->route('document')->with('success', 'Data berhasil diubah');
} else {
return redirect()->route('document')->with('error', 'File sudah pernah diupload !');
}
} else {
$data = ['deskripsi' => $request->deskripsi];
document::where('id', $decryptedId)->update($data);
return redirect()->route('document')->with('success', 'Data berhasil diubah');
}
}
public function destroy(string $id)
{
try {
$decryptedId = Crypt::decryptString($id);
$document = document::where('id', $decryptedId);
$file = $document->first();
File::delete(public_path('documents') . "/" . $file->name);
$document->delete();
return redirect()->route('document')->with('delete', 'Data successfully deleted');
} catch (DecryptException $e) {
return redirect()->back()->with('error', 'Invalid ID');
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]