MIF_E31210549/app/Http/Controllers/UserController.php

155 lines
5.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
use App\Mail\RegisterMail;
use Illuminate\Support\Facades\Mail;
class UserController extends Controller
{
public function index()
{
// $data['user'] = DB::table('users')->where('role', '!=', 'Admin')->get();
$data['user'] = DB::table('users')->where('role', '!=', 'Admin')->orderBy('created_at', 'desc')->get();
return view('backend.user.index', $data);
}
public function tambah()
{
return view('backend.user.tambah');
}
function create(Request $request)
{
$str = Str::random(40);
$gambar = '';
$request->validate([
'nama' => 'required|min:4|unique:users',
'email' => 'required|email|unique:users',
'role' => 'required',
'password' => 'required|min:6',
], [
'nama.required' => 'Nama wajib diisi',
'nama.min' => 'Nama minimal harus 4 karakter',
'nama.unique' => 'Nama sudah terpakai, gunakan nama lain',
'email.required' => 'Email wajib diisi',
'email.email' => 'Format email invalid',
'email.email' => 'Email sudah terpakai, gunakan email lain',
'role.required' => 'Role wajib diisi',
'password.required' => 'Password wajib diisi',
'password.min' => 'Password minimal harus 6 karakter',
]);
if ($request->hasFile('gambar')) {
$request->validate(['gambar' => 'mimes:jpeg,jpg,png,gif|image|file|max:1024']);
$gambar_file = $request->file('gambar');
$foto_ekstensi = $gambar_file->extension();
$nama_foto = date('ymdhis') . "." . $foto_ekstensi;
$gambar_file->move(public_path('picture/accounts'), $nama_foto);
$gambar = $nama_foto;
} else {
$gambar = "default.jpg";
}
$save = new User;
$save->nama = trim($request->nama);
$save->email = trim($request->email);
$save->role = $request->role;
$save->foto = $gambar;
$save->hash = $str;
$save->password = Hash::make($request->password);
$save->save();
Mail::to($save->email)->send(new RegisterMail($save));
return redirect()->route('user')->with(['success' => 'Tambah User Berhasil!']);
}
public function edit($id)
{
$data = User::where('id', $id)->get();
return view('backend.user.edit', ['uc' => $data]);
}
function update(Request $request)
{
$request->validate([
'gambar' => 'image|file|max:1024',
'nama' => 'required|min:4',
'email' => 'required|email',
'role' => 'required',
// 'password' => 'min:6',
], [
'gambar.image' => 'File wajib image',
'gambar.file' => 'Wajib file',
'gambar.max' => 'Bidang gambar tidak boleh lebih besar dari 1024 kilobyte',
'nama.required' => 'Nama wajib diisi',
'nama.min' => 'Nama minimal harus 4 karakter',
'nama.unique' => 'Nama sudah terpakai, gunakan nama lain',
'email.required' => 'Email wajib diisi',
'email.email' => 'Format email invalid',
'email.email' => 'Email sudah terpakai, gunakan email lain',
'role.required' => 'Role wajib diisi',
// 'password.required' => 'Password wajib diisi',
// 'password.min' => 'Password minimal harus 6 karakter',
]);
$user = User::find($request->id);
if ($request->hasFile('gambar')) {
$old_image = $user->foto;
if ($old_image != 'default.jpg') {
unlink(public_path('picture/accounts/' . $old_image));
}
$gambar_file = $request->file('gambar');
$foto_ekstensi = $gambar_file->extension();
$nama_foto = date('ymdhis') . "." . $foto_ekstensi;
$gambar_file->move(public_path('picture/accounts'), $nama_foto);
$user->foto = $nama_foto;
}
$user->nama = $request->nama;
$user->email = $request->email;
$user->role = $request->role;
if ($request->password != null || $request->password != "") {
$request->validate([
'password' => 'min:6'
], [
'password.min' => 'Password minimal harus 6 karakter'
]);
$user->password = Hash::make($request->password);
} else {
$user->password = $user->password;
}
$user->save();
return redirect()->route('user')->with(['success' => 'Edit User Berhasil!']);
}
function hapus($id)
{
$user = User::find($id);
$old_image = $user->foto;
if ($old_image != 'default.jpg') {
unlink(public_path('picture/accounts/' . $old_image));
}
DB::table('users')->where('id', $id)->delete();
return redirect()->route('user')->with(['success' => 'Hapus Berhasil!']);
}
}