From f47dc3f3e1adfcb836623ecad1ea7940cf4d4c27 Mon Sep 17 00:00:00 2001 From: Kurniandha Sukma Yunastrian <13516106@std.stei.itb.ac.id> Date: Mon, 13 Apr 2020 00:01:05 +0700 Subject: [PATCH] edit submit schema --- app/Http/Controllers/AutograderController.php | 83 +++++++++++++++++++ app/Http/Controllers/LearnController.php | 62 ++------------ resources/views/course.blade.php | 4 +- routes/web.php | 10 +-- 4 files changed, 98 insertions(+), 61 deletions(-) create mode 100644 app/Http/Controllers/AutograderController.php diff --git a/app/Http/Controllers/AutograderController.php b/app/Http/Controllers/AutograderController.php new file mode 100644 index 0000000..8342575 --- /dev/null +++ b/app/Http/Controllers/AutograderController.php @@ -0,0 +1,83 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Google_Client; + +class AutograderController extends Controller +{ + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('auth'); + } + + /** + * Submit Spreadsheet. + * + * @return Score + */ + public function index($id_course, $id_topic, Request $request) + { + $answer_keys = DB::table('spreadsheets')->where('id', $id_topic)->get(); + $cells = []; + $keys = []; + foreach($answer_keys as $answer_key) { + $cells[] = 'Sheet1!' . $answer_key->cell; + $keys[] = $answer_key->value; + } + + $answers = AutograderController::getStudentAnswer($request->id_spreadsheet, $cells); + } + + /** + * Get data from spreadsheet. + * + * @return answer + */ + public function getStudentAnswer($id_spreadsheet, $ranges) + { + $client = new Google_Client(); + $client->setApplicationName('Datalearn'); + $client->setAuthConfig(__DIR__.'/credentials.json'); + $client->addScope(\Google_Service_Sheets::SPREADSHEETS); + $client->setAccessType('offline'); + + $service = new \Google_Service_Sheets($client); + + $responses = $service->spreadsheets_values->batchGet($id_spreadsheet, [ + 'valueRenderOption' => 'FORMULA', + 'dateTimeRenderOption' => 'SERIAL_NUMBER', + 'ranges' => $ranges + ]); + + $answers = []; + foreach ($responses->valueRanges as $response) { + if ($response->values == NULL) { + $answers[] = NULL; + } else { + $answers[] = strval(($response->values)[0][0]); + } + } + + return $answers; + } + + public function test() + { + $j = []; + $j[] = 'haah'; + $j[] = NULL; + $j[] = '=gg'; + + foreach($j as $k) { + echo $k . "\n"; + } + } +} diff --git a/app/Http/Controllers/LearnController.php b/app/Http/Controllers/LearnController.php index 91a8b8b..303f277 100644 --- a/app/Http/Controllers/LearnController.php +++ b/app/Http/Controllers/LearnController.php @@ -23,18 +23,19 @@ class LearnController extends Controller * * @return \Illuminate\Contracts\Support\Renderable */ - public function index($id_course, $id_spreadsheet) + public function index($id_course, $id_topic) { + $topic = DB::table('topics')->where('id', $id_topic)->first(); + $content = $topic->content; + $client = LearnController::getClient(); $service = new \Google_Service_Drive($client); $copy = new \Google_Service_Drive_DriveFile(); - $response = $service->files->copy($id_spreadsheet, $copy); + $response = $service->files->copy($topic->id_spreadsheet, $copy); $permission_response = LearnController::edit_permission($response->id); - $topic = DB::table('topics')->where('id_spreadsheet', $id_spreadsheet)->first(); - $content = $topic->content; return view('learn', ['id_spreadsheet' => $response->id, 'content' => $content]); } @@ -96,10 +97,10 @@ class LearnController extends Controller * * @return view */ - public function edit($id_course, $id_spreadsheet) + public function edit($id_course, $id_topic) { - $topic = DB::table('topics')->where('id_spreadsheet', $id_spreadsheet)->first(); - return view('edit', ['id_spreadsheet' => $id_spreadsheet, 'topic' => $topic]); + $topic = DB::table('topics')->where('id', $id_topic)->first(); + return view('edit', ['id_spreadsheet' => $topic->id_spreadsheet, 'topic' => $topic]); } /** @@ -120,53 +121,6 @@ class LearnController extends Controller ]); } - /** - * Submit Spreadsheet. - * - * @return Score - */ - public function submit(Request $request) - { - $id = $request->id_spreadsheet; - $client = LearnController::getClient(); - $service = new \Google_Service_Sheets($client); - - $ranges = []; - $ranges[] = 'Sheet1!A1'; - $ranges[] = 'Sheet1!A2'; - $ranges[] = 'Sheet1!A3'; - $responses = $service->spreadsheets_values->batchGet($request->id_spreadsheet, [ - 'valueRenderOption' => 'FORMULA', - 'dateTimeRenderOption' => 'SERIAL_NUMBER', - 'ranges' => $ranges - ]); - - foreach ($responses->valueRanges as $response) { - if ($response->values == NULL) { - echo "Kosong \n"; - } else { - echo '<pre>', var_export(strval(($response->values)[0][0]), true), '</pre>', "\n"; - } - } - } - - public function test() - { - $answer = DB::table('spreadsheets')->where('id', 1)->get(); - $j = []; - foreach($answer as $a) { - $j[] = 'Sheet1!' . $a->cell; - } - - var_dump($j); - - $ranges = []; - $ranges[] = 'Sheet1!A1'; - $ranges[] = 'Sheet1!A2'; - $ranges[] = 'Sheet1!A3'; - var_dump($ranges); - } - /** * Returns an authorized API client. * @return Google_Client the authorized client object diff --git a/resources/views/course.blade.php b/resources/views/course.blade.php index ebb19b8..e2adfd3 100644 --- a/resources/views/course.blade.php +++ b/resources/views/course.blade.php @@ -32,9 +32,9 @@ <div class="card-body"> {{ $topic->content }} <br/> <br/> @if(Auth::user()->role == 1) - <a href="<?php echo $topic->id_course; ?>/learn/<?php echo $topic->id_spreadsheet; ?>/edit" class="btn btn-primary" role="button">Buka Topik</a> + <a href="<?php echo $topic->id_course; ?>/learn/<?php echo $topic->id; ?>/edit" class="btn btn-primary" role="button">Buka Topik</a> @else - <a href="<?php echo $topic->id_course; ?>/learn/<?php echo $topic->id_spreadsheet; ?>" class="btn btn-primary" role="button">Buka Topik</a> + <a href="<?php echo $topic->id_course; ?>/learn/<?php echo $topic->id; ?>" class="btn btn-primary" role="button">Buka Topik</a> @endif </div> </div> diff --git a/routes/web.php b/routes/web.php index 5311d3c..7b30b80 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,10 +18,10 @@ Route::get('/', function () { Auth::routes(); Route::get('/home', 'HomeController@index')->name('home'); -Route::get('/test', 'LearnController@test')->name('test'); +Route::get('/test', 'AutograderController@test')->name('test'); Route::get('/course/{id_course}', 'CourseController@index')->name('course'); Route::post('/course/{id_course}/learn/new', 'LearnController@new')->name('learn/new'); -Route::get('/course/{id_course}/learn/{id_spreadsheet}', 'LearnController@index')->name('learn'); -Route::get('/course/{id_course}/learn/{id_spreadsheet}/edit', 'LearnController@edit')->name('edit'); -Route::post('/course/{id_course}/learn/{id_spreadsheet}/edit/save', 'LearnController@save')->name('edit/save'); -Route::post('/course/{id_course}/learn/{id_spreadsheet}/submit', 'LearnController@submit')->name('learn/submit'); \ No newline at end of file +Route::get('/course/{id_course}/learn/{id_topic}', 'LearnController@index')->name('learn'); +Route::get('/course/{id_course}/learn/{id_topic}/edit', 'LearnController@edit')->name('edit'); +Route::post('/course/{id_course}/learn/{id_topic}/edit/save', 'LearnController@save')->name('edit/save'); +Route::post('/course/{id_course}/learn/{id_topic}/submit', 'AutograderController@index')->name('autograder'); \ No newline at end of file -- GitLab