From f84636b31fc08a02ce8851a539d8334d66792afe Mon Sep 17 00:00:00 2001 From: Beluzsar Peter Date: Mon, 10 Aug 2026 20:39:56 +0200 Subject: [PATCH] backend validation change, frontend changes --- app/Http/Controllers/TlaController.php | 47 ++++++++++++++++---------- app/Models/Tla.php | 19 +++++++++++ database/factories/TlaFactory.php | 2 +- resources/css/app.css | 8 +++++ resources/js/App.vue | 14 +++++++- resources/js/components/GuessWord.vue | 22 +++++++++++- resources/js/pages/HomeView.vue | 30 +++++++++++++--- 7 files changed, 116 insertions(+), 26 deletions(-) diff --git a/app/Http/Controllers/TlaController.php b/app/Http/Controllers/TlaController.php index 450366f..1e35445 100644 --- a/app/Http/Controllers/TlaController.php +++ b/app/Http/Controllers/TlaController.php @@ -34,19 +34,7 @@ class TlaController extends Controller if ( !in_array($language, $allowedLanguages) ) $language = 'en'; - $tla = Tla::where('used', date("Y-m-d")) - ->where('language', $language) - ->first(); - - if ( is_null($tla) ) { - $tla = Tla::where('language', $language) - ->where('used', NULL) - ->inRandomOrder() - ->first(); - - $tla->used = date("Y-m-d"); - $tla->save(); - } + $tla = Tla::GetCurrentTla($language); return response()->json([ 'hint' => $tla->hint, @@ -62,18 +50,41 @@ class TlaController extends Controller $guess = $request->all()['guess']; - $guess_array = explode(' ', $guess); + $tla = explode(' ', Tla::GetCurrentTla($language)->abbreviation); + + $guess_array = explode(' ', $guess); + $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])); + } - array_push($guess_array, 1); - array_push($guess_array, 2); - array_push($guess_array, 3); if ( $request->session()->get('guesses-'.$language, NULL) == NULL ) $request->session()->put('guesses-'.$language, [$guess_array]); else $request->session()->push('guesses-'.$language, $guess_array); $guesses = $request->session()->get('guesses-'.$language, NULL); - return $guesses; + return response()->json([ + 'guesses' => $request->session()->get('guesses-'.$language, NULL), + 'real' => $tla + ]); } public function update(Request $request, Tla $tla): RedirectResponse diff --git a/app/Models/Tla.php b/app/Models/Tla.php index 40199da..f7adf70 100644 --- a/app/Models/Tla.php +++ b/app/Models/Tla.php @@ -12,4 +12,23 @@ class Tla extends Model use HasFactory; protected $fillable = ['abbreviation', 'hint', 'used']; + + public static function GetCurrentTla( string $language ) : Tla { + $tla = Tla::where('used', date("Y-m-d")) + ->where('language', $language) + ->first(); + + if ( is_null($tla) ) { + $tla = Tla::where('language', $language) + ->where('used', NULL) + ->inRandomOrder() + ->first(); + + $tla->used = date("Y-m-d"); + $tla->save(); + } + + + return $tla; + } } diff --git a/database/factories/TlaFactory.php b/database/factories/TlaFactory.php index f7623ad..c434b0d 100644 --- a/database/factories/TlaFactory.php +++ b/database/factories/TlaFactory.php @@ -19,7 +19,7 @@ class TlaFactory extends Factory { return [ 'abbreviation' => fake()->word() . ' ' . fake()->word() . ' ' . fake()->word(), - 'hint' => fake()->word(), + 'hint' => fake()->sentence(), 'language' => fake()->randomElement(['hu', 'en']), ]; } diff --git a/resources/css/app.css b/resources/css/app.css index 6cafaa6..0ac0f3c 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -8,3 +8,11 @@ --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; } + +.main { + text-align: center; +} +h1 { + font-size: 3vh; + font-weight: bolder; +} diff --git a/resources/js/App.vue b/resources/js/App.vue index 9ffb1c2..47481e8 100644 --- a/resources/js/App.vue +++ b/resources/js/App.vue @@ -20,7 +20,19 @@