Update setup with new component based layout
This commit is contained in:
@@ -2,10 +2,11 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
use App\Http\Requests\SiteEdit;
|
||||
use App\Models\{Account,
|
||||
Charge,
|
||||
Invoice,
|
||||
@@ -187,63 +188,43 @@ class AdminController extends Controller
|
||||
* 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
|
||||
* @param SiteEdit $request
|
||||
* @return RedirectResponse
|
||||
*/
|
||||
public function setup(Request $request)
|
||||
public function setup(SiteEdit $request)
|
||||
{
|
||||
if ($request->post()) {
|
||||
$validated = $request->validate([
|
||||
'site_name' => 'required|string|min:2|max:255',
|
||||
'site_email' => 'required|string|email|max:255',
|
||||
'site_address1' => 'required|string|min:2|max:255',
|
||||
'site_address2' => 'nullable|string|min:2|max:255',
|
||||
'site_city' => 'required|string|min:2|max:64',
|
||||
'site_state' => 'required|string|min:2|max:32',
|
||||
'site_postcode' => 'required|string|min:2|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',
|
||||
'email_logo' => 'nullable|image',
|
||||
]);
|
||||
$site = config('site');
|
||||
$images = ['site_logo','email_logo'];
|
||||
$validated = collect($request->validated());
|
||||
|
||||
$site = config('site');
|
||||
// Handle the images
|
||||
foreach($images as $key)
|
||||
if ($x=$request->validated($key))
|
||||
$validated->put($key,$x->storeAs('site/'.$site->site_id,$x->getClientOriginalName(),'public'));
|
||||
|
||||
// @todo - not currently rendered in the home page
|
||||
$validated['social'] = [];
|
||||
$validated['top_menu'] = [];
|
||||
foreach ($site->details as $oo)
|
||||
if ($validated->has($oo->key)) {
|
||||
// Dont set the following keys to null if they are null
|
||||
if (in_array($oo->key,$images) && is_null($validated->get($oo->key)))
|
||||
continue;
|
||||
|
||||
// Handle the images
|
||||
foreach(['site_logo','email_logo'] as $key)
|
||||
if (array_key_exists($key,$validated))
|
||||
$validated[$key] = ($x=$validated[$key])->storeAs('site/'.$site->site_id,$x->getClientOriginalName(),'public');
|
||||
$oo->value = $validated->get($oo->key) ?: '';
|
||||
$oo->save();
|
||||
|
||||
foreach ($site->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 SiteDetail;
|
||||
$oo->key = $k;
|
||||
$oo->value = $v ?: '';
|
||||
|
||||
$site->details()->save($oo);
|
||||
$validated->forget($oo->key);
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success','Settings saved');
|
||||
// Left over values to be created.
|
||||
foreach ($validated as $k=>$v) {
|
||||
$oo = new SiteDetail;
|
||||
$oo->key = $k;
|
||||
$oo->value = $v ?: '';
|
||||
|
||||
$site->details()->save($oo);
|
||||
}
|
||||
|
||||
return view('theme.backend.adminlte.a.setup');
|
||||
return redirect()
|
||||
->back()
|
||||
->with('success','Settings saved');
|
||||
}
|
||||
}
|
43
app/Http/Requests/SiteEdit.php
Normal file
43
app/Http/Requests/SiteEdit.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class SiteEdit extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
return Gate::allows('wholesaler');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'site_name' => 'required|string|min:2|max:255',
|
||||
'site_email' => 'required|string|email|max:255',
|
||||
'site_address1' => 'required|string|min:2|max:255',
|
||||
'site_address2' => 'nullable|string|min:2|max:255',
|
||||
'site_city' => 'required|string|min:2|max:64',
|
||||
'site_state' => 'required|string|min:2|max:32',
|
||||
'site_postcode' => 'required|string|min:2|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',
|
||||
'email_logo' => 'nullable|image',
|
||||
];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user