78 lines
2.1 KiB
PHP
78 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Arr;
|
|
|
|
use App\Models\{Service,SiteDetails};
|
|
|
|
class AdminController extends Controller
|
|
{
|
|
public function service(Service $o)
|
|
{
|
|
return View('a.service',['o'=>$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');
|
|
}
|
|
} |