diff --git a/app/Console/Commands/Grapper/Sofascore.php b/app/Console/Commands/Grapper/Sofascore.php index a225a6bf..2c1e2661 100644 --- a/app/Console/Commands/Grapper/Sofascore.php +++ b/app/Console/Commands/Grapper/Sofascore.php @@ -33,6 +33,7 @@ class Sofascore { $function = Nuh::$options['fun']; + switch ($function) { case 1: diff --git a/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php b/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php index 930991eb..0412c572 100644 --- a/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php +++ b/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php @@ -6,6 +6,7 @@ use App\Console\Commands\Nuh; use App\Models\SofaScoreRosa; use App\Models\SofaScoreTask; use App\Models\SofaScoreTaskTournament; +use App\Models\SofaScoreTournament; use App\Utilities\Notice; use Illuminate\Support\Facades\DB; @@ -38,12 +39,12 @@ class SettingsToLocal } if ($debug) { - Notice::note('SofaScoreRosa', 'g'); + Notice::note('SofaScoreTournament', 'g'); } - SofaScoreRosa::truncate(); - $rows = DB::connection('remote_mariadb')->table('sofa_score_rosas')->get(); + SofaScoreTournament::truncate(); + $rows = DB::connection('remote_mariadb')->table('sofa_score_tournaments')->get(); foreach ($rows as $row) { - SofaScoreRosa::insert((array) $row); + SofaScoreTournament::insert((array) $row); } } } diff --git a/app/Console/Commands/Grapper/Sofascore/TournamentTeams.php b/app/Console/Commands/Grapper/Sofascore/TournamentTeams.php index 1e032eb4..21ebeff1 100644 --- a/app/Console/Commands/Grapper/Sofascore/TournamentTeams.php +++ b/app/Console/Commands/Grapper/Sofascore/TournamentTeams.php @@ -6,6 +6,7 @@ use App\Console\Commands\Grapper\Sofascore\Helper\CurlSofa; use App\Console\Commands\Grapper\Sofascore\Helper\Sleeper; use App\Console\Commands\Nuh; use App\Models\SofaScoreRosa; +use App\Models\SofaScoreRosaTournament; use App\Models\SofaScoreTournament; use App\Utilities\Notice; @@ -22,13 +23,14 @@ class TournamentTeams $tournaments = SofaScoreTournament::with('sofascore_category')->where('enabled', 1)->get(); SofaScoreRosa::query()->update(['grapped' => 0]); + SofaScoreRosaTournament::query()->update(['grapped' => 0]); foreach ($tournaments as $tournament) { $tournaments_counter++; if ($debug) { - Notice::note("Tournament: $tournament->name", 'bb'); + Notice::note("$tournaments_counter Tournament: $tournament->name", 'bb'); } $url = Nuh::$options['base_url'] . "api/v1/unique-tournament/$tournament->tournament_id/seasons"; @@ -45,26 +47,37 @@ class TournamentTeams $data = CurlSofa::load($url); - foreach ($data['standings'][0]['rows'] as $row) { - $teams_counter++; + if (isset($data['standings'])) { + foreach ($data['standings'][0]['rows'] as $row) { + $teams_counter++; - $ssteam_id = $row['team']['id']; - $name = $row['team']['name']; - $country_id = $tournament->sofascore_category->country_id; + $ssteam_id = $row['team']['id']; + $name = $row['team']['name']; + $country_id = $tournament->sofascore_category->country_id; - SofaScoreRosa::updateOrCreate([ - 'sport_id' => $tournament->sport_id, - 'ssteam_id' => (int) $ssteam_id, - ], [ - 'ss_tournament_id' => (int) $tournament->tournament_id, - 'country_id' => (int) $country_id, - 'ssteam_name' => $name, - 'grapped' => 1, - 'disabled' => 0, - ]); + SofaScoreRosa::updateOrCreate([ + 'sport_id' => $tournament->sport_id, + 'ssteam_id' => (int) $ssteam_id, + ], [ + 'country_id' => (int) $country_id, + 'ssteam_name' => $name, + 'grapped' => 1, + 'disabled' => 0, + ]); + SofaScoreRosaTournament::updateOrCreate([ + 'ss_tournament_id' => (int) $tournament->tournament_id, + 'ssteam_id' => (int) $ssteam_id, + ], [ + 'grapped' => 1, + 'disabled' => 0, + ]); + } } } + SofaScoreRosa::where('grapped', 0)->update(['disabled' => 1]); + SofaScoreRosaTournament::where('grapped', 0)->update(['disabled' => 1]); + if ($debug) { Notice::note("summe tournaments: $tournaments_counter", 'p'); Notice::note("summe teams: $teams_counter", 'p'); diff --git a/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php b/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php index e9cd7109..5e71d6cf 100644 --- a/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php +++ b/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php @@ -2,6 +2,7 @@ namespace App\Filament\Clusters\StaticData\Resources\SofaScoreRosas\Tables; +use App\Models\SofaScoreRosaTournament; use App\Models\SofaScoreTournament; use App\Models\Sport; use Filament\Forms\Components\Select; @@ -17,10 +18,11 @@ class SofaScoreRosasTable public static function configure(Table $table): Table { return $table + ->defaultPaginationPageOption(50) ->columns([ TextColumn::make('ssteam_id')->label('SSId')->badge()->width('1rem'), TextColumn::make('country.name')->label('Country'), - TextColumn::make('tournament.name')->label('Tournament'), + TextColumn::make('tournament_rosa.tournament.name')->label('Tournament'), TextColumn::make('ssteam_name')->label('Name'), TextColumn::make('updated_at')->dateTime('Y-m-d H:i:s') ]) @@ -38,13 +40,17 @@ class SofaScoreRosasTable }) ->live(), Select::make('ss_tournament_id') + ->default(23) ->label('Tournament') + ->selectablePlaceholder(false) ->options(function (Get $get) { $res = SofaScoreTournament::with('sofascore_category')->where('enabled', 1)->where('sport_id', $get('sport_id'))->get(); $return = []; foreach ($res as $value) { - $return[$value->tournament_id] = $value->sofascore_category->name . ' ' . $value->name; + $return[$value->tournament_id] = $value->sofascore_category->name . ' - ' . $value->name; } + asort($return); + return $return; }) ->live(), @@ -55,7 +61,11 @@ class SofaScoreRosasTable fn(Builder $query, $sport_id) => $query->where('sport_id', $sport_id) )->when( $data['ss_tournament_id'], - fn(Builder $query, $ss_tournament_id) => $query->where('ss_tournament_id', $ss_tournament_id) + function (Builder $query, $ss_tournament_id) { + $ssteam_ids = SofaScoreRosaTournament::where('ss_tournament_id', $ss_tournament_id)->pluck('ssteam_id')->toArray(); + + $query->whereIn('ssteam_id', $ssteam_ids); + } ); }), ], layout: FiltersLayout::AboveContent) diff --git a/app/Models/SofaScoreRosa.php b/app/Models/SofaScoreRosa.php index 5eeaf5e9..cc231bbb 100644 --- a/app/Models/SofaScoreRosa.php +++ b/app/Models/SofaScoreRosa.php @@ -22,8 +22,8 @@ class SofaScoreRosa extends Model return $this->belongsTo(Country::class); } - public function tournament() + public function tournament_rosa() { - return $this->belongsTo(SofaScoreTournament::class, 'ss_tournament_id', 'tournament_id'); + return $this->belongsTo(SofaScoreRosaTournament::class, 'ssteam_id', 'ssteam_id'); } } diff --git a/app/Models/SofaScoreRosaTournament.php b/app/Models/SofaScoreRosaTournament.php new file mode 100644 index 00000000..721cfe7f --- /dev/null +++ b/app/Models/SofaScoreRosaTournament.php @@ -0,0 +1,20 @@ +belongsTo(SofaScoreTournament::class, 'ss_tournament_id', 'tournament_id'); + } +} diff --git a/database/migrations/2026_07_20_150818_create_sofa_score_roses_table.php b/database/migrations/2026_07_20_150818_create_sofa_score_roses_table.php index eccf9d35..1f702dd1 100644 --- a/database/migrations/2026_07_20_150818_create_sofa_score_roses_table.php +++ b/database/migrations/2026_07_20_150818_create_sofa_score_roses_table.php @@ -17,7 +17,6 @@ return new class extends Migration $table->integer('ssteam_id')->index(); $table->integer('country_id')->default(0)->nullable()->index()->references('id')->on('countries'); $table->string('ssteam_name'); - $table->integer('ss_tournament_id')->default(0)->nullable()->index(); $table->boolean('is_active')->default(false); $table->boolean('disabled')->default(false); $table->boolean('grapped')->default(false); diff --git a/database/migrations/2026_07_29_132745_create_sofa_score_rosa_tournaments_table.php b/database/migrations/2026_07_29_132745_create_sofa_score_rosa_tournaments_table.php new file mode 100644 index 00000000..c61afbbb --- /dev/null +++ b/database/migrations/2026_07_29_132745_create_sofa_score_rosa_tournaments_table.php @@ -0,0 +1,31 @@ +id(); + $table->integer('ssteam_id')->index(); + $table->integer('ss_tournament_id')->default(0)->nullable()->index(); + $table->boolean('disabled')->default(false); + $table->boolean('grapped')->default(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('sofa_score_rosa_tournaments'); + } +}; diff --git a/grapper.sh b/grapper.sh index d0b72f71..9c4be187 100755 --- a/grapper.sh +++ b/grapper.sh @@ -1,9 +1,9 @@ case "$1" in "1") echo "" - echo "\033[1;32m"; + echo "\033[1;31m"; echo "--------------------------" - echo "⚽ Daily Task: 1" + echo "Task: 1 ⚽ Daily" echo "--------------------------" echo "\033[0;0m"; @@ -38,9 +38,9 @@ case "$1" in ;; "2") echo "" - echo "\033[1;34m"; + echo "\033[1;32m"; echo "--------------------------" - echo "⚽ Day: 2" + echo "Task: 2 ⚽ Single Day" echo "--------------------------" echo "\033[0;0m"; @@ -54,7 +54,7 @@ case "$1" in echo "" echo "\033[1;33m"; echo "--------------------------" - echo "⚽ Range Task: 3" + echo "Task: 3 ⚽ Date Range" echo "--------------------------" echo "\033[0;0m"; @@ -89,7 +89,26 @@ case "$1" in echo "" echo "\033[1;35m"; echo "--------------------------" - echo "⚽ Rosa Task: 4" + echo "Task: 4 ⚽ Tornament" + echo "--------------------------" + echo "\033[0;0m"; + + echo "\n--------------------------" + echo "5 sec to stop" + echo "restart with second param: 1" + echo "--------------------------" + #sleep 5 + + php artisan nuh --d --f 67 --fun=9 --restart=$2 + + echo "\n😎 task done :)" + echo "" +;; +"5") + echo "" + echo "\033[1;35m"; + echo "--------------------------" + echo "Task: 5 ⚽ Rooster" echo "--------------------------" echo "\033[0;0m"; @@ -99,17 +118,16 @@ case "$1" in echo "--------------------------" sleep 5 - echo "\n⚽ Rosa" php artisan nuh --d --f 67 --fun=6 --task=4 --restart=$2 echo "\n😎 task done :)" echo "" ;; -"5") +"6") echo "" echo "\033[1;36m"; echo "--------------------------" - echo "⚽ Copy Settings: 5" + echo "Task: 6 ⚽ Copy to DEV" echo "--------------------------" echo "\033[0;0m"; @@ -124,7 +142,6 @@ case "$1" in echo "\n⚽ open vpn" ssh -f -N -L 13306:127.0.0.1:3306 -p 58371 root@162.55.242.190 - echo "\n⚽ Settings To Local" php artisan nuh --d --f 67 --fun=2 --task=0 echo "\n⚽ close vpn" @@ -133,22 +150,53 @@ case "$1" in echo "\n😎 task done :)" echo "" ;; +"6") + echo "" + echo "\033[1;36m"; + echo "--------------------------" + echo "Task: 7 ⚽ Copy to PROD" + echo "--------------------------" + echo "\033[0;0m"; + + echo "\n--------------------------" + echo "5 sec to stop" + echo "--------------------------" + sleep 5 + + echo "\n⚽ close all vpn" + killall ssh + + echo "\n⚽ open vpn" + ssh -f -N -L 13306:127.0.0.1:3306 -p 58371 root@162.55.242.190 + + # php artisan nuh --d --f 67 --fun=2 --task=0 + + echo "\n⚽ close vpn" + killall ssh + + echo "\n😎 task done :)" + echo "" +;; *) echo "" echo "\033[1;30m"; echo "--------------------------" echo " Grapper Options" echo "--------------------------" + echo "\033[1;31m"; + echo "Task: 1 ⚽ Daily" echo "\033[1;32m"; - echo "⚽ Daily\tTask: 1" - echo "\033[1;34m"; - echo "⚽ Day\t\tTask: 2" + echo "Task: 2 ⚽ Single Day" echo "\033[1;33m"; - echo "⚽ Range\tTask: 3" + echo "Task: 3 ⚽ Date Range" + echo "\033[1;34m"; + echo "Task: 4 ⚽ Tornament" echo "\033[1;35m"; - echo "⚽ Rosa\t\tTask: 4" + echo "Task: 5 ⚽ Rooster" echo "\033[1;36m"; - echo "⚽ Settings\tTask: 5" + echo "Task: 6 ⚽ Copy to DEV" + echo "\033[1;36m"; + echo "Task: 7 ⚽ Copy to PROD" echo "\033[0;0m"; echo "--------------------------" ;;