Passed
Pull Request — master (#788)
by John
06:12
created

GroupMemberMessager::formatInvitedMessageToUser()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 11
rs 10
1
<?php
2
3
namespace App\Models\Eloquent\Messager;
4
5
use App\Models\Eloquent\Message;
6
7
class GroupMemberMessager extends UniversalMessager
8
{
9
    public static function sendApplyJoinMessageToLeader($config)
10
    {
11
        $messages = Message::where([
12
            'receiver' => $config['receiver'],
13
            'type'     => $config['type'],
14
            'unread'   => true
15
        ])->get();
16
17
        if (filled($messages)) {
18
            foreach ($messages as $message) {
19
                $data = json_decode($message->data, true);
20
                if ($data['group']['gcode'] == $config['data']['group']['gcode']) {
21
                    array_push($data['user'], $config['data']['user'][0]);
22
                    $message->data = json_encode($data);
23
                    $message->level = $config['level'];
24
                    $message->save();
25
                    return true;
26
                }
27
            }
28
        }
29
30
        return self::sendUniversalMessage($config);
31
    }
32
33
    private static function proceedUserAndGroupInfo($data)
34
    {
35
        $userList = [];
36
37
        foreach ($data['user'] as $user) {
38
            $uid = $user['uid'];
39
            $name = $user['name'];
40
            $url = route('user.view', ['uid' => $uid]);
41
            $userList[] = "[$name]($url)";
42
        }
43
44
        $userString = implode(__('message.delimiter'), $userList);
0 ignored issues
show
Bug introduced by
It seems like __('message.delimiter') can also be of type string; however, parameter $pieces of implode() does only seem to accept array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

44
        $userString = implode(/** @scrutinizer ignore-type */ __('message.delimiter'), $userList);
Loading history...
45
        $groupName = $data['group']['name'];
46
        $groupURL = route('group.detail', ['gcode' => $data['group']['gcode']]);
47
48
        return [$userString, $groupName, $groupURL];
49
    }
50
51
    public static function formatApplyJoinMessageToLeader($data)
52
    {
53
        [$userString, $groupName, $groupURL] = self::proceedUserAndGroupInfo($data);
54
55
        return self::formatUniversalMessage('message.group.applied.desc', [
56
            'userList' => $userString,
57
            'groupInfo' => "[$groupName]($groupURL)",
58
            'receiver' => $data['receiver'],
59
            'sender' => $data['sender'],
60
        ]);
61
    }
62
63
    public static function sendAgreedJoinMessageToLeader($config)
64
    {
65
        $messages = Message::where([
66
            'receiver' => $config['receiver'],
67
            'type'     => $config['type'],
68
            'unread'   => true
69
        ])->get();
70
71
        if (filled($messages)) {
72
            foreach ($messages as $message) {
73
                $data = json_decode($message->data, true);
74
                if ($data['group'] == $config['data']['group']) {
75
                    array_push($data['user'], $config['data']['user'][0]);
76
                    $message->data = json_encode($data);
77
                    $message->level = $config['level'];
78
                    $message->save();
79
                    return true;
80
                }
81
            }
82
        }
83
84
        return self::sendUniversalMessage($config);
85
    }
86
87
    public static function formatAgreedJoinMessageToLeader($data)
88
    {
89
        [$userString, $groupName, $groupURL] = self::proceedUserAndGroupInfo($data);
90
91
        return self::formatUniversalMessage('message.group.agreed.desc', [
92
            'userList' => $userString,
93
            'groupInfo' => "[$groupName]($groupURL)",
94
            'receiver' => $data['receiver'],
95
            'sender' => $data['sender'],
96
        ]);
97
    }
98
99
    public static function sendInvitedMessageToUser($config)
100
    {
101
        return self::sendUniversalMessage($config);
102
    }
103
104
    public static function formatInvitedMessageToUser($data)
105
    {
106
        $senderName = $data['sender']['name'];
107
        $groupName = $data['group']['name'];
108
        $groupURL = route('group.detail', ['gcode' => $data['group']['gcode']]);
109
110
        return self::formatUniversalMessage('message.group.invited.desc', [
111
            'senderName' => $senderName,
112
            'groupInfo' => "[$groupName]($groupURL)",
113
            'receiver' => $data['receiver'],
114
            'sender' => $data['sender'],
115
        ]);
116
    }
117
}
118