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\Kuesioner;
use App\Models\Periode;
use App\Models\PilihPeriode;
use Illuminate\Http\Request;
class QuestionnaireController extends Controller
{
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();
return view('backend.users_questionnaire', compact('kuesioners'));
}
@ -19,11 +25,10 @@ public function index()
public function store(Request $request)
{
$idUser = auth()->user()->id;
$lastPeriode = Periode::latest()->first();
$periode = Hasil::where('id_user', $idUser)->where('id_periode', $lastPeriode)->count();
$checkPeriod = PilihPeriode::first();
$periode = Hasil::where('id_user', $idUser)->where('id_periode', $checkPeriod->id_periode)->count();
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
@ -54,26 +59,26 @@ public function store(Request $request)
$kmTotal = $totalsPerGroup[1] + $totalsPerGroup[2] + $totalsPerGroup[3];
$kmClass = null;
if ($kmTotal >= 63) {
$kmClass = 'Tinggi';
$kmClass = 'High';
} else if ($kmTotal >= 42) {
$kmClass = 'Sedang';
$kmClass = 'Medium';
} else {
$kmClass = 'Rendah';
$kmClass = 'Low';
}
$rmTotal = $totalsPerGroup[4] + $totalsPerGroup[5] + $totalsPerGroup[6] + $totalsPerGroup[7] + $totalsPerGroup[8];
$rmClass = null;
if ($rmTotal >= 63) {
$rmClass = 'Tinggi';
$rmClass = 'High';
} else if ($rmTotal >= 42) {
$rmClass = 'Sedang';
$rmClass = 'Medium';
} else {
$rmClass = 'Rendah';
$rmClass = 'Low';
}
Hasil::create([
'id_user' => $idUser,
'id_periode' => 1,
'id_periode' => $checkPeriod->id_periode,
'declarative_knowledge' => $totalsPerGroup[1],
'procedural_knowledge' => $totalsPerGroup[2],
'conditional_knowledge' => $totalsPerGroup[3],
@ -88,6 +93,6 @@ public function store(Request $request)
'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 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>
<span>Kuesioner</span>
</a>

View File

@ -8,7 +8,7 @@
<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>
</main>

View File

@ -5,7 +5,7 @@
<h1>Isi Kuesioner</h1>
<nav>
<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>
</ol>
</nav>
@ -38,7 +38,7 @@
<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>
<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>
<div class="invalid-feedback mt-3 text-end w-100">

View File

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