Completed
Push — master ( 3a2708...31f349 )
by ARCANEDEV
13s
created

DeviceTracker::getModel()   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
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
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\AbstractModel;
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
     * Get the model.
22
     *
23
     * @return \Arcanedev\LaravelTracker\Models\Device
24
     */
25 18
    protected function getModel()
26
    {
27 18
        return $this->makeModel(AbstractModel::MODEL_DEVICE);
28
    }
29
30
    /**
31
     * @return \Arcanedev\LaravelTracker\Contracts\Detectors\DeviceDetector
32
     */
33 18
    private function getDeviceDetector()
34
    {
35 18
        return $this->make(DeviceDetector::class);
36
    }
37
38
    /**
39
     * @return \Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser
40
     */
41 18
    private function getUserAgentParser()
42
    {
43 18
        return $this->make(UserAgentParser::class);
44
    }
45
46
    /* ------------------------------------------------------------------------------------------------
47
     |  Main Functions
48
     | ------------------------------------------------------------------------------------------------
49
     */
50
    /**
51
     * Track the device.
52
     *
53
     * @return int
54
     */
55 18
    public function track()
56
    {
57 18
        return $this->getModel()
58 18
                    ->firstOrCreate($this->getCurrentDeviceProperties())->id;
59
    }
60
61
    /* ------------------------------------------------------------------------------------------------
62
     |  Other Functions
63
     | ------------------------------------------------------------------------------------------------
64
     */
65
    /**
66
     * Get the current device properties.
67
     *
68
     * @return array
69
     */
70 18
    private function getCurrentDeviceProperties()
71
    {
72 18
        if ($properties = $this->getDeviceDetector()->detect()) {
73 18
            $parser = $this->getUserAgentParser();
74
75 18
            $properties['platform']         = $parser->getOperatingSystemFamily();
76 18
            $properties['platform_version'] = $parser->getOperatingSystemVersion();
77 9
        }
78
79 18
        return $properties;
80
    }
81
}
82