From 336471945909eff81ae562063e0e55235585be3c Mon Sep 17 00:00:00 2001 From: deniskorbakov Date: Sun, 27 Oct 2024 12:55:24 +0300 Subject: [PATCH] feat: update logic --- .../Controllers/Api/ChallengeController.php | 27 +++++++++++++++++-- routes/api.php | 8 +++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Api/ChallengeController.php b/app/Http/Controllers/Api/ChallengeController.php index 69df911..9fe035e 100644 --- a/app/Http/Controllers/Api/ChallengeController.php +++ b/app/Http/Controllers/Api/ChallengeController.php @@ -4,6 +4,8 @@ use App\DTO\Api\Challenge\Request\ChallengeFilterDTO; use App\Models\Challenge; +use App\Models\Team; +use App\Models\User; use App\Services\Api\ChallengeService; class ChallengeController extends Controller @@ -25,13 +27,34 @@ public function show(int $id): array return $this->challengeService->show($challenge); } - public function joinPersonal(): array + public function joinPersonal(int $id, int $userId): array { + $user = User::query()->find($userId); + $challenge = Challenge::query()->find($id); + + if ($user && $user->telegram_id && $challenge) { + $tg = new TelegramController(); + $tg->sendMessage($user->telegram_id, 'Уведомление о челлендже - ' . $challenge->name); + + return ['success' => true]; + } + return []; } - public function joinTeam(): array + public function joinTeam(int $id, int $teamId): array { + $challenge = Challenge::query()->find($id); + + $team = Team::query()->find($teamId); + $user = User::query()->find($team?->captain_id); + + if ($team && $user && $user->telegram_id && $challenge) { + $tg = new TelegramController(); + + $tg->sendMessage($user->telegram_id, 'Отправили вашей команде вызов на челлендж - ' . $challenge->name); + } + return []; } } diff --git a/routes/api.php b/routes/api.php index 7ea34a6..fadeb07 100755 --- a/routes/api.php +++ b/routes/api.php @@ -34,10 +34,10 @@ }); Route::group(['prefix' => 'challenges'], static function () { - Route::get('/', [ChallengeController::class, 'index'])->name('teams.index'); - Route::get('/{id}', [ChallengeController::class, 'show'])->name('teams.show'); - Route::post('/{id}/joins/personal', [ChallengeController::class, 'joinPersonal'])->name('teams.joinPersonal'); - Route::post('/{id}/joins/teams', [ChallengeController::class, 'joinTeam'])->name('teams.joinTeam'); + Route::get('/', [ChallengeController::class, 'index'])->name('challenges.index'); + Route::get('/{id}', [ChallengeController::class, 'show'])->name('challenges.show'); + Route::post('/{id}/joins/personal/{userId}', [ChallengeController::class, 'joinPersonal'])->name('challenges.joinPersonal'); + Route::post('/{id}/joins/teams/{teamId}', [ChallengeController::class, 'joinTeam'])->name('challenges.joinTeam'); }); });