TIF_E41201452/Website/app/Http/Controllers/WebsiteController.php

238 lines
8.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Laporan;
use App\Models\Masyarakat;
use App\Models\Pelaku;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rules;
class WebsiteController extends Controller
{
public function dashboard ()
{
$users = User::all();
$polisi = $users->where('role', 'polisi')->count();
$masyarakat = $users->where('role', 'masyarakat')->count();
$pelaku = Pelaku::all()->count();
$laporan = Laporan::all()->count();
return view('server-side.pages.dashboard.dashboard', compact(
['polisi', 'masyarakat', 'pelaku', 'laporan']
));
}
public function dataUser ()
{
$numtab = 1;
$users = User::all();
return view('server-side.pages.manajemen-user.data-user', compact(
['numtab', 'users']
));
}
public function dataAdministrator ()
{
$numtab = 1;
$administrator = User::where('role', 'administrator')->get();
return view('server-side.pages.manajemen-data.data-administrator', compact(
['numtab', 'administrator']
));
}
public function dataPolisi ()
{
$numtab = 1;
$polisi = User::where('role', 'polisi')->get();
return view('server-side.pages.manajemen-data.data-polisi', compact(
['numtab', 'polisi']
));
}
public function dataMasyarakat ()
{
$numtab = 1;
$masyarakat = Masyarakat::join('users', 'users.id', '=', 'masyarakats.user_id')->get();
return view('server-side.pages.manajemen-data.data-masyarakat', compact(
['numtab', 'masyarakat']
));
}
public function dataPelaku ()
{
$numtab = 1;
$pelaku = Pelaku::all();
return view('server-side.pages.manajemen-data.data-pelaku-kejahatan', compact(
['numtab', 'pelaku']
));
}
public function filterLaporan ()
{
$numtab = 1;
$filters = Laporan::join('masyarakats', 'masyarakats.id', '=', 'laporans.masyarakat_id')->join('users', 'users.id', '=', 'masyarakats.user_id')->where('laporans.status', 'menunggu persetujuan')->select('laporans.*', 'users.name', 'users.email')->get();
return view('server-side.pages.manajemen-laporan.filter-laporan', compact(
['numtab', 'filters']
));
}
public function dataLaporan ()
{
$numtab = 1;
$laporan = Laporan::join('masyarakats', 'masyarakats.id', '=', 'laporans.masyarakat_id')->join('users', 'users.id', '=', 'masyarakats.user_id')->whereNotIn('status', ['menunggu persetujuan'])->select('laporans.*', 'users.name', 'users.email')->get();
return view('server-side.pages.manajemen-laporan.data-laporan', compact(
['numtab', 'laporan']
));
}
public function detailLaporan ($id)
{
$detail = Laporan::join('masyarakats', 'masyarakats.id', '=', 'laporans.masyarakat_id')->join('users', 'users.id', '=', 'masyarakats.user_id')->where('laporans.id', $id)->select('laporans.*', 'users.name', 'users.email')->first();
return view('server-side.pages.manajemen-laporan.detail-laporan', compact(
['detail']
));
}
public function updateLaporan (Request $request, $id)
{
$request->validate(['status' => ['required']]);
$laporan = Laporan::where('id', $id)->first();
$laporan->status = $request->status;
$laporan->save();
return Redirect::route('filter.laporan')->with('message', 'Berhasil update status laporan masyrakat');;
}
public function registrasiUser ()
{
return view('server-side.pages.manajemen-user.registrasi-user');
}
public function registrasiStore (Request $request)
{
$request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:' . User::class],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
'role' => ['required'],
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => $request->role,
]);
if ($request->role == 'masyarakat') {
Masyarakat::create([
'user_id' => $user->id,
'created_at' => Carbon::now()->format('Y-m-d H:i:s'),
'updated_at' => Carbon::now()->format('Y-m-d H:i:s')
]);
}
return Redirect::route('data.user')->with('message', 'Berhasil melakukan registrasi user baru');
}
public function deleteUser ($id)
{
$user = User::findOrFail($id);
if ($user->role === 'masyarakat') {
$masyarakat = Masyarakat::where('user_id', $id)->first();
if ($masyarakat) {
Laporan::where('masyarakat_id', $masyarakat->id)->delete();
$masyarakat->delete();
}
}
$user->delete();
return Redirect::route('data.user')->with('message', 'Berhasil menghapus user');
}
public function tambahPelaku ()
{
return view('server-side.pages.manajemen-data.tambah-pelaku-kejahatan');
}
public function storePelaku (Request $request)
{
$request->validate([
'nama' => ['required'],
'image' => ['required', 'mimes:png,jpg,jpeg', 'max:1024'],
'jenis_kelamin' => ['required'],
'tempat_lahir' => ['required'],
'tanggal_lahir' => ['required'],
'alamat' => ['required'],
'riwayat_kejahatan' => ['required'],
]);
$data = $request->all();
$image = $data['image'];
$filename = strtolower('pelaku-' . $data['nama'] . '-' . time() . '-' . $image->getClientOriginalName());
$data['image'] = strtolower('pelaku-' . $data['nama'] . '-' . time() . '-' . $image->getClientOriginalName());
$destinationPath = public_path('foto-pelaku');
$image->move($destinationPath, $filename);
Pelaku::create($data);
return Redirect::route('data.pelaku')->with('message', 'Berhasil menambah data pelaku kejahatan');
}
public function ubahPassAdmin ()
{
return view('server-side.pages.manajemen-password.ubah-pass-admin');
}
public function prosesPassAdmin (Request $request)
{
$request->validate([
'password_lama' => 'required',
'password_baru' => 'required|min:8',
]);
$user = User::find(Auth::user()->id);
if (!Hash::check($request->password_lama, $user->password)) {
return Redirect::back()->with('error', 'Password lama yang Anda masukkan salah!');
}
if ($request->password_baru !== $request->ulangi_password_baru) {
return Redirect::back()->with('error', 'Kata sandi baru dan kata sandi yang diketik ulang tidak cocok!');
}
$user->password = Hash::make($request->password_baru);
$user->save();
return Redirect::route('pass.admin')->with('message', 'Berhasil merubah password');
}
public function ubahPassPolmas ()
{
return view('server-side.pages.manajemen-password.ubah-pass-polmas');
}
public function prosesPassPolmas (Request $request)
{
$request->validate([
'password_lama' => 'required',
'password_baru' => 'required|min:8',
]);
$user = User::find(Auth::user()->id);
if (!Hash::check($request->password_lama, $user->password)) {
return Redirect::back()->with('error', 'Password lama yang Anda masukkan salah!');
}
if ($request->password_baru !== $request->ulangi_password_baru) {
return Redirect::back()->with('error', 'Kata sandi baru dan kata sandi yang diketik ulang tidak cocok!');
}
$user->password = Hash::make($request->password_baru);
$user->save();
return Redirect::route('pass.polmas')->with('message', 'Berhasil merubah password');
}
}