Leads::getByClient()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 2
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Uon\Endpoints;
4
5
use Uon\Client;
6
7
/**
8
 * Collection of methods for work with leads created by users
9
 *
10
 * @package Uon\Endpoint
11
 */
12
class Leads extends Client
13
{
14
    /**
15
     * Create new lead
16
     *
17
     * @link https://api.u-on.ru/{key}/lead/create.{_format}
18
     *
19
     * @param array $parameters List of parameters [r_id_internal, r_dat, status_id, sources etc.]
20
     *
21
     * @return null|object|\Uon\Interfaces\ClientInterface
22
     */
23
    public function create(array $parameters)
24
    {
25
        // Set HTTP params
26
        $this->type     = 'post';
27
        $this->endpoint = 'lead/create';
28
        $this->params   = $parameters;
29
30
        return $this->done();
31
    }
32
33
    /**
34
     * Get leads data by client ID
35
     *
36
     * @link https://api.u-on.ru/{key}/lead-by-client/{id}.{_format}
37
     *
38
     * @param int $id   Unique lead ID
39
     * @param int $page Number of page, 1 by default
40
     *
41
     * @return null|object|\Uon\Interfaces\ClientInterface
42
     */
43
    public function getByClient(int $id, int $page = 1)
44
    {
45
        // Set HTTP params
46
        $this->type     = 'get';
47
        $this->endpoint = 'lead-by-client/' . $id . '/' . $page;
48
49
        return $this->done();
50
    }
51
52
    /**
53
     * Get lead by ID
54
     *
55
     * @link https://api.u-on.ru/{key}/lead/{id}.{_format}
56
     *
57
     * @param int $id Unique lead ID
58
     *
59
     * @return null|object|\Uon\Interfaces\ClientInterface
60
     */
61
    public function get(int $id)
62
    {
63
        // Set HTTP params
64
        $this->type     = 'get';
65
        $this->endpoint = 'lead/' . $id;
66
67
        return $this->done();
68
    }
69
70
    /**
71
     * Get all leads into dates range (and by sources if needed)
72
     *
73
     * @link https://api.u-on.ru/{key}/lead/{date_from}/{date_to}.{_format}
74
     *
75
     * @param string   $dateFrom Start of dates range
76
     * @param string   $dateTo   End of dates range
77
     * @param int      $page     Number of page, 1 by default
78
     * @param int|null $sourceId Source ID, eg ID of SMS or JivoSite
79
     *
80
     * @return null|object|\Uon\Interfaces\ClientInterface
81
     */
82
    public function getDate(string $dateFrom, string $dateTo, int $page = 1, $sourceId = null)
83
    {
84
        $endpoint = 'leads/' . $dateFrom . '/' . $dateTo;
85
        if (null !== $sourceId) {
86
            $endpoint .= '/' . $sourceId;
87
        }
88
        $endpoint .= '/' . $page;
89
90
        // Set HTTP params
91
        $this->type     = 'get';
92
        $this->endpoint = $endpoint;
93
94
        return $this->done();
95
    }
96
97
    /**
98
     * Get lead data by filters
99
     *
100
     * @link  https://api.u-on.ru/{key}/lead/search.{_format}
101
     * @since 1.8.2
102
     *
103
     * @param array $parameters List of parameters
104
     *
105
     * @return null|object|\Uon\Interfaces\ClientInterface
106
     */
107
    public function search(array $parameters = [])
108
    {
109
        // Set HTTP params
110
        $this->type     = 'get';
111
        $this->endpoint = 'lead/search';
112
        $this->params   = $parameters;
113
114
        return $this->done();
115
    }
116
}
117