MIF_E31210385/Modules/User/Http/Controllers/KuesionerController.php

146 lines
6.1 KiB
PHP

<?php
namespace Modules\User\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use DataTables;
use App\Models\Jadwal;
use App\Models\Kelas;
use App\Models\Guru;
use App\Models\Pertanyaan;
use App\Models\Kuesioner;
use App\Models\Answer;
use App\Models\Summary;
use App\Models\Temp;
use Carbon\Carbon;
class KuesionerController extends Controller
{
public function index(Request $request)
{
$data = [
'subtitle' => 'Kuesioner',
];
$kuesioner = Kuesioner::where('status', 1)->orderBy('id', 'desc')->limit(1)->get();
return view('user::kuesioner.index', compact('data', 'kuesioner'));
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'questionnaire_id' => 'required',
]);
if ($validator->fails()) {
return redirect()->back()->with('error', $validator->errors()->first());
}
$data = [];
$questionnaire_id = $request->input('questionnaire_id');
$i = 0;
foreach(Pertanyaan::all() as $query) {
$i++;
$question_id = $request->input('question_id_' . $i);
$expectation_answer = $request->input('expectation_answer_' . $i);
$reality_answer = $request->input('reality_answer_' . $i);
$temp_data = [
'question_id' => $question_id,
'questionnaire_id' => $questionnaire_id,
'name' => user()->id,
'expectation_answer' => $expectation_answer,
'reality_answer' => $reality_answer
];
array_push($data, $temp_data);
}
Answer::insert($data);
foreach($data as $value) {
$value = (object) $value;
$check_expectation = Summary::where('question_id', $value->question_id)->where('type', 'expectation')->where('gap', $value->expectation_answer);
$check_reality = Summary::where('question_id', $value->question_id)->where('type', 'reality')->where('gap', $value->reality_answer);
if($check_expectation->count() > 0) {
$fetch_data = $check_expectation->first();
$data = [
'sum_total_answerer' => $fetch_data->sum_total_answerer+1,
'sum_total_point' => $fetch_data->sum_total_point+$value->expectation_answer
];
$update = Summary::where('question_id', $value->question_id)->where('type', 'expectation')->where('gap', $value->expectation_answer)->update($data);
} else {
$data = [
'gap' => $value->expectation_answer,
'type' => 'expectation',
'question_id' => $value->question_id,
'questionnaire_id' => $value->questionnaire_id,
'sum_total_answerer' => 1,
'sum_total_point' => $value->expectation_answer
];
$insert = Summary::insert($data);
}
if($check_reality->count() > 0) {
$fetch_data = $check_reality->first();
$data = [
'sum_total_answerer' => $fetch_data->sum_total_answerer+1,
'sum_total_point' => $fetch_data->sum_total_point+$value->reality_answer
];
$update = Summary::where('question_id', $value->question_id)->where('type', 'reality')->where('gap', $value->reality_answer)->update($data);
} else {
$data = [
'gap' => $value->reality_answer,
'type' => 'reality',
'question_id' => $value->question_id,
'questionnaire_id' => $value->questionnaire_id,
'sum_total_answerer' => 1,
'sum_total_point' => $value->reality_answer
];
$insert = Summary::insert($data);
}
$get_data = Temp::where('question_id', $value->question_id)->where('questionnaire_id', $value->questionnaire_id)->first();
if($get_data) {
$data = [
'sum_expectation_answer' => $get_data->sum_expectation_answer+$value->expectation_answer,
'sum_reality_answer' => $get_data->sum_reality_answer+$value->reality_answer,
'sum_total_answerer' => $get_data->sum_total_answerer+1,
'sum_expectation_average' => round($get_data->sum_expectation_answer+$value->expectation_answer/($get_data->sum_total_answerer+1), 2),
'sum_reality_average' => round($get_data->sum_reality_answer+$value->reality_answer/($get_data->sum_total_answerer+1), 2),
'sum_gap5' => round((round($get_data->sum_reality_answer+$value->reality_answer/($get_data->sum_total_answerer+1), 2))-(round($get_data->sum_expectation_answer+$value->expectation_answer/($get_data->sum_total_answerer+1), 2)), 2)
];
$update = Temp::where('question_id', $value->question_id)->where('questionnaire_id', $value->questionnaire_id)->update($data);
} else {
$data = [
'questionnaire_id' => $value->questionnaire_id,
'question_id' => $value->question_id,
'sum_expectation_answer' => $value->expectation_answer,
'sum_reality_answer' => $value->reality_answer,
'sum_total_answerer' => 1,
'sum_expectation_average' => round($value->expectation_answer, 2),
'sum_reality_average' => round($value->reality_answer, 2),
'sum_gap5' => round((round($value->reality_answer, 2))-(round($value->expectation_answer, 2)), 2)
];
$insert = Temp::insert($data);
}
}
return redirect()->back()->with('success', 'Kuesioner anda telah selesai. Kami ucapkan terima kasih atas penilaiannya.');
}
}