iclop_v1/app/Http/Controllers/python/ResultController.php
2022-10-08 15:04:23 +07:00

221 lines
7.7 KiB
PHP

<?php
namespace App\Http\Controllers\python;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
class ResultController extends Controller
{
public function index() {
$dt_hasil = array();
// ambil hasil berdasarkan id user
$hasil = DB::table("python_students_validation")->select('python_students_validation.*', 'nama_percobaan', 'nama', 'bab', 'no_percobaan', 'checkresult')
->join('python_percobaan', 'python_percobaan.id_percobaan', '=', 'python_students_validation.id_percobaan')
->join('python_students_submit', 'python_students_submit.id_submit', '=', 'python_students_validation.id_submit')
->join('python_topics', 'python_topics.id_topik', '=', 'python_students_submit.id_topic')
->where('python_students_validation.userid', Auth::id())->get();
// $test = DB::table("python_students_validation")->select('python_students_validation.*')
// ->join('python_percobaan', 'python_percobaan.id_percobaan', '=', 'python_students_validation.id_percobaan')
// ->join('python_students_submit', 'python_students_submit.id_submit', '=', 'python_students_validation.id_submit')
// ->where('python_students_validation.userid', Auth::id())->get();
// print_r( $test );
foreach ( $hasil AS $isi_kolom ) {
// id_mahasiswa (id yang mengerjakan)
$id_user = $isi_kolom->userid;
// ambil informasi data user berdasarkan id_mahasiswa
$mhs = DB::table('users')->where('id', $id_user)->first();
$id_dospem = $mhs->uplink;
// ambil informasi data user berdasarkan id_dosen pembimbng mhs
$dosen = DB::table('users')->where('id', $id_dospem)->first();
// tambahkan informasi isi kolom
$isi_kolom->nama_dosen = $dosen->name;
// masukkan ke dalam array dt_hasil
array_push( $dt_hasil, $isi_kolom );
}
// view
return view('student.pythoncourse.python_result.result_student', compact('dt_hasil'));
}
public function student_submit( ) {
$allData = array();
// tampil data topik
$dt_topik = DB::table('python_topics')->get();
foreach ( $dt_topik AS $topik ) {
// echo '<h2>'.$topik->nama.'</h2>';
// tampil data percobaan berdasarkan dt_topik
$dt_percobaan = DB::table('python_percobaan')->where('id_topik', $topik->id_topik)->get();
// tampil data validation (yang telah mengumpulkan dan bernilai PASSED) : mhs
$allPercobaan = array();
foreach ( $dt_percobaan AS $percobaan ) {
$where = [
'id_percobaan' => $percobaan->id_percobaan,
'uplink' => Auth::id() // id_dosen
];
// $dt_validation = DB::table('python_students_validation')->select('python_students_validation.*', 'users.id', 'users.name')
// ->join('users', 'users.id', '=', 'python_students_validation.userid')
// ->where( $where );
// $totalEnroll = $dt_validation->count();
// $dataSubmit = $dt_validation->get();
// array_push( $allPercobaan, array(
// 'percobaan' => $percobaan,
// 'validation' => $dataSubmit,
// 'total' => $totalEnroll,
// ) );
$dt_submit = DB::table("python_students_submit")->select("python_students_submit.*", 'users.id', 'users.name')
->join('users', 'users.id', '=', 'python_students_submit.userid')
->where( $where )->groupBy('python_students_submit.userid');
$totalEnroll = $dt_submit->count();
$dataSubmit = $dt_submit->get();
array_push( $allPercobaan, array(
'percobaan' => $percobaan,
'submitted' => $dataSubmit,
'total' => $totalEnroll,
) );
// echo $percobaan->nama_percobaan.' : '.$totalEnroll.'<br>';
}
array_push( $allData, array(
'topik' => $topik,
'materi'=> $allPercobaan
) );
}
// hitung mahasiswa berdasarkan dospem
$mhs = DB::table('users')->where('uplink', Auth::id())->count();
$dosen = DB::table('users')->where('id', Auth::id())->first();
return view('teacher.python.py_student_results', compact( 'allData', 'mhs', 'dosen' ));
}
// detail
public function detail( $id_topik, $id_percobaan ) {
$allData = array();
// tampil data topik
$topik = DB::table('python_topics')->where('id_topik', $id_topik)->first();
// tampil data percobaan berdasarkan dt_topik
$dt_percobaan = DB::table('python_percobaan')->where('id_percobaan', $id_percobaan)->first();
// tampil data validation (yang telah mengumpulkan dan bernilai PASSED) : mhs
$allPercobaan = array();
$where = [
'id_percobaan' => $id_percobaan,
'uplink' => Auth::id() // id_dosen
];
// $dt_validation = DB::table('python_students_validation')->select('python_students_validation.*', 'users.id', 'users.name', 'checkresult')
// ->join('python_students_submit', 'python_students_submit.id_submit', '=', 'python_students_validation.id_submit')
// ->join('users', 'users.id', '=', 'python_students_validation.userid')
// ->where( $where );
// $totalEnroll = $dt_validation->count();
// $dataSubmit = $dt_validation->get();
// $allPercobaan = array(
// 'percobaan' => $dt_percobaan,
// 'validation' => $dataSubmit,
// 'total' => $totalEnroll,
// );
$allSubmit = array();
$dt_submit = DB::table("python_students_submit")->select("python_students_submit.*", 'users.id', 'users.name')
->join('users', 'users.id', '=', 'python_students_submit.userid')
->where( $where )->groupBy('python_students_submit.userid');
foreach ( $dt_submit->get() as $row ) {
// detail submit
$where = array('python_students_submit.userid' => $row->id, 'python_students_submit.id_percobaan' => $id_percobaan);
$detail = DB::table("python_students_submit")->select("python_students_submit.*", "python_students_validation.*")
->join('python_students_validation', 'python_students_submit.id_submit', '=', 'python_students_validation.id_submit', 'left outer')
->where( $where )->get();
$wherePassed = array_merge( $where, array('checkstat' => "PASSED") );
$cekKondisi = DB::table("python_students_submit")->select("python_students_submit.*")->where( $wherePassed )->count();
$statusPassed = false;
if ( $cekKondisi > 0 ) $statusPassed = true;
array_push( $allSubmit, array(
'infoMhs' => $row,
'log' => $detail,
'status' => $statusPassed
) );
}
// hitung mahasiswa berdasarkan dospem
$mhs = DB::table('users')->where('uplink', Auth::id())->count();
$dosen = DB::table('users')->where('id', Auth::id())->first();
return view('teacher.python.py_student_result_detail', compact( 'allSubmit', 'mhs', 'dosen', 'topik', 'dt_percobaan' ));
}
}