diff --git a/app/Http/Controllers/AdminBackend/AdminPeriodController.php b/app/Http/Controllers/AdminBackend/AdminPeriodController.php
new file mode 100644
index 0000000..4d49f9b
--- /dev/null
+++ b/app/Http/Controllers/AdminBackend/AdminPeriodController.php
@@ -0,0 +1,81 @@
+id_periode) {
+ $selectPeriod->id_periode = 'Belum Ditambahkan';
+ } else {
+ $checkPeriod = Periode::findOrFail($selectPeriod->id_periode);
+ if ($checkPeriod->semester == 1) {
+ $checkPeriod->semester = 'Ganjil';
+ } else {
+ $checkPeriod->semester = 'Genap';
+ }
+ $selectPeriod->id_periode = $checkPeriod->semester . ' ' . $checkPeriod->tahun;
+ }
+
+ return view('admin_backend.admin_period', compact('periods', 'selectPeriod'));
+ }
+
+
+ public function store(Request $request)
+ {
+ $semester = $request->semester;
+ $tahunAwal = $request->tahun_awal;
+ $tahunAkhir = $request->tahun_akhir;
+ $tahun = $tahunAwal . '/' . $tahunAkhir;
+ $checkPeriod = Periode::where('semester', $semester)->where('tahun', $tahun)->count();
+ if ($checkPeriod > 0) {
+ return redirect()->route('adminPeriod.index')->with('error', 'Gagal, periode yang anda buat sudah ada');
+ }
+ if ($tahunAkhir - $tahunAwal != 1) {
+ return redirect()->route('adminPeriod.index')->with('error', 'Gagal, tahun yang anda masukkan tidak valid');
+ }
+ Periode::create([
+ 'semester' => $request->semester,
+ 'tahun' => $tahun
+ ]);
+ return redirect()->route('adminPeriod.index')->with('success', 'Periode semester baru berhasil dibuat');
+ }
+
+
+ public function update(Request $request, $id)
+ {
+ $semester = $request->semester;
+ $tahunAwal = $request->tahun_awal;
+ $tahunAkhir = $request->tahun_akhir;
+ $tahun = $tahunAwal . '/' . $tahunAkhir;
+ $checkPeriod = Periode::where('semester', $semester)->where('tahun', $tahun)->count();
+ if ($checkPeriod > 0) {
+ return redirect()->route('adminPeriod.index')->with('error', 'Gagal, periode yang anda buat sudah ada');
+ }
+ if ($tahunAkhir - $tahunAwal != 1) {
+ return redirect()->route('adminPeriod.index')->with('error', 'Gagal, tahun yang anda masukkan tidak valid');
+ }
+ $period = Periode::findOrFail($id);
+ $period->semester = $semester;
+ $period->tahun = $tahun;
+ $period->update();
+ return redirect()->route('adminPeriod.index')->with('success', 'Periode tersebut telah diubah');
+ }
+
+
+ public function destroy($id)
+ {
+ $period = Periode::findOrFail($id);
+ $period->delete();
+ return redirect()->route('adminPeriod.index')->with('success', 'Periode tersebut telah dihapus');
+ }
+}
diff --git a/app/Http/Controllers/AdminBackend/AdminResultController.php b/app/Http/Controllers/AdminBackend/AdminResultController.php
new file mode 100644
index 0000000..f332264
--- /dev/null
+++ b/app/Http/Controllers/AdminBackend/AdminResultController.php
@@ -0,0 +1,14 @@
+id_periode;
+ $pilihPeriode = PilihPeriode::first();
+ $pilihPeriode->id_periode = $id;
+ $pilihPeriode->aktif = '1';
+ $pilihPeriode->update();
+ return redirect()->route('adminPeriod.index')->with('success', 'Periode kuesioner telah diubah');
+ }
+}
diff --git a/app/Http/Controllers/Backend/QuestionnaireController.php b/app/Http/Controllers/Backend/QuestionnaireController.php
index 3148a4a..d0bdba1 100644
--- a/app/Http/Controllers/Backend/QuestionnaireController.php
+++ b/app/Http/Controllers/Backend/QuestionnaireController.php
@@ -3,12 +3,91 @@
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
+use App\Models\Hasil;
+use App\Models\Kuesioner;
+use App\Models\Periode;
use Illuminate\Http\Request;
class QuestionnaireController extends Controller
{
public function index()
{
- return view('backend.users_questionnaire');
+ $kuesioners = Kuesioner::get();
+ return view('backend.users_questionnaire', compact('kuesioners'));
+ }
+
+ public function store(Request $request)
+ {
+ $idUser = auth()->user()->id;
+
+ $lastPeriode = Periode::latest()->first();
+ $periode = Hasil::where('id_user', $idUser)->where('id_periode', $lastPeriode)->count();
+ if ($periode > 0) {
+ return redirect()->route('user.checkFilled')->with('error', 'Gagal, anda sudah pernah mengisikan kuesioner');
+ }
+ $answer = []; // Array yang berisi data jawaban
+
+ foreach ($request->id as $index => $id) {
+ $value = $request->input('optionsGroup' . $id);
+ $kategori = $request->input('kategori')[$index];
+
+ // Membuat array asosiatif dengan kategori
+ $answerItem = [
+ 'id' => $id,
+ 'answer' => $value,
+ 'kategori' => $kategori,
+ ];
+
+ // Menambahkan array asosiatif ke dalam array $answer
+ $answer[] = $answerItem;
+ }
+
+ // Menginisialisasi array untuk menyimpan total jawaban per kategori
+ $totalsPerGroup = array_fill(1, 8, 0);
+
+ // Menghitung total jawaban untuk setiap kategori
+ foreach ($answer as $item) {
+ $kategori = $item['kategori'];
+ $totalsPerGroup[$kategori] += $item['answer'];
+ }
+
+ $kmTotal = $totalsPerGroup[1] + $totalsPerGroup[2] + $totalsPerGroup[3];
+ $kmClass = null;
+ if ($kmTotal >= 63) {
+ $kmClass = 'Tinggi';
+ } else if ($kmTotal >= 42) {
+ $kmClass = 'Sedang';
+ } else {
+ $kmClass = 'Rendah';
+ }
+
+ $rmTotal = $totalsPerGroup[4] + $totalsPerGroup[5] + $totalsPerGroup[6] + $totalsPerGroup[7] + $totalsPerGroup[8];
+ $rmClass = null;
+ if ($rmTotal >= 63) {
+ $rmClass = 'Tinggi';
+ } else if ($rmTotal >= 42) {
+ $rmClass = 'Sedang';
+ } else {
+ $rmClass = 'Rendah';
+ }
+
+ Hasil::create([
+ 'id_user' => $idUser,
+ 'id_periode' => 1,
+ 'declarative_knowledge' => $totalsPerGroup[1],
+ 'procedural_knowledge' => $totalsPerGroup[2],
+ 'conditional_knowledge' => $totalsPerGroup[3],
+ 'km_total' => $kmTotal,
+ 'km_class' => $kmClass,
+ 'planning' => $totalsPerGroup[4],
+ 'information_management' => $totalsPerGroup[5],
+ 'monitoring' => $totalsPerGroup[6],
+ 'debugging' => $totalsPerGroup[7],
+ 'evaluation' => $totalsPerGroup[8],
+ 'rm_total' => $rmTotal,
+ 'rm_class' => $rmClass,
+ ]);
+
+ return $idUser;
}
}
diff --git a/app/Models/Hasil.php b/app/Models/Hasil.php
new file mode 100644
index 0000000..bf7c838
--- /dev/null
+++ b/app/Models/Hasil.php
@@ -0,0 +1,28 @@
+id();
+ $table->integer('id', true);
$table->integer('id_user');
+ $table->integer('id_periode');
$table->integer('declarative_knowledge');
$table->integer('procedural_knowledge');
$table->integer('conditional_knowledge');
diff --git a/database/migrations/2023_10_03_120230_create_periode_table.php b/database/migrations/2023_10_03_120230_create_periode_table.php
new file mode 100644
index 0000000..f0e85e7
--- /dev/null
+++ b/database/migrations/2023_10_03_120230_create_periode_table.php
@@ -0,0 +1,23 @@
+id(); // Kolom ID dengan tipe data INT dan Auto Increment
+ $table->enum('semester', ['1', '2'])->notNullable(); // Kolom ENUM untuk semester (1 atau 2)
+ $table->char('tahun', 9)->notNullable(); // Kolom CHAR untuk tahun (misalnya, "2021/2023")
+ $table->timestamps();
+ });
+ }
+
+ public function down()
+ {
+ Schema::dropIfExists('periode');
+ }
+}
diff --git a/database/migrations/2023_10_03_120608_add_id_periode_to_hasil.php b/database/migrations/2023_10_03_120608_add_id_periode_to_hasil.php
new file mode 100644
index 0000000..194bd04
--- /dev/null
+++ b/database/migrations/2023_10_03_120608_add_id_periode_to_hasil.php
@@ -0,0 +1,29 @@
+foreign('id_periode')->references('id')->on('periode');
+ $table->foreign(['id_periode'], 'produk_ibfk_2')
+ ->references(['id'])
+ ->on('periode')
+ ->onUpdate('CASCADE')
+ ->onDelete('CASCADE');
+ });
+ }
+
+ public function down()
+ {
+ // Schema::table('hasil', function (Blueprint $table) {
+ // $table->dropForeign(['id_periode']); // Menghapus foreign key
+ // $table->dropColumn('id_periode'); // Menghapus kolom foreign key
+ // });
+ }
+}
diff --git a/database/migrations/2023_10_04_013735_create_pilih_periode_table.php b/database/migrations/2023_10_04_013735_create_pilih_periode_table.php
new file mode 100644
index 0000000..df4a1e9
--- /dev/null
+++ b/database/migrations/2023_10_04_013735_create_pilih_periode_table.php
@@ -0,0 +1,25 @@
+id();
+ $table->unsignedBigInteger('id_periode');
+ $table->enum('aktif', ['0', '1']);
+
+ // Menambahkan foreign key constraint ke tabel periode
+ $table->foreign('id_periode')->references('id')->on('periode');
+ });
+ }
+
+ public function down()
+ {
+ Schema::dropIfExists('pilih_periode');
+ }
+}
diff --git a/public/admin_backend/assets/img/not_filled.png b/public/admin_backend/assets/img/not_filled.png
new file mode 100644
index 0000000..0132dda
Binary files /dev/null and b/public/admin_backend/assets/img/not_filled.png differ
diff --git a/resources/views/admin_backend/admin_period.blade.php b/resources/views/admin_backend/admin_period.blade.php
new file mode 100644
index 0000000..4204f80
--- /dev/null
+++ b/resources/views/admin_backend/admin_period.blade.php
@@ -0,0 +1,220 @@
+@extends('admin_backend/layouts.template')
+@section('content')
+
+
+ {{--! start header --}}
+
+
+
Periode Tahun Ajar
+
Tambahkan periode pengajaran untuk membuka kembali kuesioner semester baru.
+
+
+
+
+
+ {{--! end header --}}
+
+
+
+
Periode Terpilih
+
{{ $selectPeriod->id_periode }}
+
+
+
+
+
+
+
+
+
+ {{--! start table --}}
+
+
+
+
+ NO |
+ SEMESTER |
+ TAHUN |
+ ACTION |
+ PERIODE |
+
+
+ @foreach ($periods as $index => $period)
+
+ {{ $index+1 }} |
+ {{ $period->semester == 1 ? 'Ganjil' : 'Genap' }} |
+ {{ $period->tahun }} |
+
+
+
+
+ |
+
+
+ |
+
+ @endforeach
+
+
+
+
+ {{--! end table --}}
+
+ {{--! start modal create --}}
+
+ {{--! end modal create --}}
+
+ {{--! start edit modal --}}
+
+ {{--! end edit modal --}}
+
+
+@endsection
+
+@section('script')
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin_backend/admin_questionnaire.blade.php b/resources/views/admin_backend/admin_questionnaire.blade.php
index 76a052e..6476543 100644
--- a/resources/views/admin_backend/admin_questionnaire.blade.php
+++ b/resources/views/admin_backend/admin_questionnaire.blade.php
@@ -15,7 +15,7 @@
{{--! end header --}}
{{--! start table --}}
-
+
NOMOR |
@@ -61,14 +61,14 @@
@@ -104,14 +104,14 @@
@@ -149,13 +149,14 @@
$('.delete-form').click(function(event){
event.preventDefault();
Swal.fire({
- title: 'Are you sure?',
- text: "You won't be able to revert this!",
+ title: 'Yakin untuk dihapus?',
+ text: "Kamu tidak akan bisa mengembalikan ini!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#dc3545',
cancelButtonColor: '#6c757d',
- confirmButtonText: 'Yes, delete it!',
+ confirmButtonText: 'Ya, hapus ini!',
+ cancelButtonText: 'Batalkan',
reverseButtons: true
}).then((result) => {
if (result.isConfirmed) {
diff --git a/resources/views/admin_backend/admin_result.blade.php b/resources/views/admin_backend/admin_result.blade.php
new file mode 100644
index 0000000..1b5c7c9
--- /dev/null
+++ b/resources/views/admin_backend/admin_result.blade.php
@@ -0,0 +1,33 @@
+@extends('admin_backend/layouts.template')
+@section('content')
+
+
+
Hasil Kategori Metakognitif
+
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Explicabo, tempora.
+
+
+
+
+ NAMA |
+ ANGKATAN |
+ TANGGAL |
+ HASIL |
+ ACTION |
+
+
+
+ Fajar Gunawan |
+ 2021 |
+ Apr 23, 2023 |
+ lorem ipsum |
+ |
+
+
+
+
+
+@endsection
+
+@section('script')
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/admin_backend/layouts/sidebar.blade.php b/resources/views/admin_backend/layouts/sidebar.blade.php
index d9bfb57..3165f5e 100644
--- a/resources/views/admin_backend/layouts/sidebar.blade.php
+++ b/resources/views/admin_backend/layouts/sidebar.blade.php
@@ -20,12 +20,19 @@
-
+
Hasil
+
+
+
+ Periode
+
+
+
User
diff --git a/resources/views/admin_backend/layouts/template.blade.php b/resources/views/admin_backend/layouts/template.blade.php
index 6c7233c..f1f83c5 100644
--- a/resources/views/admin_backend/layouts/template.blade.php
+++ b/resources/views/admin_backend/layouts/template.blade.php
@@ -29,9 +29,7 @@
-
-
+
-
+
Kuesioner
diff --git a/resources/views/backend/layouts/template.blade.php b/resources/views/backend/layouts/template.blade.php
index 1766c36..93d9b4e 100644
--- a/resources/views/backend/layouts/template.blade.php
+++ b/resources/views/backend/layouts/template.blade.php
@@ -171,6 +171,49 @@
+
+
+ @if (session('success'))
+
+ @endif
+
+ @if (session('error'))
+
+ @endif