UserChannel::handle()   B
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 21
rs 8.7624
cc 5
eloc 12
nc 5
nop 1
1
<?php
2
namespace Interfaces\Gitter\Ai;
3
4
use Domains\Message;
5
use Domains\User;
6
use Illuminate\Support\Str;
7
8
/**
9
 * Class UserChannel
10
 */
11
class UserChannel
12
{
13
    /**
14
     * @var User
15
     */
16
    protected $user;
17
18
    /**
19
     * @var string
20
     */
21
    protected $lastAnswer = '';
22
23
    /**
24
     * UserChannel constructor.
25
     * @param User $user
26
     */
27
    public function __construct(User $user)
28
    {
29
        $this->user = $user;
30
    }
31
32
    /**
33
     * @param Message $message
34
     */
35
    public function handle(Message $message)
36
    {
37
        if ($this->has($message, ['привет', 'ку', 'здравствуй'])) {
38
            $this->answer($message, 'ну привет, коль не шутишь :)');
39
40
41
        } else if ($this->has($message, 'как дела')) {
42
            $this->answer($message, 'пока не родила :trollface:');
43
44
45
        } else if ($this->has($message, 'когда родишь')) {
46
            if ($this->lastAnswer === 'пока не родила :trollface:') {
47
                $this->answer($message, 'в процессе :D');
48
            } else {
49
                $this->answer($message, 'м?');
50
            }
51
52
        } else {
53
            $this->answer($message, $message->text_without_special_chars . '?');
54
        }
55
    }
56
57
    /**
58
     * @param Message $message
59
     * @param $text
60
     * @return bool
61
     */
62
    protected function has(Message $message, $text)
63
    {
64
        return Str::contains($message->text_without_special_chars, $text);
65
    }
66
67
    /**
68
     * @param Message $message
69
     * @param $text
70
     */
71
    protected function answer(Message $message, $text)
72
    {
73
        $this->lastAnswer = $text;
74
        $message->italic(sprintf('@%s, ' . $text, $this->user->login));
75
    }
76
}