Completed
Push — master ( 132ead...b855df )
by Daniel
02:10
created

Ticket::meta()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
namespace Groove\Api;
4
5
use Groove\Api;
6
use Groove\Models\Ticket as Model;
7
8
class Ticket extends Api
9
{
10
    /**
11
     * Create ticket.
12
     *
13
     * @param  string $body
14
     * @param  string|array $from
15
     * @param  string|array $to
16
     * @param  array $params
17
     * @return Model
18
     */
19
    public function create($body, $from, $to, $params = [])
20
    {
21
        $params = array_merge(['body' => $body, 'from' => $from, 'to' => $to], $params);
22
23
        $response = $this->client->post('tickets', $params);
24
25
        return new Model($response->ticket, $this->client);
26
    }
27
28
    /**
29
     * List tickets.
30
     *
31
     * @param  array $params
32
     * @return \Illuminate\Support\Collection
33
     */
34
    public function list($params = [])
35
    {
36
        $response = $this->client->get('tickets', $params);
37
38
        return collect($response->tickets)->transform(function ($ticket) {
39
            return new Model($ticket, $this->client);
40
        });
41
    }
42
43
    /**
44
     * Get tickets meta.
45
     *
46
     * @param  array $params
47
     * @return \stdClass
48
     */
49
    public function meta($params = [])
50
    {
51
        $response = $this->client->get('tickets', $params);
52
53
        return $response->meta;
54
    }
55
56
    /**
57
     * Find ticket.
58
     *
59
     * @param  int|string $ticketNumber
60
     * @return Model
61
     */
62
    public function find($ticketNumber)
63
    {
64
        $ticket = $this->client->get("tickets/$ticketNumber")->ticket;
65
66
        return new Model($ticket, $this->client);
67
    }
68
69
    /**
70
     * Ticket state.
71
     *
72
     * @param  int|string $ticketNumber
73
     * @return mixed
74
     */
75
    public function ticketState($ticketNumber)
76
    {
77
        return $this->client->get("tickets/$ticketNumber/state");
78
    }
79
80
    /**
81
     * Update a ticket's State.
82
     *
83
     * @param  int|string $ticketNumber
84
     * @param  string $state // "unread", "opened", "pending", "closed", "spam"
85
     * @return bool
86
     */
87
    public function updateState($ticketNumber, $state)
88
    {
89
        $this->client->put("tickets/$ticketNumber/state", ['state' => $state]);
90
91
        return true;
92
    }
93
94
    /**
95
     * Ticket assignee.
96
     *
97
     * @param  int|string $ticketNumber
98
     * @return mixed
99
     */
100
    public function ticketAssignee($ticketNumber)
101
    {
102
        return $this->client->get("tickets/$ticketNumber/assignee");
103
    }
104
105
    /**
106
     * Update a ticket's assignee.
107
     *
108
     * @param  int|string $ticketNumber
109
     * @param  string $email
110
     * @return bool
111
     */
112
    public function updateAssignee($ticketNumber, $email)
113
    {
114
        $this->client->put("tickets/$ticketNumber/assignee", ['assignee' => $email]);
115
116
        return true;
117
    }
118
119
    /**
120
     * Ticket count.
121
     *
122
     * @return mixed
123
     */
124
    public function count()
125
    {
126
        return $this->client->get('tickets/count');
127
    }
128
129
    /**
130
     * Update a ticket's priority.
131
     *
132
     * @param  int|string $ticketNumber
133
     * @param  string $priority
134
     * @return bool
135
     */
136
    public function updatePriority($ticketNumber, $priority)
137
    {
138
        $this->client->put("tickets/$ticketNumber/priority", ['priority' => $priority]);
139
140
        return true;
141
    }
142
143
    /**
144
     * Update a ticket's assigned group.
145
     *
146
     * @param  int|string $ticketNumber
147
     * @param  string $groupID
148
     * @return bool
149
     */
150
    public function updateGroup($ticketNumber, $groupID)
151
    {
152
        $this->client->put("tickets/$ticketNumber/assigned_group", ['group' => $groupID]);
153
154
        return true;
155
    }
156
}
157