Completed
Push — master ( cefc6c...96cc5a )
by Kirill
03:32
created

GameService::getInactiveGames()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
3
namespace Chrl\AppBundle\Service;
4
5
use Doctrine\ORM\EntityManagerInterface;
6
use Chrl\AppBundle\Entity\Game;
7
use Chrl\AppBundle\Entity\User;
8
use Chrl\AppBundle\BuktopuhaBotApi;
9
10
/**
11
 * Game service
12
 *
13
 * @category Symfony
14
 * @package  Chrl_Buktopuha
15
 * @author   Kirill Kholodilin <[email protected]>
16
 * @license  http://www.gnu.org/copyleft/gpl.html GNU General Public License
17
 * @link     https://take2.ru/
18
 */
19
20
class GameService
21
{
22
    public $em;
23
24
    public function __construct(BuktopuhaBotApi $telegramBotApi, $config, EntityManagerInterface $entityManager)
0 ignored issues
show
Unused Code introduced by
The parameter $telegramBotApi is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $config is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
25
    {
26
        $this->em = $entityManager;
27
    }
28
29
30
    /**
31
     * @return integer
32
     */
33
    public function findGame(array $message)
34
    {
35
        $game = $this->em->getRepository('AppBundle:Game')->findOneBy(['chatId'=>$message['chat']['id']]);
36
        if (!$game) {
37
            // create game
38
            $game = new Game();
39
            $game->status = 0;
40
            $game->chatId = $message['chat']['id'];
41
            $game->title = isset($message['chat']['title'])
42
                ? $message['chat']['title']
43
                : 'No title';
44
45
            $this->em->persist($game);
46
            $this->em->flush();
47
        }
48
        return $game;
49
    }
50
51
52
    public function getCurrentUser(array $message)
53
    {
54
        $user = $this->em->getRepository('AppBundle:User')->findOneBy(['tgId'=>$message['from']['id']]);
55
        if (!$user) {
56
            $user = new User();
57
            $user->setName($message['from']['first_name'].' '.$message['from']['last_name']);
58
            $user->setAlias($message['from']['username']);
59
            $user->setTgId($message['from']['id']);
60
            $user->setGame($this->findGame($message));
61
            $user->setChatId($message['chat']['id']);
62
            $user->setPoints(0);
63
64
            $this->em->persist($user);
65
            $this->em->flush();
66
        }
67
        return $user;
68
    }
69
70
    public function getActiveGames()
71
    {
72
        $games = $this->em->getRepository('AppBundle:Game')->findBy(['status'=>1]);
73
        return $games;
74
    }
75
    public function getInactiveGames()
76
    {
77
        $games = $this->em->getRepository('AppBundle:Game')->findBy(['status'=>0]);
78
        return $games;
79
    }
80
81
    public function checkAnswer($message)
0 ignored issues
show
Unused Code introduced by
The parameter $message is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
82
    {
83
        //TODO: Check answer here
84
    }
85
86
    public function getRandomQuestion()
87
	{
88
		$count = $this->em->createQueryBuilder()
89
			->select('COUNT(u)')->from('AppBundle:Question','u')
90
			->getQuery()
91
			->getSingleScalarResult();
92
93
		return $this->em->createQuery('SELECT c FROM AppBundle:Question c ORDER BY c.id ASC')
94
			->setFirstResult(rand(0, $count - 1))
95
			->setMaxResults(1)
96
			->getSingleResult();
97
98
	}
99
}
100