Skip to content

Commit 8f34d22

Browse files
authored
Merge pull request #2 from tekno-HMTC/randi
Randi
2 parents 3981f1d + f06233d commit 8f34d22

File tree

3 files changed

+72
-10
lines changed

3 files changed

+72
-10
lines changed

app/Http/Controllers/RoomController.php

Lines changed: 70 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,14 @@
1313
class RoomController extends Controller
1414
{
1515
public function index($id_room){
16-
16+
$room = Room::all()->where('kode', $id_room)->first();
17+
if($room->status == 0){
18+
# waiting room
19+
}
20+
else if($room->status == 1){
21+
$kumpulan_soal = $this->getAllSoalForRoom($room);
22+
return view('room', compact('kumpulan_soal'));
23+
}
1724
}
1825

1926
public function create(){
@@ -42,7 +49,6 @@ public function store(Request $request){
4249
return redirect()->route('soal', $room->kode)->with([
4350
'id_room' => $room->kode
4451
]);
45-
// return redirect('/room/create');
4652
}
4753

4854
public function soal($id_room){
@@ -68,6 +74,11 @@ public function addSoal(Request $request, $id_room){
6874
]);
6975
}
7076

77+
public function soalFromPaketSoal(Request $request){
78+
$soals = Soal::all()->where('paket_id', $request->paket_id);
79+
80+
}
81+
7182
public function start(Request $request, $id_room){
7283
$room = Room::all()->where('kode', $id_room);
7384
$room->status = 1;
@@ -76,40 +87,62 @@ public function start(Request $request, $id_room){
7687
}
7788

7889
public function scoreboard($id_room){
79-
$skors = Skor::all()->where('room_id', $id_room);
80-
$current_skor = array_map(function($skor) {return array(User::find($skor->user_id)->username => (int)$skor->skor);}, $skors);
81-
arsort($current_skor);
90+
$room = Room::all()->where('kode', $id_room)->first();
91+
$room_id = $room->id;
92+
$skors = Skor::where('room_id', $room_id)->orderBy('skor_user', 'desc')->get();
93+
$current_skor = array();
94+
foreach($skors as $skor){
95+
array_push($current_skor, array(User::find($skor->user_id)->username => (int)$skor->skor_user));
96+
}
8297
$data = $current_skor;
8398
return view('scoreboard', compact('data'));
8499
}
85100

101+
public function scoreboard_data($id_room){
102+
$room = Room::all()->where('kode', $id_room)->first();
103+
$room_id = $room->id;
104+
$skors = Skor::where('room_id', $room_id)->orderBy('skor_user', 'desc')->get();
105+
$current_skor = array();
106+
foreach($skors as $skor){
107+
array_push($current_skor, array(User::find($skor->user_id)->username => (int)$skor->skor_user));
108+
}
109+
$data = $current_skor;
110+
return compact('data');
111+
}
112+
86113
public function submit(Request $request){
87114
$jawaban = new Jawaban();
88115
$jawaban->soal_id = $request->soal_id;
89116
$jawaban->user_id = $request->user_id;
90117
$jawaban->jawaban = $request->jawaban;
91118
$jawaban->save();
92-
$this->updateScoreBoard($request);
119+
$benar = $this->updateScoreBoard($request);
93120
//broadcast
121+
return redirect()->route('room.scoreboard', ['id_room' => $request->id_room])->with([
122+
'benar' => $benar
123+
]);
94124
}
95125

96126
private function updateScoreBoard($request){
97127
$soal = Soal::all()->find($request->soal_id);
98128
$score = 0;
129+
$benar = 0;
99130
if($request->jawaban == $soal->jawaban){
100-
$remaining_time = 300 - $request->elapsed_time;
101-
$percentage = $remaining_time/300;
131+
$remaining_time = 15 - $request->elapsed_time;
132+
$percentage = $remaining_time/15;
102133
$score = 100 * $percentage;
134+
$benar = 1;
103135
}
104136
$skor = $this->checkIfScoreExisted($request->room_id, $request->user_id);
137+
$room = Room::all()->where('kode', $request->id_room)->first();
105138
if(!$skor){
106139
$skor = new Skor();
107140
$skor->user_id = $request->user_id;
108-
$skor->room_id = $request->room_id;
141+
$skor->room_id = $room->id;
109142
$skor->skor_user = 0;
110143
}
111144
$skor->skor_user = $skor->skor_user + $score;
112-
145+
return $benar;
113146
}
114147

115148
private function checkIfScoreExisted($room_id, $user_id){
@@ -131,4 +164,31 @@ private function generateRandomString($length=10){
131164
}
132165
return $randomString;
133166
}
167+
168+
private function getAllSoalForRoom($room){
169+
$paket_soal = $room->paket_id;
170+
$paket_soal = explode('|', $paket_soal);
171+
$kumpulan_soal = array();
172+
foreach($paket_soal as $paket){
173+
$kumpulan_soal = array_merge($kumpulan_soal, $this->getSoalFromPaket($paket));
174+
}
175+
return $kumpulan_soal;
176+
}
177+
178+
private function getSoalFromPaket($id_paket){
179+
$soals = Soal::all()->where('paket_id', $id_paket);
180+
$kumpulan_soal = array();
181+
foreach($soals as $soal){
182+
array_push($kumpulan_soal, $this->translateSoal($soal));
183+
}
184+
return $kumpulan_soal;
185+
}
186+
187+
private function translateSoal($soal){
188+
$translated = array(
189+
'soal' => $soal->soal,
190+
'jawaban' => unserialize($soal->pilihan)
191+
);
192+
return $translated;
193+
}
134194
}

resources/views/room/soal.blade.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
@extends('master')
22
@section('css')
3+
{{dd(session('abcd'))}}
34
<style>
45
html, body {
56
background-color: #fff;

routes/web.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
Route::get('/soal', 'RoomController@soal')->name('soal');
3535
Route::post('/soal', 'RoomController@addSoal')->name('soal.add');
3636
Route::get('/scoreboard', 'RoomController@scoreboard')->name('room.scoreboard');
37+
Route::get('/scoreboard/data', 'RoomController@scoreboard_data')->name('room.scoreboard.data');
3738
Route::post('/submit', 'RoomController@submit')->name('room.submit');
3839
Route::post('/start', 'RooomController@start')->name('room.start');
3940
});

0 commit comments

Comments
 (0)