Completed
Push — master ( 0f3f6d...5694f4 )
by ARCANEDEV
14s
created

CookieTracker::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\Trackers\CookieTracker as CookieTrackerContract;
4
use Arcanedev\LaravelTracker\Support\BindingManager;
5
use Illuminate\Contracts\Cookie\QueueingFactory;
6
use Ramsey\Uuid\Uuid;
7
8
/**
9
 * Class     CookieTracker
10
 *
11
 * @package  Arcanedev\LaravelTracker\Trackers
12
 * @author   ARCANEDEV <[email protected]>
13
 */
14
class CookieTracker extends AbstractTracker implements CookieTrackerContract
15
{
16
    /* -----------------------------------------------------------------
17
     |  Getters and Setters
18
     | -----------------------------------------------------------------
19
     */
20
21
    /**
22
     * Get the model.
23
     *
24
     * @return \Arcanedev\LaravelTracker\Models\Cookie
25
     */
26 3
    protected function getModel()
27
    {
28 3
        return $this->makeModel(BindingManager::MODEL_COOKIE);
29
    }
30
31
    /* -----------------------------------------------------------------
32
     |  Main Methods
33
     | -----------------------------------------------------------------
34
     */
35
36
    /**
37
     * Track the cookie.
38
     *
39
     * @param  mixed  $cookie
40
     *
41
     * @return int
42
     */
43 3
    public function track($cookie)
44
    {
45 3
        if ( ! $cookie) {
46
            $this->cookie()->queue(
47
                $this->cookie()->make($this->getConfig('cookie.name'), $cookie = (string) Uuid::uuid4())
48
            );
49
        }
50
51 3
        return $this->getModel()
52 3
                    ->newQuery()
53 3
                    ->firstOrCreate(['uuid' => $cookie])
54 3
                    ->getKey();
55
    }
56
57
    /* -----------------------------------------------------------------
58
     |  Other Methods
59
     | -----------------------------------------------------------------
60
     */
61
62
    /**
63
     * Get the cookie instance.
64
     *
65
     * @return \Illuminate\Cookie\CookieJar
66
     */
67
    private function cookie()
68
    {
69
        return $this->make(QueueingFactory::class);
70
    }
71
}
72