<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller
{
public function index()
{
$data['title'] = 'E-Cash - Users';
$data['users'] = User::all();
return view('users.index')->with($data);
}
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required',
'level' => 'required',
'photo' => 'mimes:jpg,jpeg,png,gif,svg'
], ['email.unique' => 'The email has already been taken.']);
$data = [
'name' => $request->name,
'email' => $request->email,
'level' => $request->level,
'password' => bcrypt($request->password)
];
if ($request->hasFile('photo')) {
$foto_file = $request->file('photo');
$foto_ekstensi = $foto_file->extension();
$foto_baru = "User-" . date('ymdhis') . ".$foto_ekstensi";
$foto_file->move(public_path('images'), $foto_baru);
$data['photo'] = "/storage/".$request->photo->store('profile/'.$foto_baru,'public');
}
User::create($data);
return redirect()->route('users.index')->with('success', 'Data successfully added');
}
public function update(Request $request, string $id)
{
try {
$decryptedId = Crypt::decryptString($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'level' => 'required',
'photo' => 'mimes:jpg,jpeg,png,gif,svg'
]);
$data = [
'name' => $request->name,
'level' => $request->level,
'email' => $request->email,
];
if ($request->input('password') != '') {
$data['password'] = Hash::make($request->password);
}
// dd("TAI");
if ($request->hasFile('photo')) {
$foto_file = $request->file('photo');
$foto_ekstensi = $foto_file->extension();
$foto_baru = "User-" . date('ymdhis') . ".$foto_ekstensi";
$foto_file->move(public_path('images'), $foto_baru);
$data['photo'] = "/storage/".$request->photo->store('profile/'.$foto_baru,'public');
$getfoto = User::where('id', $decryptedId)->first();
$foto_lama = $getfoto->photo;
// File::delete(public_path('images') . "/" . $foto_lama);
$user = User::find($decryptedId);
if(File::exists(public_path().$user->photo)) {
File::delete(public_path().$user->photo);
}
}
User::where('id', $decryptedId)->update($data);
return redirect()->route('users.index')->with('success', 'Data successfully changed');
} catch (DecryptException $e) {
return redirect()->back()->with('error', 'Invalid ID');
}
}
public function destroy(string $id)
{
try {
$decryptedId = Crypt::decryptString($id);
$getfoto = User::where('id', $decryptedId)->first();
$foto_lama = $getfoto->photo;
File::delete(public_path('images') . "/" . $foto_lama);
User::where('id', $decryptedId)->delete();
return redirect()->route('users.index')->with('success', 'Data successfully deleted');
} catch (DecryptException $e) {
return redirect()->back()->with('error', 'Invalid ID');
}
}
public function print()
{
$data['title'] = 'Print Users';
$data['users'] = User::orderBy('name', 'asc')->get();;
$pdf = Pdf::loadView('users.print', $data);
$pdf->setOption(['defaultFont' => 'sans-serif'])->setpaper('A4', 'potrait');
return $pdf->download('Ekspor-Users.pdf');
}
public function profile()
{
$data['title'] = 'Profile';
return view('profile')->with($data);
}
public function profileUpdate(Request $request, string $id)
{
try {
$decryptedId = Crypt::decryptString($id);
$request->validate([
'name' => 'required',
'email' => 'required|email',
'photo' => 'mimes:jpg,jpeg,png,gif,svg'
]);
$data = User::find($decryptedId);
$data = [
'name' => $request->name,
// 'level' => $request->level,
'email' => $request->email,
];
if ($request->input('password') != '') {
$data['password'] = Hash::make($request->password);
}
if ($request->hasFile('photo')) {
$foto_file = $request->file('photo');
$foto_ekstensi = $foto_file->getClientOriginalExtension();
$foto_baru = "User-" . date('ymdhis') . ".$foto_ekstensi";
$filename = $request->file('photo')->getClientOriginalName();
$filenameExtension = $request->file('photo')->getClientOriginalExtension();
$fileNameSimpan = $filename.'_'.time().'.'.$filenameExtension;
// $foto_file->move(public_path('images'), $foto_baru);
// $data['photo'] = $foto_baru;
$data['photo'] = "/storage/".$request->photo->store('profil/'.$fileNameSimpan,'public');
$getfoto = User::where('id', $decryptedId)->first();
$foto_lama = $getfoto->photo;
// File::delete(public_path('images') . "/" . $foto_lama);
$user = User::find($decryptedId);
if(File::exists(public_path().$foto_lama)) {
File::delete(public_path().$foto_lama);
}
}
User::where('id', $decryptedId)->update($data);
return redirect()->route('profile')->with('success', 'Data successfully changed');
} catch (DecryptException $e) {
return redirect()->back()->with('error', 'Invalid ID');
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]