SettingRepository::indexSetting()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 6
nc 4
nop 0
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Pratiksh\Adminetic\Repositories;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Support\Facades\Cache;
7
use Intervention\Image\Facades\Image;
8
use Pratiksh\Adminetic\Contracts\SettingRepositoryInterface;
9
use Pratiksh\Adminetic\Http\Requests\SettingRequest;
10
use Pratiksh\Adminetic\Models\Admin\Setting;
11
12
class SettingRepository implements SettingRepositoryInterface
13
{
14
    // Setting Index
15
    public function indexSetting()
16
    {
17
        $settings = config('adminetic.caching', true)
18
            ? (Cache::has('settings') ? Cache::get('settings') : Cache::rememberForever('settings', function () {
19
                return Setting::latest()->get();
20
            }))
21
            : Setting::latest()->get();
22
23
        $setting_grouped = Setting::where('setting_type', '<>', 11)->get()->groupBy('setting_group');
24
25
        return compact('settings', 'setting_grouped');
26
    }
27
28
    // Setting Create
29
    public function createSetting()
30
    {
31
        $setting_groups = Setting::all()->pluck('setting_group')->toArray();
32
33
        return compact('setting_groups');
34
    }
35
36
    // Setting Store
37
    public function storeSetting(SettingRequest $request)
38
    {
39
        Setting::create($request->validated());
40
    }
41
42
    // Setting Show
43
    public function showSetting(Setting $setting)
44
    {
45
        return compact('setting');
46
    }
47
48
    // Setting Edit
49
    public function editSetting(Setting $setting)
50
    {
51
        $setting_groups = Setting::all()->pluck('setting_group')->toArray();
52
53
        return compact('setting', 'setting_groups');
54
    }
55
56
    // Setting Update
57
    public function updateSetting(SettingRequest $request, Setting $setting)
58
    {
59
        $setting->update($request->validated());
60
    }
61
62
    // Setting Destroy
63
    public function destroySetting(Setting $setting)
64
    {
65
        $setting->delete();
66
    }
67
68
    // Mass Setting Store
69
    public function setting_store(Request $request)
70
    {
71
        foreach ($request->all() as $key => $value) {
72
            $setting = Setting::where('setting_name', $key)->first();
73
            if (isset($setting)) {
74
                if ($key != '_token') {
75
                    $request->validate([
76
                        $key => $this->getValidationRule($setting),
77
                    ]);
78
79
                    $this->store_setting_value($setting, $key, $value);
80
                }
81
            }
82
        }
83
    }
84
85
    private function getValidationRule(Setting $setting)
86
    {
87
        if ($setting->getRawOriginal('setting_type') == 1) {
88
            return 'max:255';
89
        } elseif ($setting->getRawOriginal('setting_type') == 2) {
90
            return 'numeric';
91
        } elseif ($setting->getRawOriginal('setting_type') == 3) {
92
            return 'max:3000';
93
        } elseif ($setting->getRawOriginal('setting_type') == 4) {
94
            return 'max:65000';
95
        } elseif ($setting->getRawOriginal('setting_type') == 5) {
96
            return 'boolean';
97
        } elseif ($setting->getRawOriginal('setting_type') == 6) {
98
            return 'numeric';
99
        } elseif ($setting->getRawOriginal('setting_type') == 7) {
100
            return 'sometimes';
101
        } elseif ($setting->getRawOriginal('setting_type') == 8) {
102
            return 'sometimes';
103
        } elseif ($setting->getRawOriginal('setting_type') == 9) {
104
            return 'sometimes';
105
        } elseif ($setting->getRawOriginal('setting_type') == 10) {
106
            return 'image|file|max:3000';
107
        }
108
    }
109
110
    private function store_setting_value(Setting $setting, $key, $value)
111
    {
112
        if ($setting->getRawOriginal('setting_type') == 1 || $setting->getRawOriginal('setting_type') == 10) {
113
            $setting->update([
114
                'string_value' => $value,
115
            ]);
116
            if ($setting->getRawOriginal('setting_type') == 10) {
117
                if (request()->has($key)) {
118
                    $setting->update([
119
                        'string_value' => $value->store('admin/setting', 'public'),
120
                    ]);
121
                    $image = Image::make($value->getRealPath());
122
                    $image->save(public_path('storage/'.$setting->string_value));
123
                }
124
            }
125
        } elseif ($setting->getRawOriginal('setting_type') == 2 || $setting->getRawOriginal('setting_type') == 6 || $setting->getRawOriginal('setting_type') == 7) {
126
            $setting->update([
127
                'integer_value' => $value,
128
            ]);
129
        } elseif ($setting->getRawOriginal('setting_type') == 3 || $setting->getRawOriginal('setting_type') == 4) {
130
            $setting->update([
131
                'text_value' => $value,
132
            ]);
133
        } elseif ($setting->getRawOriginal('setting_type') == 5) {
134
            $setting->update([
135
                'boolean_value' => $value,
136
            ]);
137
        } elseif ($setting->getRawOriginal('setting_type') == 8 || $setting->getRawOriginal('setting_type') == 9) {
138
            $setting->update([
139
                'setting_json' => $value,
140
            ]);
141
        } else {
142
            $setting->update([
143
                'string_value' => $value,
144
            ]);
145
        }
146
    }
147
}
148