Skip to content

Commit ab99b90

Browse files
Added basic checking flow
1 parent d8c3cc1 commit ab99b90

File tree

10 files changed

+299
-30
lines changed

10 files changed

+299
-30
lines changed

.env.example

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
APP_NAME=Digikaksha
2+
APP_ENV=local
3+
APP_KEY=
4+
APP_DEBUG=true
5+
APP_URL=http://localhost
6+
7+
LOG_CHANNEL=stack
8+
9+
DB_CONNECTION=mysql
10+
DB_HOST=127.0.0.1
11+
DB_PORT=3306
12+
DB_DATABASE=digikaksha
13+
DB_USERNAME=root
14+
DB_PASSWORD=
15+
16+
BROADCAST_DRIVER=log
17+
CACHE_DRIVER=file
18+
QUEUE_CONNECTION=sync
19+
SESSION_DRIVER=file
20+
SESSION_LIFETIME=120
21+
22+
REDIS_HOST=127.0.0.1
23+
REDIS_PASSWORD=null
24+
REDIS_PORT=6379
25+
26+
MAIL_MAILER=smtp
27+
MAIL_HOST=smtp.mailtrap.io
28+
MAIL_PORT=2525
29+
MAIL_USERNAME=null
30+
MAIL_PASSWORD=null
31+
MAIL_ENCRYPTION=null
32+
MAIL_FROM_ADDRESS=null
33+
MAIL_FROM_NAME="${APP_NAME}"
34+
35+
AWS_ACCESS_KEY_ID=
36+
AWS_SECRET_ACCESS_KEY=
37+
AWS_DEFAULT_REGION=us-east-1
38+
AWS_BUCKET=
39+
40+
PUSHER_APP_ID=
41+
PUSHER_APP_KEY=
42+
PUSHER_APP_SECRET=
43+
PUSHER_APP_CLUSTER=mt1
44+
45+
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
46+
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
47+
GOOGLE_CLOUD_KEY=

app/Http/Controllers/AnnouncementsController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public function store(Request $request)
4747
$announcement->graded=1;
4848
$announcement->max_grade = $request->input('max_grade');
4949
$announcement->component = $request->input('component');
50+
$announcement->answer = $request->input('answer');
5051
}
5152
else $announcement->graded=0;
5253
$announcement->user_id = auth()->user()->id;

app/Http/Controllers/SubmissionsController.php

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
namespace App\Http\Controllers;
44

55
use Illuminate\Http\Request;
6-
6+
use GoogleCloudVision\GoogleCloudVision;
7+
use GoogleCloudVision\Request\AnnotateImageRequest;
78
class SubmissionsController extends Controller
89
{
910
/**
@@ -47,6 +48,22 @@ public function store(Request $request)
4748
$submission = new \App\Submission();
4849
$submission->announcement_id = $request->input('announcement');
4950
$submission->body = $request->input('body');
51+
if($request->hasFile('photos')){
52+
$files = $request->file("photos");
53+
$body = "";
54+
foreach($files as $file){
55+
$image = base64_encode(file_get_contents($file));
56+
$request = new AnnotateImageRequest();
57+
$request->setImage($image);
58+
$request->setFeature("DOCUMENT_TEXT_DETECTION");
59+
$gcvRequest = new GoogleCloudVision([$request], env('GOOGLE_CLOUD_KEY'));
60+
$response = $gcvRequest->annotate();
61+
$body .= $response->responses[0]->textAnnotations[0]->description;
62+
}
63+
$body = trim(preg_replace('/\s+/', ' ', $body));
64+
$submission->body = $body;
65+
}
66+
$submission->auto_grade = $this->calc_sim($submission->body, $announcement->answer)*$announcement->max_grade;
5067
$submission->user_id = auth()->user()->id;
5168
$submission->save();
5269
return redirect('/announcements'.'/'.$announcement->id)->with('status', 'Submission done!');
@@ -115,6 +132,16 @@ public function destroy($id)
115132
//
116133
}
117134

135+
public function calc_sim($text1, $text2){
136+
$uri ="https://twinword-text-similarity-v1.p.rapidapi.com/similarity/?text1=".urlencode($text1)."&text2=".urlencode($text2);
137+
$response = \Unirest\Request::get("$uri",
138+
array(
139+
"X-RapidAPI-Key" => "0d4592612amsh2e69e9506883a6cp128a49jsn81286e4ac028"
140+
)
141+
);
142+
return $response->body->similarity;
143+
}
144+
118145
public function isValid($announcement)
119146
{
120147
$flag = false;

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
"guzzlehttp/guzzle": "^6.3",
1515
"laravel/framework": "^7.0",
1616
"laravel/tinker": "^2.0",
17-
"laravel/ui": "^2.0"
17+
"laravel/ui": "^2.0",
18+
"mashape/unirest-php": "^3.0",
19+
"wapnen/google-cloud-vision-php": "dev-master"
1820
},
1921
"require-dev": {
2022
"facade/ignition": "^2.0",

composer.lock

Lines changed: 104 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
class AddAutoGradeToSubmissionsTable extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('submissions', function (Blueprint $table) {
17+
//
18+
$table->float('auto_grade')->nullable();
19+
});
20+
}
21+
22+
/**
23+
* Reverse the migrations.
24+
*
25+
* @return void
26+
*/
27+
public function down()
28+
{
29+
Schema::table('submissions', function (Blueprint $table) {
30+
//
31+
});
32+
}
33+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
class AddAnswerColumnToAnnouncementsTable extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('announcements', function (Blueprint $table) {
17+
//
18+
$table->text('answer')->nullable();
19+
});
20+
}
21+
22+
/**
23+
* Reverse the migrations.
24+
*
25+
* @return void
26+
*/
27+
public function down()
28+
{
29+
Schema::table('announcements', function (Blueprint $table) {
30+
//
31+
});
32+
}
33+
}

0 commit comments

Comments
 (0)