181 lines
5.8 KiB
PHP
181 lines
5.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Tla;
|
|
use Illuminate\Http\Request;
|
|
|
|
class TlaController extends Controller
|
|
{
|
|
public function store(Request $request): RedirectResponse
|
|
{
|
|
$request->validate([
|
|
'title' => 'required',
|
|
'body' => 'required',
|
|
]);
|
|
|
|
$tla = new Tla($requestData);
|
|
|
|
$tla->save();
|
|
|
|
return redirect()->route('admin')->with('success', 'Record added!');
|
|
} //
|
|
|
|
public function destroy(Tla $tla): RedirectResponse
|
|
{
|
|
$tla->delete();
|
|
|
|
return redirect()->route('admin')->with('success', 'Record deleted');
|
|
}
|
|
|
|
public function session_flush(Request $request, string $language)
|
|
{
|
|
$session = $request->session();
|
|
if ($session->get('date-'.$language, NULL) != date('Y-m-d'))
|
|
{
|
|
$session->forget('guesses-'.$language);
|
|
$session->forget('tla-'.$language);
|
|
$session->forget('correct-'.$language);
|
|
$session->forget('review-'.$language);
|
|
$session->put('date-'.$language, date('Y-m-d'));
|
|
}
|
|
}
|
|
|
|
public function fetch_tla(Request $request, ?string $language = 'en')
|
|
{
|
|
$allowedLanguages = array('hu', 'en');
|
|
if ( !in_array($language, $allowedLanguages) ) $language = 'en';
|
|
|
|
$tla = Tla::GetCurrentTla($language);
|
|
$this->session_flush($request, $language);
|
|
|
|
$session = $request->session();
|
|
|
|
return response()->json([
|
|
'hint' => $tla->hint,
|
|
'guesses' => $session->get('guesses-'.$language, []),
|
|
'date' => $session->get('date-'.$language),
|
|
'tla' => $session->get('tla-'.$language) == $tla->acronym ? $tla->acronym : NULL,
|
|
'context' => $session->get('tla-'.$language) == $tla->acronym ? $tla->context : NULL,
|
|
'correct' => $session->get('correct-'.$language),
|
|
]);
|
|
}
|
|
|
|
public function check_tla(Request $request, ?string $language = 'en')
|
|
{
|
|
$request->validate([
|
|
'guess' => 'required|array|size:3',
|
|
]);
|
|
$this->session_flush($request, $language);
|
|
$tla_object = Tla::GetCurrentTla($language);
|
|
|
|
$session = $request->session();
|
|
|
|
$tla = explode(' ', strtolower($tla_object->acronym));
|
|
|
|
$guess_array = $request->all()['guess'];
|
|
for ($i = 0; $i<3; $i++) {
|
|
$guess_array[$i] = strtolower($guess_array[$i]);
|
|
}
|
|
|
|
$proposal = [];
|
|
|
|
for ($i = 0; $i < 3; $i++) {
|
|
for ($j = 0; $j < 3; $j++) {
|
|
if ( $guess_array[$j] == $tla[$i] ) {
|
|
$proposal[$i][$j] = $i-$j != 0 ? 3 : 4;
|
|
}
|
|
else if ( $guess_array[$j][0] == $tla[$i][0] ) {
|
|
$proposal[$i][$j] = $i-$j != 0 ? 1 : 2;
|
|
}
|
|
else $proposal[$i][$j] = 0;
|
|
}
|
|
|
|
if ($proposal[$i][0] <= $proposal[$i][1] || $proposal[$i][0] <= $proposal[$i][2]) $proposal[$i][0] = 0;
|
|
if ($proposal[$i][1] <= $proposal[$i][2] || $proposal[$i][1] <= $proposal[$i][0]) $proposal[$i][1] = 0;
|
|
if ($proposal[$i][2] <= $proposal[$i][0] || $proposal[$i][2] <= $proposal[$i][1]) $proposal[$i][2] = 0;
|
|
}
|
|
|
|
for ($i = 0; $i < 3; $i++) {
|
|
array_push($guess_array, max($proposal[0][$i], $proposal[1][$i], $proposal[2][$i]));
|
|
}
|
|
|
|
$score = 0;
|
|
|
|
for ($i = 0; $i<3; $i++) {
|
|
$guess_array[$i] = ucfirst($guess_array[$i]);
|
|
$score += $guess_array[$i + 3];
|
|
}
|
|
|
|
$session->push('guesses-'.$language, $guess_array);
|
|
$guesses = $session->get('guesses-'.$language, NULL);
|
|
|
|
if ($score == 12 || count($guesses) == env('MAX_GUESSES', 10)) {
|
|
$session->put('tla-'.$language, $tla_object->acronym);
|
|
if ($score == 12) $session->put('correct-'.$language, true);
|
|
}
|
|
|
|
return response()->json([
|
|
'guesses' => $guesses,
|
|
'date' => $session->get('date'),
|
|
'tla' => $session->get('tla-'.$language) == $tla_object->acronym ? $tla_object->acronym : NULL,
|
|
'context' => $session->get('tla-'.$language) == $tla_object->acronym ? $tla_object->context : NULL,
|
|
'score' => $score,
|
|
'correct' => $session->get('correct-'.$language),
|
|
]);
|
|
}
|
|
|
|
public function suggestion(?String $language = "en") {
|
|
|
|
}
|
|
|
|
public function review(Request $request, String $language, int $type) {
|
|
$session = $request->session();
|
|
if ($session->get('correct-'.$language) == true) {
|
|
$current = $session->get('review-'.$language);
|
|
$tla = Tla::GetCurrentTla($language);
|
|
|
|
if ($type != 2) {
|
|
if ($current == $type) {
|
|
if ($current == 1) $tla->likes--;
|
|
else if ($current == -1) $tla->dislikes--;
|
|
$type = 2;
|
|
} else {
|
|
if ($current == 1) $tla->likes--;
|
|
else if ($current == -1) $tla->dislikes--;
|
|
|
|
if ($type == 1) $tla->likes++;
|
|
else if ($type == -1) $tla->dislikes++;
|
|
}
|
|
$tla->save();
|
|
$session->put('review-'.$language, $type);
|
|
} else $type = $current;
|
|
|
|
return response()->json([
|
|
'likes' => $tla->likes,
|
|
'dislikes' => $tla->dislikes,
|
|
'current' => $type,
|
|
]);
|
|
}
|
|
|
|
else return response(null, 403);
|
|
|
|
}
|
|
|
|
public function update(Request $request, Tla $tla): RedirectResponse
|
|
{
|
|
$request->validate([
|
|
'title' => 'required',
|
|
'body' => 'required',
|
|
]);
|
|
|
|
$requestData = $request->all();
|
|
|
|
$tla->update($requestData);
|
|
|
|
$tla->save();
|
|
|
|
return redirect()->route('admin')->with('success', 'Record updated!');
|
|
}
|
|
}
|