238 lines
8.2 KiB
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');
|
|
}
|
|
}
|