Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
50.00% |
2 / 4 |
CRAP | |
76.47% |
26 / 34 |
| SettingController | |
0.00% |
0 / 1 |
|
50.00% |
2 / 4 |
16.55 | |
76.47% |
26 / 34 |
| index | |
0.00% |
0 / 1 |
3.01 | |
91.67% |
11 / 12 |
|||
| store | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| modules | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 7 |
|||
| saveData | |
100.00% |
1 / 1 |
8 | |
100.00% |
13 / 13 |
|||
| <?php | |
| namespace App\Http\Controllers\Admin; | |
| use App\Module; | |
| use App\Setting; | |
| use Illuminate\Http\Request; | |
| use Illuminate\View\View; | |
| use Illuminate\Routing\Redirector; | |
| use App\Http\Controllers\Controller; | |
| use App\Http\Requests\ModuleRequest; | |
| use Illuminate\Support\Facades\Auth; | |
| use App\Http\Requests\SettingRequest; | |
| use Illuminate\Http\RedirectResponse; | |
| class SettingController extends Controller | |
| { | |
| /** Redirect to this path after each operation success*/ | |
| private $redirectSuccessPath = '/admin/settings'; | |
| /** View folder */ | |
| private $viewDirectory = 'admin.settings.'; | |
| /** | |
| * Display a listing of the resource. | |
| * @return View | |
| */ | |
| public function index() :View | |
| { | |
| $title= __('settings.head'); | |
| $head = metaFields('settings', 'add_new', getCurrentLocale()) ?? __('settings.new'); | |
| $settingsAction= route('settings.store'); | |
| $modulesAction= route('settings.modules'); | |
| $settings = Setting::cursor(); | |
| $modules = Module::where('deleted_at', null)->cursor(); | |
| if(count($settings) > 0){ | |
| $head = metaFields('settings', 'edit', getCurrentLocale()) ?? __('settings.edit'); | |
| foreach ($settings as $setting) { | |
| $settings->{$setting['key']} = $setting['value']; | |
| } | |
| } else { | |
| $settings = null; | |
| } | |
| return view($this->viewDirectory.'form',compact('title', 'head', 'settingsAction','modulesAction', 'settings', 'modules')); | |
| } | |
| /** | |
| * Store a newly created resource in storage. | |
| * | |
| * @param SettingRequest $settingRequest | |
| * @return RedirectResponse|Redirector | |
| */ | |
| public function store(SettingRequest $settingRequest) :RedirectResponse | |
| { | |
| $this->saveData($settingRequest); | |
| return redirect($this->redirectSuccessPath)->with('message', __('dashboard.saveDone')); | |
| } | |
| /** | |
| * Store modules metas in modules table. | |
| * | |
| * @param ModuleRequest $moduleRequest | |
| * @return RedirectResponse|Redirector | |
| */ | |
| public function modules(ModuleRequest $moduleRequest) :RedirectResponse | |
| { | |
| $fields = $moduleRequest->fields; | |
| $moduleName = $moduleRequest->module_name; | |
| $data = array_merge_recursive($moduleName, $fields); | |
| foreach ($data as $path => $field) { | |
| Module::where('path', $path)->update([ | |
| 'meta' => $field | |
| ]); | |
| } | |
| return redirect($this->redirectSuccessPath)->with('message', __('dashboard.saveDone')); | |
| } | |
| /** | |
| * Handle Save form data | |
| * | |
| * @param SettingRequest $request | |
| * @return void | |
| */ | |
| private function saveData(SettingRequest $request):void | |
| { | |
| $data = $request->all(); | |
| $userRole = Auth::user()->role; | |
| !$request->has('website_disable') && $userRole == 'super_admin' ? $data['website_disable'] = 0 : 1; | |
| !$request->has('dashboard_disable') && $userRole == 'super_admin' ? $data['dashboard_disable'] = 0 : 1; | |
| if ($request->has('update')){ | |
| foreach ($data as $key => $value) { | |
| Setting::where('key', $key)->update([ | |
| 'value' => $value | |
| ]); | |
| } | |
| } else { | |
| foreach ($data as $key => $value) { | |
| Setting::create([ | |
| 'key' => $key, | |
| 'value' => $value, | |
| ]); | |
| } | |
| } | |
| } | |
| } |