diff options
author | Camil Staps | 2019-12-30 16:57:13 +0100 |
---|---|---|
committer | Camil Staps | 2020-01-03 19:06:02 +0100 |
commit | ad10a6467f76822b9289832eeb0d0ac2038b32d1 (patch) | |
tree | 1d78251ad49be1a744dc4573a1b3cf54e295e3a4 /app/Http/Controllers/VerbController.php | |
parent | Clarify incorrect parsing message when input is short (diff) |
Strip down for simple app for Greek verb λύω
Diffstat (limited to 'app/Http/Controllers/VerbController.php')
-rw-r--r-- | app/Http/Controllers/VerbController.php | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/app/Http/Controllers/VerbController.php b/app/Http/Controllers/VerbController.php deleted file mode 100644 index 042bfe2..0000000 --- a/app/Http/Controllers/VerbController.php +++ /dev/null @@ -1,161 +0,0 @@ -<?php -/** - * HebrewParseTrainer - practice Hebrew verbs - * Copyright (C) 2015 Camil Staps <info@camilstaps.nl> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -namespace App\Http\Controllers; - -use HebrewParseTrainer\PointChange; -use HebrewParseTrainer\Stem; -use HebrewParseTrainer\Tense; -use HebrewParseTrainer\Verb; -use HebrewParseTrainer\VerbAction; -use HebrewParseTrainer\RandomLog; - -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Input; -use Illuminate\Support\Facades\Validator; - -class VerbController extends Controller { - - public function random() { - $verbs = Verb::where('active', 1); - foreach (Input::get() as $col => $val) { - if ($col == '_token') - continue; - $vals = explode(',', $val); - $verbs = $verbs->whereIn($col, $vals); - } - $verb = $verbs->get()->random(); - - $log = new RandomLog(); - $log->request = json_encode(Input::get()); - $log->response = $verb->id; - $log->ip = $_SERVER['REMOTE_ADDR']; - $log->save(); - - $obj = ['verb' => $verb, 'answers' => $verb->otherParsings()]; - return response()->json($obj); - } - - public function suggest(Request $request) { - $_tenses = Tense::all(); - $tenses = []; - foreach ($_tenses as $tense) - $tenses[] = $tense->name; - - $_stems = Stem::all(); - $stems = []; - foreach ($_stems as $stem) - $stems[] = $stem->name; - - $validator = Validator::make($request->input(), [ - 'verb' => 'required', - 'root' => 'required', - 'stem' => 'in:' . implode(',', $stems), - 'tense' => 'in:' . implode(',', $tenses), - 'person' => 'in:,1,2,3', - 'gender' => 'in:,m,f', - 'number' => 'in:,s,p', - ]); - - if ($validator->fails()) { - return [ - 'success' => false, - 'message' => $validator->errors()->first() - ]; - } - - $verb = new Verb; - $verb->verb = $request->input('verb'); - $verb->root = $request->input('root'); - $verb->stem = $request->input('stem'); - $verb->tense = $request->input('tense'); - $verb->person = $request->input('person') ? $request->input('person') : null; - $verb->gender = $request->input('gender') ? $request->input('gender') : null; - $verb->number = $request->input('number') ? $request->input('number') : null; - $verb->active = 0; - $verb->save(); - - $action = new VerbAction; - $action->kind = VerbAction::KIND_SUGGEST; - $action->user_id = Auth::user()->id; - $action->verb_id = $verb->id; - $action->save(); - - $this->vote(1, $verb->id); - - return [ - 'success' => true, - 'id' => $verb->id, - 'accepted' => $verb->active != 0 - ]; - } - - protected function checkAccept($verb) { - if ($verb->voteCount() < Verb::ACCEPTED_VOTE_COUNT) - return false; - - $verb->active = 1; - $verb->save(); - - if (!is_null($user = $verb->suggestedBy())) { - $ptchange = new PointChange; - $ptchange->kind = PointChange::KIND_SUGGESTION_ACCEPTED; - $ptchange->change = PointChange::POINTS_SUGGESTION_ACCEPTED; - $ptchange->user_id = $user->id; - $ptchange->verb_id = $verb->id; - $ptchange->save(); - - $user->points += PointChange::POINTS_SUGGESTION_ACCEPTED; - $user->save(); - } - - return true; - } - - public function vote($verb_id, $choice) { - $verb = Verb::findOrFail($verb_id); - $user = Auth::user(); - - if ($verb->active) - return ['success' => false, 'message' => 'This verb has been accepted already.']; - - foreach ($verb->actions()->where('kind', VerbAction::KIND_VOTE)->get() as $vote) { - if ($vote->user->id == $user->id) { - $vote->delete(); - } - } - - $vote = new VerbAction; - $vote->user_id = $user->id; - $vote->verb_id = $verb_id; - $vote->kind = VerbAction::KIND_VOTE; - $vote->vote_weight = ($choice == 1 ? 1 : -1) * $user->voteWeight(); - $vote->save(); - - $accepted = $this->checkAccept($verb); - - return [ - 'success' => true, - 'vote_weight' => $user->voteWeight(), - 'accepted' => $accepted, - 'new_vote_count' => $verb->voteCount() - ]; - } - -} |