Completed
Push — master ( a1f3ed...74c577 )
by Kirill
02:49
created

KarmaCounterMiddleware::handle()   B

Complexity

Conditions 6
Paths 14

Size

Total Lines 30
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 30
rs 8.439
cc 6
eloc 16
nc 14
nop 1
1
<?php
2
namespace Domains\Bot\Middlewares;
3
4
use Interfaces\Gitter\Middleware\Storage;
5
use Domains\Message;
6
use Interfaces\Gitter\Karma\Validator;
7
use Interfaces\Gitter\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
    public function __construct()
25
    {
26
        $this->validator = new Validator();
27
    }
28
29
    /**
30
     * @param Message $message
31
     * @return mixed
32
     */
33
    public function handle(Message $message)
34
    {
35
        $collection = $this->validator->validate($message);
36
        $hasAnswers = false;
37
38
        foreach ($collection as $state) {
39
            $user = $state->getUser();
40
41
            if ($state->isIncrement()) {
42
                $message->user->addKarmaTo($user, $message);
43
44
                if ($user->id === \Auth::user()->id) {
45
                    $message->answer(\Lang::get('karma.bot', [
46
                        'user' => $message->user->login
47
                    ]));
48
                }
49
            }
50
51
            if (!$state->isNothing()) {
52
                $hasAnswers = true;
53
                $message->italic($state->getTranslation($user->karma_text));
54
            }
55
        }
56
57
        if (!$hasAnswers) {
58
            return $message;
59
        }
60
61
        return Storage::SIGNAL_STOP;
62
    }
63
}
64