Completed
Push — master ( ec2990...7a5f39 )
by ARCANEDEV
07:59
created

DeviceTracker::getDeviceDetector()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php namespace Arcanedev\LaravelTracker\Trackers;
2
3
use Arcanedev\LaravelTracker\Contracts\Detectors\DeviceDetector;
4
use Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser;
5
use Arcanedev\LaravelTracker\Contracts\Trackers\DeviceTracker as DeviceTrackerContract;
6
use Arcanedev\LaravelTracker\Models\Device;
7
8
/**
9
 * Class     DeviceTracker
10
 *
11
 * @package  Arcanedev\LaravelTracker\Trackers
12
 * @author   ARCANEDEV <[email protected]>
13
 */
14
class DeviceTracker extends AbstractTracker implements DeviceTrackerContract
15
{
16
    /* ------------------------------------------------------------------------------------------------
17
     |  Getters & Setters
18
     | ------------------------------------------------------------------------------------------------
19
     */
20
    /**
21
     * @return \Arcanedev\LaravelTracker\Contracts\Detectors\DeviceDetector
22
     */
23 12
    private function getDeviceDetector()
24
    {
25 12
        return $this->make(DeviceDetector::class);
26
    }
27
28
    /**
29
     * @return \Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser
30
     */
31 12
    private function getUserAgentParser()
32
    {
33 12
        return $this->make(UserAgentParser::class);
34
    }
35
36
    /* ------------------------------------------------------------------------------------------------
37
     |  Main Functions
38
     | ------------------------------------------------------------------------------------------------
39
     */
40
    /**
41
     * Track the device.
42
     *
43
     * @return int
44
     */
45 12
    public function track()
46
    {
47 12
        $data  = $this->getCurrentDeviceProperties();
48 12
        $model = Device::firstOrCreate($data, $data);
49
50 12
        return $model->id;
51
    }
52
53
    /* ------------------------------------------------------------------------------------------------
54
     |  Other Functions
55
     | ------------------------------------------------------------------------------------------------
56
     */
57
    /**
58
     * Get the current device properties.
59
     *
60
     * @return array
61
     */
62 12
    private function getCurrentDeviceProperties()
63
    {
64 12
        if ($properties = $this->getDeviceDetector()->detect()) {
65 12
            $parser = $this->getUserAgentParser();
66
67 12
            $properties['platform']         = $parser->getOperatingSystemFamily();
68 12
            $properties['platform_version'] = $parser->getOperatingSystemVersion();
69 6
        }
70
71 12
        return $properties;
72
    }
73
}
74