$o]); } /** * Site setup * * @note This method is protected by the routes * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse */ public function setup(Request $request) { if ($request->post()) { $validated = $request->validate([ 'site_name' => 'required|string|max:255', 'site_email' => 'required|string|email|max:255', 'site_address1' => 'required|string|max:255', 'site_address2' => 'nullable|string|max:255', 'site_city' => 'required|string|max:64', 'site_state' => 'required|string|max:32', 'site_postcode' => 'required|string|max:8', 'site_description' => 'nullable|string|min:5', 'site_phone' => 'nullable|regex:/[0-9 ]+/|min:6|max:12', 'site_fax' => 'nullable|regex:/[0-9 ]+/|min:6|max:12', 'site_tax' => 'required|regex:/[0-9 ]+/|size:14', 'social' => 'nullable|array', 'top_menu' => 'nullable|array', 'site_logo' => 'nullable|image', ]); $so = config('SITE_SETUP'); // @todo - not currently rendered in the home page $validated['social'] = []; $validated['top_menu'] = []; // Handle the images foreach(['site_logo','email_logo'] as $key) if (array_key_exists($key,$validated)) $validated[$key] = ($x=$validated[$key])->storeAs('site/'.config('SITE_SETUP')->site_id,$x->getClientOriginalName(),'public'); foreach ($so->details as $oo) if (array_key_exists($oo->key,$validated)) { $oo->value = Arr::get($validated,$oo->key); $oo->save(); unset($validated[$oo->key]); } // Left over values to be created. foreach ($validated as $k=>$v) { $oo = new SiteDetails; $oo->key = $k; $oo->value = $v ?: ''; $so->details()->save($oo); } return redirect()->back() ->with('success','Settings saved'); } return view('a.setup'); } }