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