KarmaCounterMiddleware::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 2
b 0
f 0
nc 1
nop 1
dl 0
loc 4
rs 10
1
<?php
2
namespace Domains\Bot\Middlewares;
3
4
use Domains\Middleware\Storage;
5
use Domains\Message;
6
use Interfaces\Gitter\Karma\Validator;
7
use Domains\Middleware\MiddlewareInterface;
8
9
/**
10
 * Проверяет "спасибо" и выводит инкремент.
11
 *
12
 * Class KarmaCounterMiddleware
13
 */
14
class KarmaCounterMiddleware implements MiddlewareInterface
15
{
16
    /**
17
     * @var Validator
18
     */
19
    protected $validator;
20
21
    /**
22
     * KarmaCounterMiddleware constructor.
23
     *
24
     * @param Validator $validator
25
     */
26
    public function __construct(Validator $validator)
27
    {
28
        $this->validator = $validator;
29
    }
30
31
    /**
32
     * @param Message $message
33
     * @return mixed
34
     */
35
    public function handle(Message $message)
36
    {
37
        $collection = $this->validator->validate($message);
38
        $hasAnswers = false;
39
40
        foreach ($collection as $state) {
41
            $user = $state->getUser();
42
43
            if ($state->isIncrement()) {
44
                $message->user->addKarmaTo($user, $message);
45
46
                if ($user->isBot()) {
47
                    $message->answer(trans('karma.bot', [
48
                        'user' => $message->user->login
49
                    ]));
50
                }
51
            }
52
53
            if (!$state->isNothing()) {
54
                $hasAnswers = true;
55
                $message->italic($state->getTranslation($user->karma_text));
56
            }
57
        }
58
59
        if (!$hasAnswers) {
60
            return $message;
61
        }
62
63
        return Storage::SIGNAL_STOP;
64
    }
65
}
66