From 557050d05fb822f4ebcf13e843a74a3c93bd23a2 Mon Sep 17 00:00:00 2001 From: tschneider Date: Wed, 30 Dec 2020 10:13:34 +0100 Subject: [PATCH] 4in1 Tipp --- .../app/Http/Controllers/TippsController.php | 144 +++++++++++++++++- pfosten/resources/views/tipps/edit4.blade.php | 126 +++++++++++++++ pfosten/resources/views/tipps/index.blade.php | 8 + pfosten/routes/web.php | 9 +- 4 files changed, 285 insertions(+), 2 deletions(-) create mode 100644 pfosten/resources/views/tipps/edit4.blade.php diff --git a/pfosten/app/Http/Controllers/TippsController.php b/pfosten/app/Http/Controllers/TippsController.php index b64bc4d1..819cabb7 100755 --- a/pfosten/app/Http/Controllers/TippsController.php +++ b/pfosten/app/Http/Controllers/TippsController.php @@ -103,6 +103,24 @@ class TippsController extends Controller return view('tipps.edit',compact('tipp','game')); } + public function edit4($round_id) { + $user=Auth::user(); + Log::info("Multi fetch result for tipps"); + $round=Round::where('id','=', $round_id)->first(); + $games=Game::where('round_id', '=', $round_id)->get(); + + $tipps=Tipp::whereIn('game_id', [$games[0]->id, $games[1]->id, $games[2]->id, $games[3]->id])->where('user_id',$user->id)->get(); + + $tipp1=$tipps[0]; + $game1=Game::where('id','=',$tipp1->game_id)->first(); + $tipp2=$tipps[1]; + $game2=Game::where('id','=',$tipp2->game_id)->first(); + $tipp3=$tipps[2]; + $game3=Game::where('id','=',$tipp3->game_id)->first(); + $tipp4=$tipps[3]; + $game4=Game::where('id','=',$tipp4->game_id)->first(); + return view('tipps.edit4',compact('round','tipp1','tipp2','tipp3','tipp4', 'game1', 'game2', 'game3', 'game4')); + } public function store() { // Validate form @@ -151,7 +169,6 @@ class TippsController extends Controller } } - $tipp->save(); @@ -184,6 +201,131 @@ class TippsController extends Controller return redirect($tippLink); } + // Try to store all 4 tipps of the round one by one. + // If one fails, previous saves are kept, but user + // is redirected to edit4 page again. + public function store4() { + // Validate form + $this->validate(request(), [ + 'round_id' => 'required', + 'game_id_1' => 'required', + 'game_id_2' => 'required', + 'game_id_3' => 'required', + 'game_id_4' => 'required', + 'tipp_id_1' => 'required', + 'tipp_id_2' => 'required', + 'tipp_id_3' => 'required', + 'tipp_id_4' => 'required', + 'score1_1' => 'required', + 'score1_2' => 'required', + 'score1_3' => 'required', + 'score1_4' => 'required', + 'score2_1' => 'required', + 'score2_2' => 'required', + 'score2_3' => 'required', + 'score2_4' => 'required', + 'round_id' => 'required' + ]); + + $round_id= request('round_id'); + $game_id_1=request('game_id_1'); + $game_id_2=request('game_id_2'); + $game_id_3=request('game_id_3'); + $game_id_4=request('game_id_4'); + $tipp_id_1=request('tipp_id_1'); + $tipp_id_2=request('tipp_id_2'); + $tipp_id_3=request('tipp_id_3'); + $tipp_id_4=request('tipp_id_4'); + $score1_1=request('score1_1'); + $score1_2=request('score1_2'); + $score1_3=request('score1_3'); + $score1_4=request('score1_4'); + $score2_1=request('score2_1'); + $score2_2=request('score2_2'); + $score2_3=request('score2_3'); + $score2_4=request('score2_4'); + + $joker_1=false; + $joker_2=false; + $joker_3=false; + $joker_4=false; + + + if (request()->has('joker_1')) { + $joker_1=true; + } elseif (request()->has('joker_2')) { + $joker_2=true; + } elseif (request()->has('joker_3')) { + $joker_3=true; + } elseif (request()->has('joker_4')) { + $joker_4=true; + } + + // If store fails, the jokerlimit has been reached. Redirect to edit4 page + if (self::tryStore($tipp_id_1, $game_id_1, $round_id, $score1_1, $score2_1, $joker_1 ) == false) { + return redirect('/tipps/edit4/'.$round_id); + } + + // If store fails, the jokerlimit has been reached. Redirect to edit4 page + if (self::tryStore($tipp_id_2, $game_id_2, $round_id, $score1_2, $score2_2, $joker_2) == false) { + return redirect('/tipps/edit4/'.$round_id); + } + + // If store fails, the jokerlimit has been reached. Redirect to edit4 page + if (self::tryStore($tipp_id_3, $game_id_3, $round_id, $score1_3, $score2_3, $joker_3 ) == false) { + return redirect('/tipps/edit4/'.$round_id); + } + + // If store fails, the jokerlimit has been reached. Redirect to edit4 page + if (self::tryStore($tipp_id_4, $game_id_4, $round_id, $score1_4, $score2_4, $joker_4 ) == false) { + return redirect('/tipps/edit4/'.$round_id); + } + + return redirect('/tipps/'); + } + + // Store tipp if valid. + public function tryStore($tipp_id, $game_id, $round_id, $score1, $score2, $has_joker ) { + error_log("Starting tryStore"); + $user=Auth::user(); + + $tipp = Tipp::where('id', $tipp_id)->first(); + error_log("tipp_id=".$tipp->id); + $game = Game::where('id', $game_id)->first(); + $round= Round::where('id',$round_id)->first(); + + $tipp->joker=$has_joker; + + // Neuerung 2020-01-09: Joker nur speichern, wenn Ergebnis nicht schon zu oft "gejokert" wurde. + if ($tipp->joker) { + $jokertipps=Tipp::getJokerUsageArray($user->id,$round_id); + $key=$tipp->score1.":".$tipp->score2; + //Log::info("Key(Gamescore):".$key); + error_log("Key(Gamescore):".$key); + if (array_key_exists($key,$jokertipps)) { + //Log::info("Key found in jokertipps array"); + + $value=$jokertipps[$key]; + //Log::info("Stored value:".$value); + $limit=Season::getCurrent()->maxIdenticalJokertipps(); + if (intval($value)>=intval($limit)) { + //Log::info("**JOKERLIMIT REACHED FOR GAMESCORE:".$key); + error_log("**JOKERLIMIT REACHED FOR GAMESCORE:".$key); + error_log("Returning false"); + return false; // Returning false should make store4 method return to edit4 page. + } + } + } + $tipp->score1=$score1; + $tipp->score2=$score2; + $tipp->joker=$has_joker; + $tipp->save(); + error_log("Returning true"); + return true; // Returning true should make store4 method return to general tipps (index) page. + } + + + // belongs to old single tipp functionality. public static function joker_impossible() { return view('tipps.joker_impossible'); diff --git a/pfosten/resources/views/tipps/edit4.blade.php b/pfosten/resources/views/tipps/edit4.blade.php new file mode 100644 index 00000000..816090e2 --- /dev/null +++ b/pfosten/resources/views/tipps/edit4.blade.php @@ -0,0 +1,126 @@ +@extends('layouts.layout') + +@section('content') +
+ +

{{$round->name}}

+ +

 

+ + +
+
+ {{ csrf_field() }} + +
+

+ {{ $game1->team1 }}   :   + {{ $game1->team2 }} + + +

  :  

+ + +

+
+ + + @if (App\Round::hasLockedGame($game1->round_id)) + {{ Form::checkbox('joker', 'yes', $tipp1->joker, array('disabled') ) }} + @else + {{ Form::checkbox('joker', 'yes', $tipp1->joker) }} + @endif + + + + + + + + + + +

 

+
+

+ {{ $game2->team1 }}   :   + {{ $game2->team2 }} + + +

  :  

+ + +

+
+ + + @if (App\Round::hasLockedGame($game2->round_id)) + {{ Form::checkbox('joker', 'yes', $tipp2->joker, array('disabled') ) }} + @else + {{ Form::checkbox('joker', 'yes', $tipp2->joker) }} + @endif + + + + + + +

 

+
+

+ {{ $game3->team1 }}   :   + {{ $game3->team2 }} + + +

  :  

+ + +

+
+ + + @if (App\Round::hasLockedGame($game3->round_id)) + {{ Form::checkbox('joker', 'yes', $tipp3->joker, array('disabled') ) }} + @else + {{ Form::checkbox('joker', 'yes', $tipp3->joker) }} + @endif + + + + + +

 

+
+

+ {{ $game4->team1 }}   :   + {{ $game4->team2 }} + + +

  :  

+ + +

+
+ + + @if (App\Round::hasLockedGame($game4->round_id)) + {{ Form::checkbox('joker', 'yes', $tipp4->joker, array('disabled') ) }} + @else + {{ Form::checkbox('joker', 'yes', $tipp4->joker) }} + @endif + + + + + +
+

 

+ +
+ +
+
+ + +
+@endsection \ No newline at end of file diff --git a/pfosten/resources/views/tipps/index.blade.php b/pfosten/resources/views/tipps/index.blade.php index e87d0afb..d6dad44f 100755 --- a/pfosten/resources/views/tipps/index.blade.php +++ b/pfosten/resources/views/tipps/index.blade.php @@ -66,6 +66,14 @@ @endforeach + + @if (Auth::user()->admin) + @if(App\Round::hasLockedGame($round->id)!=true) + Runde Tippen + @endif + @endif + +

 

diff --git a/pfosten/routes/web.php b/pfosten/routes/web.php index e2a1a4c2..9a422614 100644 --- a/pfosten/routes/web.php +++ b/pfosten/routes/web.php @@ -56,8 +56,15 @@ Route::get('/users/payout/{user_id}','UsersController@money_ranking_detail'); Route::get('/tipps','TippsController@index'); Route::get('/tipps/joker_impossible','TippsController@joker_impossible'); -Route::get('/tipps/edit/{tipp_id}','TippsController@edit'); Route::post('/tipps/store','TippsController@store'); +Route::get('/tipps/edit/{tipp_id}','TippsController@edit'); + + +// New routes start +Route::get('/tipps/edit4/{round_id}','TippsController@edit4'); +Route::post('/tipps/store4','TippsController@store4'); +// New routes end + Route::get('/email','UsersController@mailtest');