Completed
Pull Request — master (#7)
by
unknown
05:14
created

Ticket::updateState()   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 2
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
     * Find ticket.
45
     *
46
     * @param  int|string $ticketNumber
47
     * @return Model
48
     */
49
    public function find($ticketNumber)
50
    {
51
        $ticket = $this->client->get("tickets/$ticketNumber")->ticket;
52
53
        return new Model($ticket, $this->client);
54
    }
55
56
    /**
57
     * Ticket state.
58
     *
59
     * @param  int|string $ticketNumber
60
     * @return mixed
61
     */
62
    public function ticketState($ticketNumber)
63
    {
64
        return $this->client->get("tickets/$ticketNumber/state");
65
    }
66
    
67
    /**
68
     * Update a ticket's State.
69
     *
70
     * @param  int|string $ticketNumber
71
     * @param  string $state // "unread", "opened", "pending", "closed","spam"
72
     * @return mixed
73
     */
74
    public function updateState($ticketNumber, $state)
75
    {
76
        $this->client->put("tickets/$ticketNumber/state", ['state' => $state]);
77
78
        return true;
79
    }
80
    
81
    /**
82
     * Ticket assignee.
83
     *
84
     * @param  int|string $ticketNumber
85
     * @return mixed
86
     */
87
    public function ticketAssignee($ticketNumber)
88
    {
89
        return $this->client->get("tickets/$ticketNumber/assignee");
90
    }
91
92
    /**
93
     * Update a ticket's assignee.
94
     *
95
     * @param  int|string $ticketNumber
96
     * @param  string $email
97
     * @return bool
98
     */
99
    public function updateAssignee($ticketNumber, $email)
100
    {
101
        $this->client->put("tickets/$ticketNumber/assignee", ['assignee' => $email]);
102
103
        return true;
104
    }
105
106
    /**
107
     * Ticket count.
108
     *
109
     * @return mixed
110
     */
111
    public function count()
112
    {
113
        return $this->client->get('tickets/count');
114
    }
115
116
    /**
117
     * Update a ticket's priority.
118
     *
119
     * @param  int|string $ticketNumber
120
     * @param  string $priority
121
     * @return bool
122
     */
123
    public function updatePriority($ticketNumber, $priority)
124
    {
125
        $this->client->put("tickets/$ticketNumber/priority", ['priority' => $priority]);
126
127
        return true;
128
    }
129
130
    /**
131
     * Update a ticket's assigned group.
132
     *
133
     * @param  int|string $ticketNumber
134
     * @param  string $groupID
135
     * @return bool
136
     */
137
    public function updateGroup($ticketNumber, $groupID)
138
    {
139
        $this->client->put("tickets/$ticketNumber/assigned_group", ['group' => $groupID]);
140
141
        return true;
142
    }
143
}
144