UserData::getData()   A
last analyzed

Complexity

Conditions 4
Paths 3

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 5
c 1
b 0
f 0
nc 3
nop 2
dl 0
loc 11
rs 10
1
<?php
2
3
namespace App\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Illuminate\Support\Facades\Cache;
7
8
class UserData extends Model
9
{
10
    protected $table = 'users';
11
    protected $fillable = ['image'];
12
13
    public static function saveData($userId, $key, $value)
14
    {
15
        $userData = self::getCachedUserData($userId);
16
17
        if (!$userData) {
18
            return "null";
19
        }
20
21
        $data = json_decode($userData->image, true) ?? [];
22
        $data[$key] = $value;
23
24
        $userData->image = json_encode($data);
25
        $userData->save();
26
27
        self::cacheUserData($userId, $userData);
28
    }
29
30
    public static function getData($userId, $key)
31
    {
32
        $userData = self::getCachedUserData($userId);
33
34
        if (!$userData || !$userData->image) {
35
            return "null";
36
        }
37
38
        $data = json_decode($userData->image, true) ?? [];
39
40
        return isset($data[$key]) ? $data[$key] : null;
41
    }
42
43
    public static function removeData($userId, $key)
44
    {
45
        $userData = self::getCachedUserData($userId);
46
47
        if (!$userData || !$userData->image) {
48
            return "null";
49
        }
50
51
        $data = json_decode($userData->image, true) ?? [];
52
53
        if (isset($data[$key])) {
54
            unset($data[$key]);
55
            $userData->image = json_encode($data);
56
            $userData->save();
57
58
            self::cacheUserData($userId, $userData);
59
        }
60
    }
61
62
    private static function getCachedUserData($userId)
63
    {
64
        return Cache::remember('user_data_' . $userId, now()->addMinutes(10), function () use ($userId) {
65
            return self::where('id', $userId)->first();
66
        });
67
    }
68
69
    private static function cacheUserData($userId, $userData)
70
    {
71
        Cache::put('user_data_' . $userId, $userData, now()->addMinutes(10));
72
    }
73
}
74