Kuesioner User

This commit is contained in:
DimazzP 2023-10-04 20:58:16 +07:00
parent 18ee02d8a0
commit dedbf5bd92
12 changed files with 94 additions and 25 deletions

View File

@ -6,12 +6,18 @@
use App\Models\Hasil; use App\Models\Hasil;
use App\Models\Kuesioner; use App\Models\Kuesioner;
use App\Models\Periode; use App\Models\Periode;
use App\Models\PilihPeriode;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class QuestionnaireController extends Controller class QuestionnaireController extends Controller
{ {
public function index() public function index()
{ {
$idUser = auth()->user()->id;
$checkKuesioner = Hasil::where('id_user', $idUser)->count();
if ($checkKuesioner > 0) {
return redirect()->route('user.questionnaire.check');
}
$kuesioners = Kuesioner::get(); $kuesioners = Kuesioner::get();
return view('backend.users_questionnaire', compact('kuesioners')); return view('backend.users_questionnaire', compact('kuesioners'));
} }
@ -19,11 +25,10 @@ public function index()
public function store(Request $request) public function store(Request $request)
{ {
$idUser = auth()->user()->id; $idUser = auth()->user()->id;
$checkPeriod = PilihPeriode::first();
$lastPeriode = Periode::latest()->first(); $periode = Hasil::where('id_user', $idUser)->where('id_periode', $checkPeriod->id_periode)->count();
$periode = Hasil::where('id_user', $idUser)->where('id_periode', $lastPeriode)->count();
if ($periode > 0) { if ($periode > 0) {
return redirect()->route('user.checkFilled')->with('error', 'Gagal, anda sudah pernah mengisikan kuesioner'); return redirect()->route('user.questionnaire.check')->with('error', 'Gagal, anda sudah pernah mengisikan kuesioner');
} }
$answer = []; // Array yang berisi data jawaban $answer = []; // Array yang berisi data jawaban
@ -54,26 +59,26 @@ public function store(Request $request)
$kmTotal = $totalsPerGroup[1] + $totalsPerGroup[2] + $totalsPerGroup[3]; $kmTotal = $totalsPerGroup[1] + $totalsPerGroup[2] + $totalsPerGroup[3];
$kmClass = null; $kmClass = null;
if ($kmTotal >= 63) { if ($kmTotal >= 63) {
$kmClass = 'Tinggi'; $kmClass = 'High';
} else if ($kmTotal >= 42) { } else if ($kmTotal >= 42) {
$kmClass = 'Sedang'; $kmClass = 'Medium';
} else { } else {
$kmClass = 'Rendah'; $kmClass = 'Low';
} }
$rmTotal = $totalsPerGroup[4] + $totalsPerGroup[5] + $totalsPerGroup[6] + $totalsPerGroup[7] + $totalsPerGroup[8]; $rmTotal = $totalsPerGroup[4] + $totalsPerGroup[5] + $totalsPerGroup[6] + $totalsPerGroup[7] + $totalsPerGroup[8];
$rmClass = null; $rmClass = null;
if ($rmTotal >= 63) { if ($rmTotal >= 63) {
$rmClass = 'Tinggi'; $rmClass = 'High';
} else if ($rmTotal >= 42) { } else if ($rmTotal >= 42) {
$rmClass = 'Sedang'; $rmClass = 'Medium';
} else { } else {
$rmClass = 'Rendah'; $rmClass = 'Low';
} }
Hasil::create([ Hasil::create([
'id_user' => $idUser, 'id_user' => $idUser,
'id_periode' => 1, 'id_periode' => $checkPeriod->id_periode,
'declarative_knowledge' => $totalsPerGroup[1], 'declarative_knowledge' => $totalsPerGroup[1],
'procedural_knowledge' => $totalsPerGroup[2], 'procedural_knowledge' => $totalsPerGroup[2],
'conditional_knowledge' => $totalsPerGroup[3], 'conditional_knowledge' => $totalsPerGroup[3],
@ -88,6 +93,6 @@ public function store(Request $request)
'rm_class' => $rmClass, 'rm_class' => $rmClass,
]); ]);
return $idUser; return redirect()->route('user.questionnaire.check');
} }
} }

View File

@ -0,0 +1,37 @@
<?php
namespace App\Http\Controllers\backend;
use App\Http\Controllers\Controller;
use App\Models\Hasil;
use App\Models\PilihPeriode;
use Illuminate\Http\Request;
class UiController extends Controller
{
public function instruction()
{
return view('backend.questionnaire_instructions');
}
public function checkQuestionnaire()
{
$checkPeriod = PilihPeriode::first();
if ($checkPeriod->aktif == 0 || !$checkPeriod->id_periode) {
return view('backend.closed_questionnaire');
}
$idUser = auth()->user()->id;
$countResult = Hasil::where('id_user', $idUser)->where('id_periode', $checkPeriod->id_periode)->count();
if ($countResult > 0) {
return view('backend.completed_questionnaire');
}
return view('backend.not_filled_questionnaire');
}
public function closedQuestionnaire()
{
return view('backend.closed_questionnaire');
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.7 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,14 @@
@extends('backend/layouts.template')
@section('content')
<main id="main" class="main bg-white">
<div class="bg-white p-3 text-center">
<div class="d-flex justify-content-center w-100">
<div class="col-lg-6 col-xl-5 col-md-8 col-sm-11 col-12 d-flex">
<img src="{{ asset('admin_backend/assets/img/closed_questionnaire.svg') }}" alt="" style="max-width:100%; max-height:100%;">
</div>
</div>
<h4 class="font-bold pt-4">Ups! Periode pengisian kuesioner belum dibuka!</h4>
<p class="pt-1 text-secondary">Silakan kembali lagi nanti atau cek informasi terbaru untuk melihat kapan periode pengisian akan dibuka. Terima kasih atas pengertiannya.</p>
</div>
</main>
@endsection

View File

@ -0,0 +1,14 @@
@extends('backend/layouts.template')
@section('content')
<main id="main" class="main bg-white">
<div class="bg-white p-3 text-center">
<div class="d-flex justify-content-center w-100">
<div class="col-lg-5 col-xl-5 col-md-8 col-sm-8 col-12 d-flex">
<img src="{{ asset('admin_backend/assets/img/completed_quiestionnaire.svg') }}" alt="" style="max-width:100%; max-height:100%;">
</div>
</div>
<h4 class="font-bold pt-4">Anda telah mengisikan kuesioner!</h4>
<p class="pt-1 text-secondary">Anda telah berhasil menyelesaikan kuesioner yang telah kami sediakan. Terima kasih atas partisipasi Anda dalam memberikan masukan penting kepada kami.</p>
</div>
</main>
@endsection

View File

@ -17,7 +17,7 @@
</li><!-- End Dashboard Nav --> </li><!-- End Dashboard Nav -->
<li class="nav-item"> <li class="nav-item">
<a class="nav-link collapsed" href="{{ route('user.checkFilled')}}"> <a class="nav-link collapsed" href="{{ route('user.questionnaire.check')}}">
<i class="bi bi-pencil"></i> <i class="bi bi-pencil"></i>
<span>Kuesioner</span> <span>Kuesioner</span>
</a> </a>

View File

@ -8,7 +8,7 @@
<div class="mt-4 mb-1 text-center"> <div class="mt-4 mb-1 text-center">
<a href="{{ route('user.instruction') }}" class="btn btn-primary">Mulai Isi Kuesioner <i class="bi bi-arrow-right"></i></a> <a href="{{ route('user.questionnaire.instruction') }}" class="btn btn-primary">Mulai Isi Kuesioner <i class="bi bi-arrow-right"></i></a>
</div> </div>
</div> </div>
</main> </main>

View File

@ -5,7 +5,7 @@
<h1>Isi Kuesioner</h1> <h1>Isi Kuesioner</h1>
<nav> <nav>
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ route('user.instruction') }}">Instruksi</a></li> <li class="breadcrumb-item"><a href="{{ route('user.questionnaire.instruction') }}">Instruksi</a></li>
<li class="breadcrumb-item active">Isi Kuesioner</li> <li class="breadcrumb-item active">Isi Kuesioner</li>
</ol> </ol>
</nav> </nav>
@ -38,7 +38,7 @@
<input value="3" type="radio" class="form-check-input" id="radio3{{ $kuesioner->id }}" name="optionsGroup{{ $kuesioner->id }}"> <input value="3" type="radio" class="form-check-input" id="radio3{{ $kuesioner->id }}" name="optionsGroup{{ $kuesioner->id }}">
<label class="form-check-label pe-1 pe-sm-5 ps-1" for="radio3{{ $kuesioner->id }}">3</label> <label class="form-check-label pe-1 pe-sm-5 ps-1" for="radio3{{ $kuesioner->id }}">3</label>
<input value="4" type="radio" class="form-check-input" id="radio4{{ $kuesioner->id }}" name="optionsGroup{{ $kuesioner->id }}"> <input checked value="4" type="radio" class="form-check-input" id="radio4{{ $kuesioner->id }}" name="optionsGroup{{ $kuesioner->id }}">
<label class="form-check-label pe-1 pe-sm-5 ps-1" for="radio4{{ $kuesioner->id }}">4</label> <label class="form-check-label pe-1 pe-sm-5 ps-1" for="radio4{{ $kuesioner->id }}">4</label>
<div class="invalid-feedback mt-3 text-end w-100"> <div class="invalid-feedback mt-3 text-end w-100">

View File

@ -36,12 +36,9 @@
Route::resource('questionnaire', 'QuestionnaireController')->names('userQuestionnaire'); Route::resource('questionnaire', 'QuestionnaireController')->names('userQuestionnaire');
// hanya tampilan // hanya tampilan
Route::get('instruction', function () { Route::get('instruction', 'UiController@instruction')->name('user.questionnaire.instruction');
return view('backend.questionnaire_instructions'); Route::get('check-questionnaire', 'UiController@checkQuestionnaire')->name('user.questionnaire.check');
})->name('user.instruction'); Route::get('closed-questionnaire', 'UiController@closedQuestionnaire')->name('user.questionnaire.closed');
Route::get('check-questionnaire', function () {
return view('backend.not_filled_questionnaire');
})->name('user.checkFilled');
}); });
}); });
@ -56,8 +53,8 @@
Route::resource('admin-result', 'AdminResultController')->names('adminResult'); Route::resource('admin-result', 'AdminResultController')->names('adminResult');
Route::resource('admin-period', 'AdminPeriodController')->names('adminPeriod'); Route::resource('admin-period', 'AdminPeriodController')->names('adminPeriod');
Route::post('/select-period', [SelectPeriodController::class, 'update'])->name('adminSelectPeriod'); Route::post('/select-period', 'SelectPeriodController@update')->name('adminSelectPeriod');
Route::post('/select-period/active', [SelectPeriodController::class, 'active'])->name('adminSelectPeriod.active'); Route::post('/select-period/active', 'SelectPeriodController@active')->name('adminSelectPeriod.active');
// Route::post('listuser', [UserController::class, 'store']); // Route::post('listuser', [UserController::class, 'store']);
}); });