notify_validator();
$total_mhs = 0;
if ( $topic->count() > 0 ) {
foreach ( $topic AS $isi ) {
// count data task
$isi->total = Task::where('android_topic_id', $isi->id)->count();
$total_mhs_bytopik = Enrollment::where('android_topic_id', $isi->id)->whereNotIn('status', ['cancel'])->get()->count();
$isi->enroll = $total_mhs_bytopik;
array_push( $dt_keseluruhan, $isi );
$total_mhs = $total_mhs + $total_mhs_bytopik;
}
}
return view('android.teacher.material', compact('dt_keseluruhan', 'total_mhs', 'notifikasi'));
}
public function lecturer_overview( $id ){
$topic = Topic::findOrFail( $id );
$task = Task::where('android_topic_id', $id)->get();
$dt_enrollment = array();
$enrollment = Enrollment::where('android_topic_id', $id)->get();
foreach ( $enrollment As $isi ) {
// informasi validation
$total_request = 0;
$total_validate = 0;
$user_id = $isi->user->id;
// ambil informasi data testcase
$where = array(
'user_id' => $user_id,
'android_topic_id' => $id
);
$submit = Submits::where($where)->get();
// - - - - - - - -
$NA = 0;
$total_submit = $submit->count();
// - - - - - - - -
if ( $submit->count() > 0 ) {
$total_NA = 0;
foreach ( $submit AS $isi_s ) {
// ambil data testcase
$SubmitstestCase = SubmitstestCase::where("android_submit_id", $isi_s->id)->get();
$isi->testcase = $SubmitstestCase;
// auto
$where_passed = [
'android_submit_id' => $isi_s->id,
'status_validate' => "passed"
];
$test_passed = SubmitstestCase::join("android_testcase", "android_testcase.id", "=", "android_submits_testcase.android_testcase_id")->where($where_passed)->get();
// ambil informasi data task untuk memanggil bobot
$info_testcase = Testcase::where("task_id", $isi_s->android_task_id)->get();
$bobot = 0;
foreach ( $info_testcase AS $isiit ) {
$bobot += $isiit->score;
}
$skor = 0;
foreach ( $test_passed AS $isitp ) {
$skor += $isitp->score;
}
$nilai = 0;
if ( $skor > 0 && $bobot > 0 ) {
$nilai = $skor / $bobot * 100;
}
$total_NA += $nilai;
// autograding
// $passed = 0;
// foreach ( $SubmitstestCase AS $det ) {
// if ( $det->status_validate == "passed" ) {
// $passed++;
// }
// }
// $total_NA += ($passed / $SubmitstestCase->count() * 100);
}
// echo $total_submit;
$NA = $total_NA / $total_submit;
$total_request = $submit->count();
foreach ( $submit AS $det ) {
if ( $det->validator == "validated" ) $total_validate++;
}
}
$progress = 0;
$total_task = Task::where("android_topic_id", $isi->android_topic_id)->count();
$status = $isi->status;
// check progress
if ( $status != "cancel") {
$task_waiting = Task_waiting::where( $where );
$total_task_waiting = $task_waiting->count();
if ( $total_task_waiting > 0 ) {
$info = Task::find( $task_waiting->first()->android_task_id );
$progress = $total_task_waiting / $total_task * 100;
}
}
$isi->total_request = $total_request;
$isi->total_validate = $total_validate;
$isi->NA = $NA;
$isi->progress = $progress;
array_push( $dt_enrollment, $isi );
}
$data = array(
'task' => $task,
'topic' => $topic,
'enrollment' => $dt_enrollment
);
// print_r( $Enrollment->user->name );
return view('android.teacher.overview', $data);
}
public function lecturer_waiting() {
// ambil data
$dt_keseluruhan = array();
$topic = Topic::all();
$notifikasi = $this->notify_validator();
$total_mhs = 0;
if ( $topic->count() > 0 ) {
foreach ( $topic AS $isi ) {
// count data task
$isi->total = Task::where('android_topic_id', $isi->id)->count();
$total_mhs_bytopik = Enrollment::where('android_topic_id', $isi->id)->whereNotIn('status', ['cancel'])->get()->count();
$isi->enroll = $total_mhs_bytopik;
array_push( $dt_keseluruhan, $isi );
$total_mhs = $total_mhs + $total_mhs_bytopik;
}
}
/* Cek */
$submits = Submits::where('validator', 'process')->get();
$dt_need_validator = array();
if ( $submits->count() > 0 ) {
// group by
$dt_submit_topic = array();
foreach ( $submits AS $index => $isi ) {
if ( $index > 0 ) {
$find = in_array($isi->android_topic_id, array_column($dt_submit_topic, 'android_topic_id'));
if ( $find == false ) {
array_push( $dt_submit_topic, [
'android_topic_id' => $isi->android_topic_id,
]);
}
continue;
} else {
array_push( $dt_submit_topic, [
'android_topic_id' => $isi->android_topic_id,
]);
}
}
// akumulasi mahasiswa
foreach ( $dt_submit_topic AS $isi ) {
$where = array(
'android_topic_id' => $isi,
'validator' => "process"
);
$all_mhs = Submits::where($where)->get();
$jumlah = $all_mhs->count();
$dt_all_mahasiswa_by_topic = array();
$title = "";
if ( $jumlah > 0 ) {
foreach ( $all_mhs AS $mhs ) {
$title = $mhs->topic->title;
array_push( $dt_all_mahasiswa_by_topic, $mhs );
}
}
// push to validator
array_push( $dt_need_validator, [
'android_topic_id' => $isi,
'title' => $title,
'jumlah' => $jumlah,
'all_mhs' => $dt_all_mahasiswa_by_topic
]);
}
}
return view('android.teacher.validator_waiting', compact('notifikasi', 'total_mhs', 'dt_need_validator'));
}
// detail task
public function lecturer_waiting_preview( $id_submit ) {
$submit = Submits::findOrFail( $id_submit );
// $testcase = SubmitstestCase::where("android_submit_id", $id_submit)->->get();
$testcase = SubmitstestCase::join("android_testcase", "android_testcase.id", "=", "android_submits_testcase.android_testcase_id")->where("android_submit_id", $id_submit)->select("android_submits_testcase.*", "case", "score")->get();
// echo json_encode($testcase);
return view('android.teacher.validator_detail', compact('submit', 'testcase'));
}
// do validate
public function lecturer_do_validate( $id_testcase, $android_submit_id ) {
// update all status waiting to failed (default)
$where = array(
'android_submit_id' => $android_submit_id,
'status_validate' => "waiting"
);
SubmitstestCase::where($where)->update(['status_validate' => "failed"]);
$submittestcase = SubmitstestCase::findOrFail( $id_testcase );
$submit = Submits::findOrFail( $android_submit_id );
$submit->validator = "validated";
$submit->save();
if ( $submittestcase->status_validate == "failed" ) {
$submittestcase->status_validate = "passed";
} else if ( $submittestcase->status_validate == "passed" ) {
$submittestcase->status_validate = "failed";
}
$submittestcase->save();
// echo $;
// return "oke";
}
public function lecturer_load_point_testcase( $android_submit_id ) {
$where = [
'android_submit_id' => $android_submit_id,
'status_validate' => "passed"
];
$test_passed = SubmitstestCase::join("android_testcase", "android_testcase.id", "=", "android_submits_testcase.android_testcase_id")->where($where)->get();
// ambil data submit berdasarkan id
$submit = Submits::findOrFail( $android_submit_id );
$task = Task::findOrFail( $submit->android_task_id );
$info_testcase = Testcase::where("task_id", $task->id)->get();
$bobot = 0;
foreach ( $info_testcase AS $isi ) {
$bobot += $isi->score;
}
$skor = 0;
foreach ( $test_passed AS $isi ) {
$skor += $isi->score;
}
// hitung bobot per testcase
$nilai = 0;
if ( $skor > 0 && $bobot > 0 ) {
$nilai = $skor / $bobot * 100;
}
echo json_encode(["point" => number_format($nilai, 2), "bobot" => $bobot, 'skor' => $test_passed->count()]);
}
// overview student
public function lecturer_overview_student( $topic_id, $user_id ) {
$enrollment = Enrollment::where('android_topic_id', $topic_id)->first();
$user = User::findOrFail( $user_id );
$where = array(
'android_topic_id' => $topic_id,
'user_id' => $user_id
);
$submit = Submits::where( $where )->get();
$dt_keseluruhan = array();
$NA = 0;
if ( $submit->count() > 0 ) {
$total_NA = 0;
$total_submit = $submit->count();
foreach ( $submit AS $isi ) {
// ambil data info nilai yang passed
$where_passed = [
'android_submit_id' => $isi->id,
'status_validate' => "passed"
];
// $test_passed = SubmitstestCase::where($where_passed)->get();
$test_passed = SubmitstestCase::join("android_testcase", "android_testcase.id", "=", "android_submits_testcase.android_testcase_id")->where($where_passed)->get();
// ambil informasi data task untuk memanggil bobot
$info_testcase = Testcase::where("task_id", $isi->android_task_id)->get();
$bobot = 0;
// $dt = [];
foreach ( $info_testcase AS $isiit ) {
$bobot += $isiit->score;
}
$skor = 0;
foreach ( $test_passed AS $isitp ) {
$skor += $isitp->score;
}
// hitung bobot per testcase
$nilai = 0;
if ( $skor > 0 && $bobot > 0 ) {
$nilai = $skor / $bobot * 100;
}
// ambil data testcase
$isi->testcase = SubmitstestCase::join("android_testcase", "android_testcase.id", "=", "android_submits_testcase.android_testcase_id")->where('android_submit_id', $isi->id)->get();
$isi->nilai = $nilai;
$isi->bobot = $bobot;
// echo $nilai.' = '.($nilai / $bobot * 100);
// echo "
";
// autograding
$total_NA += $nilai;
// echo $nilai;
// echo "