feat(assessment-form): create assessment form page
This commit is contained in:
parent
9c88807fb2
commit
19328a7ff6
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class AssesmentFormController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('assesment-form.index');
|
||||||
|
}
|
||||||
|
}
|
|
@ -64,5 +64,7 @@ class Kernel extends HttpKernel
|
||||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||||
'verifiedAcount' => \App\Http\Middleware\verifiedAcount::class,
|
'verifiedAcount' => \App\Http\Middleware\verifiedAcount::class,
|
||||||
|
'admin' => \App\Http\Middleware\AdminMiddleware::class,
|
||||||
|
'officer' => \App\Http\Middleware\OfficerMiddleware::class
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
class AdminMiddleware
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle an incoming request.
|
||||||
|
*
|
||||||
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||||
|
*/
|
||||||
|
public function handle(Request $request, Closure $next): Response
|
||||||
|
{
|
||||||
|
if (Auth::check() && Auth::user()->role == 'admin') {
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
toast('Anda tidak memiliki akses', 'warning')->position('top')->autoclose(3000);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
class OfficerMiddleware
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle an incoming request.
|
||||||
|
*
|
||||||
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||||
|
*/
|
||||||
|
public function handle(Request $request, Closure $next): Response
|
||||||
|
{
|
||||||
|
if (Auth::check() && Auth::user()->role == 'user') {
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
toast('Anda tidak memiliki akses', 'warning')->position('top')->autoclose(3000);
|
||||||
|
return redirect()->back();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
const inputs = document.querySelectorAll(
|
||||||
|
"#pH-field, #ketinggian_tempat-field",
|
||||||
|
"#ketersediaan_air-field",
|
||||||
|
"#curah_hujan-field"
|
||||||
|
);
|
||||||
|
|
||||||
|
inputs.forEach((input) => {
|
||||||
|
input.addEventListener("input", function () {
|
||||||
|
this.value = this.value.replace(/[^0-9.]/g, "");
|
||||||
|
this.value = this.value.replace(/^(\.)/, "");
|
||||||
|
if ((this.value.match(/\./g) || []).length > 1) {
|
||||||
|
this.value = this.value.substring(
|
||||||
|
0,
|
||||||
|
this.value.lastIndexOf(".")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,115 @@
|
||||||
|
@extends('layouts.app')
|
||||||
|
@push('title', 'Form Penilaian')
|
||||||
|
@section('content')
|
||||||
|
<div class="page-content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<!-- start page title -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="page-title-box d-sm-flex align-items-center justify-content-between">
|
||||||
|
<h4 class="mb-sm-0">Form Penilaian</h4>
|
||||||
|
|
||||||
|
<div class="page-title-right">
|
||||||
|
<ol class="breadcrumb m-0">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="javascript: void(0);">Menu</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">Form Penilaian</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end page title -->
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xl-8 col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="card-title mb-0">Form Penilaian</h4>
|
||||||
|
</div>
|
||||||
|
<form action="" class="needs-validation" method="POST" novalidate id="add-form">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="" class="form-label">pH Tanah</label>
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="form-control" name="pH" id="pH-field"
|
||||||
|
placeholder="Masukan nilai pH Tanah" aria-label="Masukan nilai pH Tanah"
|
||||||
|
required autofocus>
|
||||||
|
<span class="input-group-text" id="pH-addon">pH</span>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Masukan nilai pH
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="" class="form-label">Ketinggian Tempat</label>
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="form-control" name="ketinggian_tempat"
|
||||||
|
id="ketinggian_tempat-field" placeholder="Masukan nilai Ketinggian Tempat"
|
||||||
|
aria-label="Masukan nilai Ketinggian Tempat" required>
|
||||||
|
<span class="input-group-text" id="ketinggian_tempat-addon">m</span>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Masukan nilai Ketinggian Tempat
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="" class="form-label">Ketersediaan Air</label>
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="form-control" name="ketersediaan_air"
|
||||||
|
id="ketersediaan_air-field" placeholder="Masukan nilai Ketersediaan Air"
|
||||||
|
aria-label="Masukan nilai Ketersediaan Air" required>
|
||||||
|
<span class="input-group-text" id="ketersediaan_air-addon">%</span>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Masukan nilai Ketersediaan Air
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="" class="form-label">Curah Hujan</label>
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="form-control" name="curah_hujan" id="curah_hujan-field"
|
||||||
|
placeholder="Masukan nilai Curah Hujan" aria-label="Masukan nilai Curah Hujan"
|
||||||
|
required>
|
||||||
|
<span class="input-group-text" id="curah_hujan-addon">mm</span>
|
||||||
|
<div class="invalid-feedback">
|
||||||
|
Masukan nilai Curah Hujan
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer d-flex justify-content-end">
|
||||||
|
<button type="submit" class="btn btn-success">Simpan</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-4 col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="card-title mb-0">Hasil Penilaian</h4>
|
||||||
|
</div>
|
||||||
|
<form action="">
|
||||||
|
<div class="card-body"></div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- container-fluid -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@push('other-js')
|
||||||
|
<!-- prismjs plugin -->
|
||||||
|
<script src="assets/libs/prismjs/prism.js"></script>
|
||||||
|
<script src="assets/libs/list.js/list.min.js"></script>
|
||||||
|
<script src="assets/libs/list.pagination.js/list.pagination.min.js"></script>
|
||||||
|
|
||||||
|
<!-- listjs init -->
|
||||||
|
<script src="assets/js/pages/form-validation.init.js"></script>
|
||||||
|
|
||||||
|
<script src="assets/js/pages/customJs/assesment-form/index.js"></script>
|
||||||
|
@endpush
|
||||||
|
@endsection
|
|
@ -66,7 +66,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Theme Settings -->
|
<!-- Theme Settings -->
|
||||||
<div class="offcanvas offcanvas-end border-0" tabindex="-1" id="theme-settings-offcanvas">
|
{{-- <div class="offcanvas offcanvas-end border-0" tabindex="-1" id="theme-settings-offcanvas">
|
||||||
<div class="d-flex align-items-center bg-primary bg-gradient p-3 offcanvas-header">
|
<div class="d-flex align-items-center bg-primary bg-gradient p-3 offcanvas-header">
|
||||||
<h5 class="m-0 me-2 text-white">Theme Customizer</h5>
|
<h5 class="m-0 me-2 text-white">Theme Customizer</h5>
|
||||||
|
|
||||||
|
@ -590,7 +590,7 @@ class="form-check-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> --}}
|
||||||
@include('sweetalert::alert')
|
@include('sweetalert::alert')
|
||||||
|
|
||||||
<!-- JAVASCRIPT -->
|
<!-- JAVASCRIPT -->
|
||||||
|
|
|
@ -86,6 +86,13 @@ class="nav-link {{ request()->routeIs('master_data.aturan.*') ? 'active' : '' }}
|
||||||
data-key="t-dashboards">Dashboards</span>
|
data-key="t-dashboards">Dashboards</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link menu-link {{ request()->routeIs('assesment_form.index') ? 'active' : '' }}"
|
||||||
|
href="{{ route('assesment_form.index') }}">
|
||||||
|
<i data-feather="file-text" class="icon-dual"></i> <span
|
||||||
|
data-key="t-dashboards">Form Penilaian</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
@endif <!-- end Dashboard Menu -->
|
@endif <!-- end Dashboard Menu -->
|
||||||
|
|
||||||
{{-- <li class="menu-title"><i class="ri-more-fill"></i> <span data-key="t-pages">Pages</span>
|
{{-- <li class="menu-title"><i class="ri-more-fill"></i> <span data-key="t-pages">Pages</span>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Http\Controllers\AssesmentFormController;
|
||||||
use App\Http\Controllers\Auth\AuthenticatedSessionController;
|
use App\Http\Controllers\Auth\AuthenticatedSessionController;
|
||||||
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
||||||
use App\Http\Controllers\Auth\RegisteredUserController;
|
use App\Http\Controllers\Auth\RegisteredUserController;
|
||||||
|
@ -10,6 +11,7 @@
|
||||||
use App\Http\Controllers\MasterData\RuleController;
|
use App\Http\Controllers\MasterData\RuleController;
|
||||||
use App\Http\Controllers\MasterData\UserController;
|
use App\Http\Controllers\MasterData\UserController;
|
||||||
use Illuminate\Routing\RouteGroup;
|
use Illuminate\Routing\RouteGroup;
|
||||||
|
use Illuminate\Routing\RouteUrlGenerator;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -56,39 +58,46 @@
|
||||||
Route::middleware(['auth', 'verifiedAcount'])->group(function () {
|
Route::middleware(['auth', 'verifiedAcount'])->group(function () {
|
||||||
Route::post('/logout', [AuthenticatedSessionController::class, 'destroy'])->name('auth.logout');
|
Route::post('/logout', [AuthenticatedSessionController::class, 'destroy'])->name('auth.logout');
|
||||||
|
|
||||||
Route::controller(DashboardController::class)->name('dashboard.')->group(function () {
|
Route::middleware('admin')->group(function () {
|
||||||
Route::get('/dashboard-admin', 'admin')->name('admin');
|
Route::get('/dashboard-admin', [DashboardController::class, 'admin'])->name('dashboard.admin');
|
||||||
Route::get('/dashboard-petugas', 'petugas')->name('petugas');
|
|
||||||
|
Route::name('master_data.')->group(function () {
|
||||||
|
|
||||||
|
Route::prefix('data-pengguna')->controller(UserController::class)->name('pengguna.')->group(function () {
|
||||||
|
Route::get('/', 'index')->name('index');
|
||||||
|
Route::post('/', 'store')->name('store');
|
||||||
|
Route::put('/{id}', 'update')->name('update');
|
||||||
|
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::prefix('data-lahan')->controller(LandController::class)->name('lahan.')->group(function () {
|
||||||
|
Route::get('/', 'index')->name('index');
|
||||||
|
Route::post('/', 'store')->name('store');
|
||||||
|
Route::put('/{id}', 'update')->name('update');
|
||||||
|
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::prefix('data-indikator')->controller(IndicatorController::class)->name('indikator.')->group(function () {
|
||||||
|
Route::get('/', 'index')->name('index');
|
||||||
|
// Route::post('/', 'store')->name('store');
|
||||||
|
Route::put('/{id}', 'update')->name('update');
|
||||||
|
// Route::delete('/{id}', 'destroy')->name('destroy');
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::prefix('data-aturan')->controller(RuleController::class)->name('aturan.')->group(function () {
|
||||||
|
Route::get('/', 'index')->name('index');
|
||||||
|
// Route::post('/', 'store')->name('store');
|
||||||
|
Route::put('/{id}', 'update')->name('update');
|
||||||
|
// Route::delete('/{id}', 'destroy')->name('destroy');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::name('master_data.')->group(function () {
|
Route::middleware('officer')->group(function () {
|
||||||
|
Route::get('/dashboard-petugas', [DashboardController::class, 'petugas'])->name('dashboard.petugas');
|
||||||
|
|
||||||
Route::prefix('data-pengguna')->controller(UserController::class)->name('pengguna.')->group(function () {
|
Route::prefix('form-penilaian')->controller(AssesmentFormController::class)->name('assesment_form.')->group(function () {
|
||||||
Route::get('/', 'index')->name('index');
|
Route::get('/', 'index')->name('index');
|
||||||
Route::post('/', 'store')->name('store');
|
|
||||||
Route::put('/{id}', 'update')->name('update');
|
|
||||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
|
||||||
});
|
|
||||||
|
|
||||||
Route::prefix('data-lahan')->controller(LandController::class)->name('lahan.')->group(function () {
|
|
||||||
Route::get('/', 'index')->name('index');
|
|
||||||
Route::post('/', 'store')->name('store');
|
|
||||||
Route::put('/{id}', 'update')->name('update');
|
|
||||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
|
||||||
});
|
|
||||||
|
|
||||||
Route::prefix('data-indikator')->controller(IndicatorController::class)->name('indikator.')->group(function () {
|
|
||||||
Route::get('/', 'index')->name('index');
|
|
||||||
// Route::post('/', 'store')->name('store');
|
|
||||||
Route::put('/{id}', 'update')->name('update');
|
|
||||||
// Route::delete('/{id}', 'destroy')->name('destroy');
|
|
||||||
});
|
|
||||||
|
|
||||||
Route::prefix('data-aturan')->controller(RuleController::class)->name('aturan.')->group(function () {
|
|
||||||
Route::get('/', 'index')->name('index');
|
|
||||||
// Route::post('/', 'store')->name('store');
|
|
||||||
Route::put('/{id}', 'update')->name('update');
|
|
||||||
// Route::delete('/{id}', 'destroy')->name('destroy');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue