Skip to content

Commit

Permalink
Submissions WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
jayar95 committed Mar 8, 2018
1 parent f4237eb commit f3a38a1
Show file tree
Hide file tree
Showing 11 changed files with 65 additions and 63 deletions.
23 changes: 12 additions & 11 deletions app/Http/Controllers/AuthController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;

class AuthController extends Controller {
/**
* @return void
* AuthController constructor.
*/
public function __construct() {
$this->middleware('auth:api', ['except' => ['login']]);
Expand All @@ -14,9 +15,9 @@ public function __construct() {
/**
* @param Request $request
*
* @return \Illuminate\Http\JsonResponse
* @return JsonResponse
*/
public function login(Request $request) {
public function login(Request $request): JsonResponse {
$this->validate($request, [
'email' => 'required',
'password' => 'required'
Expand All @@ -34,16 +35,16 @@ public function login(Request $request) {
}

/**
* @return \Illuminate\Http\JsonResponse
* @return JsonResponse
*/
public function me() {
public function me(): JsonResponse {
return response()->json(auth()->user());
}

/**
* @return \Illuminate\Http\JsonResponse
* @return JsonResponse
*/
public function logout() {
public function logout(): JsonResponse {
auth()->logout();

return response()->json([
Expand All @@ -52,18 +53,18 @@ public function logout() {
}

/**
* @return \Illuminate\Http\JsonResponse
* @return JsonResponse
*/
public function refresh() {
public function refresh(): JsonResponse {
return $this->respondWithToken(auth()->refresh());
}

/**
* @param string $token
*
* @return \Illuminate\Http\JsonResponse
* @return JsonResponse
*/
protected function respondWithToken($token) {
protected function respondWithToken($token): JsonResponse {
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
Expand Down
5 changes: 1 addition & 4 deletions app/Http/Controllers/RegisterController.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<?php

namespace App\Http\Controllers;

use App\User;
Expand All @@ -12,9 +11,7 @@ class RegisterController extends Controller {
use RegistersUsers;

/**
* Create a new controller instance.
*
* @return void
* RegisterController constructor.
*/
public function __construct() {
$this->middleware('guest');
Expand Down
27 changes: 27 additions & 0 deletions app/Http/Controllers/RiddleController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
namespace App\Http\Controllers;

use App\Riddle;
use App\RiddleAnswer;
use App\Submission;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

Expand All @@ -21,6 +23,9 @@ class RiddleController extends Controller {
'answer' => 'required',
];

/**
* RiddleController constructor.
*/
public function __construct() {
$this->middleware('auth:api');
}
Expand Down Expand Up @@ -94,6 +99,11 @@ public function delete(Request $request, Riddle $riddle): JsonResponse {
public function createSubmission(Request $request, Riddle $riddle): JsonResponse {
$this->validate($request, $this->validateSubmissionFields);

if ($riddle->maxSubmissionCount === $riddle->getSubmissionCountByUser(auth()->user()))
return response()->json([
'message' => 'Max submission limit reached.',
], 200);

$submission = Submission::create([
'answer' => $request->get('answer'),
'user_id' => auth()->user()->id,
Expand All @@ -102,4 +112,21 @@ public function createSubmission(Request $request, Riddle $riddle): JsonResponse

return response()->json($submission->toJson(), 201);
}

/**
* @param Request $request
* @param Riddle $riddle
*
* @return JsonResponse
*/
public function createAnswer(Request $request, Riddle $riddle): JsonResponse {
$this->validate($request, ['answer' => 'required']);

$answer = RiddleAnswer::create([
'answer' => $request->get('answer'),
'riddle_id' => $riddle->id,
]);

return response()->json($answer->toJson(), 201);
}
}
35 changes: 0 additions & 35 deletions app/Http/Controllers/SubmissionController.php

This file was deleted.

1 change: 0 additions & 1 deletion app/Http/Middleware/StaffCheck.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<?php

namespace App\Http\Middleware;

use App\Exceptions\PermissionDeniedException;
Expand Down
11 changes: 11 additions & 0 deletions app/Riddle.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,15 @@ class Riddle extends Model {
public function winner() {
return $this->hasOne('App\User', 'winner');
}

/**
* @param User $user
*
* @return int
*/
public function getSubmissionCountByUser(User $user): int {
return Submission::where('riddle_id', $this->id)
->where('user_id', $user->id)
->count();
}
}
5 changes: 3 additions & 2 deletions app/RiddleAnswer.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class RiddleAnswer extends Model {
protected $fillable = [
Expand All @@ -10,9 +11,9 @@ class RiddleAnswer extends Model {
];

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
* @return BelongsTo
*/
public function riddle() {
public function riddle(): BelongsTo {
return $this->belongsTo('App\Riddle');
}
}
9 changes: 8 additions & 1 deletion app/Submission.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,22 @@
namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Submission extends Model {
/**
* @var array
*/
protected $fillable = [
'user_id',
'answer',
'riddle_id'
];

public function user() {
/**
* @return BelongsTo
*/
public function user(): BelongsTo {
return $this->belongsTo('App\User');
}
}
1 change: 0 additions & 1 deletion app/User.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<?php

namespace App;

use Tymon\JWTAuth\Contracts\JWTSubject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public function up() {
$table->longText('content')->nullable(false);
$table->string('title', 255)->nullable(false);
$table->integer('winner')->unsigned()->nullable(true);
$table->integer('max_submission_count')->unsigned();
$table->softDeletes();
$table->timestamps();

Expand Down
10 changes: 2 additions & 8 deletions routes/api.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
<?php
use App\Http\Resources\RiddleResource;
use App\Riddle;
use App\Http\Resources\SubmissionResource;
use App\Submission;

Route::group([
'middleware' => 'api',
Expand All @@ -26,10 +24,6 @@

Route::delete('riddle/{riddle}', 'RiddleController@delete')->middleware('staff.check');

Route::post('riddle/{riddle}/submissions', 'SubmissionController@create')->middleware('staff.check');
Route::post('riddle/{riddle}/submissions', 'RiddleController@createSubmission')->middleware('staff.check');

Route::get('riddle/{riddle}/submissions', function() {
return new SubmissionResource(Submission::all());
})->middleware('staff.check');

Route::get('riddle/{riddle}/my-submissions');
Route::post('riddle/{riddle}/riddle-answer')->middleware('staff.check');

0 comments on commit f3a38a1

Please sign in to comment.