<?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 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!');;
	}
}