src/Controller/Slots/SlotsController.php line 71

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Slots;
  3. use App\Controller\BaseController;
  4. use Doctrine\DBAL\Connection;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  9. class SlotsController extends BaseController
  10. {
  11.     /**
  12.      * @Route("/api/slots/load", name="load_slots", methods={"GET"})
  13.      */
  14.     public function loadSlots(Request $requestSessionInterface $sessionConnection $db): JsonResponse
  15.     {
  16.         $page max(1, (int) $request->query->get('page'1));
  17.         $limit 60;
  18.         $offset = ($page 1) * $limit;
  19.         $query trim((string) $request->query->get('q'''));
  20.         $provider trim((string) $request->query->get('provider'''));
  21.         $sql "
  22.             SELECT id, title, provider
  23.             FROM slots
  24.             WHERE `show` = 1
  25.         ";
  26.         $params = [];
  27.         if ($query !== '') {
  28.             $sql .= " AND (title LIKE :q OR provider LIKE :q)";
  29.             $params['q'] = '%' $query '%';
  30.         }
  31.         if ($provider !== '') {
  32.             $sql .= " AND provider = :provider";
  33.             $params['provider'] = $provider;
  34.         }
  35.         $sql .= " ORDER BY id DESC LIMIT $limit OFFSET $offset";
  36.         $slots $db->fetchAllAssociative($sql$params);
  37.         $slots array_map(function ($slot) {
  38.             $cleanTitle str_replace(' '''$slot['title']);
  39.             $slot['icon'] = "/assets/images/slots/{$cleanTitle}.jpg?v=2";
  40.             return $slot;
  41.         }, $slots);
  42.         return new JsonResponse([
  43.             'success' => true,
  44.             'data' => $slots
  45.         ]);
  46.     }
  47.     
  48.     /**
  49.      * @Route("/slots/play/{id}", name="play_slot", methods={"GET"})
  50.      */
  51.     public function playSlot(int $idSessionInterface $sessionConnection $db) {
  52.         $slot $db->fetchAssociative('SELECT * FROM slots WHERE id = :id', ['id' => $id]);
  53.         if (!$slot) {
  54.             throw $this->createNotFoundException('Слот не найден');
  55.         }
  56.         $hash $session->get('hash');
  57.         if (!$hash) {
  58.             return $this->redirectToRoute('main_page');
  59.         }
  60.         $user $db->fetchAssociative('SELECT * FROM users WHERE hash = :hash', ['hash' => $hash]);
  61.         if (!$user) {
  62.             return $this->redirectToRoute('main_page');
  63.         }
  64.         
  65.         $depositsTotal $db->fetchOne("
  66.             SELECT SUM(suma) 
  67.             FROM deposits 
  68.             WHERE user_id = ? 
  69.               AND status = 1 
  70.               AND STR_TO_DATE(data, '%d-%m-%Y %H:%i:%s') >= DATE_SUB(NOW(), INTERVAL 7 DAY)
  71.         ", [$user['id']]);
  72.         if ($depositsTotal 100 && !in_array($user['admin'], [13])) {
  73.             return $this->redirectToRoute('lobby_page', [
  74.                 'denied' => 'deposit'
  75.             ]);
  76.         }
  77.         $userId $user['id'];
  78.         $game_id $slot['game_id'];
  79.         $agregator $slot['agregator'];
  80.         $alias $slot['alias'];
  81.         $provider $slot['provider'];
  82.         $authToken $user['auth_token'];
  83.         $currency $user['current_currency'];
  84.         $lang $user['lang'];
  85.         $yt = (int) $user['admin'];
  86.         $wager = (int) $user['wager'];
  87.         $url '';
  88.         if ($agregator === 'b2b') {
  89.             if ($yt == || $yt == 3) {
  90.                 /* if (in_array($currency, ['USD', 'EUR', 'CAD']) && !in_array($userId, [42837])) {
  91.                     $lang = 'en';
  92.                 }
  93.                 if ($currency == 'EUR' && in_array($userId, [42837, 1])) {
  94.                     $lang = 'de';
  95.                 }
  96.                 if ($userId == 47002) $lang = 'pl';
  97.                 if ($userId == 47004) $lang = 'de';
  98.                 if ($userId == 51697) $lang = 'tr';
  99.                 if (in_array($userId, [47073, 43315, 47680, 48881, 51099, 51928])) $lang = 'en'; */
  100.                 $url "https://int.apichannel.cloud/gamesbycode/{$game_id}.gamecode"
  101.                      "?operator_id=40093&language={$lang}&user_id={$userId}"
  102.                      "&auth_token={$authToken}&currency={$currency}&home_url=https://candy3.win";
  103.             } else {
  104.                 $realCurrency $wager 'BON' 'RUB';
  105.                 $url "https://int.apichannel.cloud/gamesbycode/{$game_id}.gamecode"
  106.                      "?operator_id=40092&language=ru&user_id={$userId}"
  107.                      "&auth_token={$authToken}&currency={$realCurrency}&home_url=https://candy3.win";
  108.             }
  109.         } else {
  110.             $partner $yt == || $yt == 'so_yt2' 'yourluckcasino';
  111.             $url "https://pp.mobule.games/games.start"
  112.                  "?partner.alias={$partner}&partner.session={$authToken}"
  113.                  "&game.provider={$provider}&game.alias={$alias}"
  114.                  "&lang={$lang}&lobby_url=https://candy3.win/&currency={$currency}&mobile=false";
  115.         }
  116.         return $this->render('play.html.twig', [
  117.             'slot' => $slot,
  118.             'launch_url' => $url,
  119.         ]);
  120.     }
  121. }