131 lines
3.4 KiB
PHP
131 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Http\UploadedFile;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
use App\Mail\{OrderRequestApprove,OrderRequestReject};
|
|
use App\Models\{Service,SiteDetails};
|
|
|
|
class AdminHomeController extends Controller
|
|
{
|
|
public function service(Service $o)
|
|
{
|
|
return View('a.service',['o'=>$o]);
|
|
}
|
|
|
|
public function service_update(Request $request, Service $o)
|
|
{
|
|
if (! $o->validStatus(strtolower($request->input('action'))))
|
|
return $this->service($o);
|
|
|
|
$action = strtolower($request->input('action'));
|
|
|
|
switch ($action)
|
|
{
|
|
case 'approve':
|
|
// Send an email to the supplier.
|
|
// @todo Change to address to suppliers email address.
|
|
Mail::to('help@graytech.net.au')
|
|
->queue((new OrderRequestApprove($o,$request->input('order_notes') ?: 'NONE'))->onQueue('high'));
|
|
|
|
// Send an email to the client.
|
|
// @todo Your order has been submitted to supplier.
|
|
|
|
// Update the service to "ORDER-SENT"
|
|
$o->nextStatus($action);
|
|
|
|
break;
|
|
|
|
case 'reject':
|
|
$o->order_info = array_merge($o->order_info ? $o->order_info : [],['reason'=>$request->input('notes')]);
|
|
|
|
// Send mail to user
|
|
Mail::to($o->orderby->email)->queue((new OrderRequestReject($o,$request->input('notes')))->onQueue('email'));
|
|
|
|
$o->nextStatus($action);
|
|
break;
|
|
|
|
case 'hold':
|
|
case 'release':
|
|
$o->nextStatus($action);
|
|
break;
|
|
|
|
case 'update_reference':
|
|
$o->order_info = array_merge($o->order_info ? $o->order_info : [],['order_reference'=>$request->input('notes')]);
|
|
$o->save();
|
|
|
|
// No action specified.
|
|
default:
|
|
return $this->service($o);
|
|
}
|
|
|
|
return redirect(url('/a/service',[$o->id]));
|
|
}
|
|
|
|
public function setup()
|
|
{
|
|
return view('a.setup');
|
|
}
|
|
|
|
public function setup_update(Request $request)
|
|
{
|
|
$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_phone' => 'nullable|regex:/[0-9 ]+/|min:6|max:12',
|
|
'site_fax' => 'nullable|regex:/[0-9 ]+/|min:6|max:12',
|
|
]);
|
|
|
|
// If we are more input that sample data, reject the update.
|
|
if (config('SITE_SETUP')->allowed_keys(array_keys($request->except('_token'))))
|
|
return redirect()->back()
|
|
->withInput()
|
|
->withErrors('Invalid configuration - values not expected.');
|
|
|
|
foreach ($request->except('_token') as $key => $value)
|
|
{
|
|
if (! $value) {
|
|
SiteDetails::where('site_id',config('SITE_SETUP')->id)->where('key',$key)->delete();
|
|
|
|
} else {
|
|
try {
|
|
if ($key == 'site_logo' AND $value instanceof UploadedFile)
|
|
{
|
|
$path = $value->storeAs('site/'.config('SITE_SETUP')->id,$value->getClientOriginalName(),'public');
|
|
|
|
SiteDetails::updateOrCreate([
|
|
'site_id'=>config('SITE_SETUP')->id,
|
|
'key'=>$key,
|
|
],[
|
|
'value'=>$path,
|
|
]);
|
|
|
|
} else {
|
|
// Update or create our config record.
|
|
SiteDetails::updateOrCreate([
|
|
'site_id'=>config('SITE_SETUP')->id,
|
|
'key'=>$key,
|
|
],[
|
|
'value'=>$value,
|
|
]);
|
|
}
|
|
|
|
} catch (\Exception $e) {
|
|
Log::debug($e->getMessage(),['k'=>$key,'v'=>$value]);
|
|
}
|
|
}
|
|
}
|
|
|
|
return redirect()->back()
|
|
->with('success','Setup Updated!');;
|
|
}
|
|
} |