You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
4.2 KiB

2 years ago
<?php
namespace App\Http\Controllers;
use App\Mail\ContactMail;
use Illuminate\Http\Request;
use App\CentralLogics\Helpers;
use App\Models\BusinessSetting;
use App\Models\ContactMessage;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Support\Facades\Mail;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
/*$this->middleware('auth');*/
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home-v2');
}
public function terms_and_conditions()
{
$data = self::get_settings('terms_and_conditions');
return view('terms-and-conditions',compact('data'));
}
public function about_us()
{
$data = self::get_settings('about_us');
return view('about-us',compact('data'));
}
public function contact_us(Request $request)
{
if ($request->isMethod('POST')) {
$request->validate([
'name' => 'required',
'email' => 'required|email:filter',
'message' => 'required',
],[
'name.required' => translate('messages.Name is required!'),
'email.required' => translate('messages.Email is required!'),
'email.filter' => translate('messages.Must ba a valid email!'),
'message.required' => translate('messages.Message is required!'),
]);
$email = Helpers::get_settings('email_address');
$messageData = [
'name' => $request->name,
'email' => $request->email,
'message' => $request->message,
];
ContactMessage::create($messageData);
$business_name=Helpers::get_settings('business_name') ?? 'Stackfood';
$subject='Enquiry from '.$business_name;
try{
if(config('mail.status')) {
Mail::to($email)->send(new ContactMail($messageData,$subject));
Toastr::success(translate('messages.Thanks_for_your_enquiry._We_will_get_back_to_you_soon.'));
}
}catch(\Exception $ex)
{
info($ex);
}
return back();
}
return view('contact-us');
}
public function privacy_policy()
{
$data = self::get_settings('privacy_policy');
return view('privacy-policy',compact('data'));
}
public function refund_policy()
{
$data = self::get_settings('refund_policy');
abort_if($data['status'] == 0 ,404);
return view('refund_policy',compact('data'));
}
public function shipping_policy()
{
$data = self::get_settings('shipping_policy');
abort_if($data['status'] == 0 ,404);
return view('shipping_policy',compact('data'));
}
public function cancellation_policy()
{
$data = self::get_settings('cancellation_policy');
abort_if($data['status'] == 0 ,404);
return view('cancellation_policy',compact('data'));
}
public static function get_settings($name)
{
$config = null;
$data = BusinessSetting::where(['key' => $name])->first();
if (isset($data)) {
$config = json_decode($data['value'], true);
if (is_null($config)) {
$config = $data['value'];
}
}
return $config;
}
public function lang($local)
{
$direction = BusinessSetting::where('key', 'site_direction')->first();
$direction = $direction->value ?? 'ltr';
$language = BusinessSetting::where('key', 'system_language')->first();
foreach (json_decode($language['value'], true) as $key => $data) {
if ($data['code'] == $local) {
$direction = isset($data['direction']) ? $data['direction'] : 'ltr';
}
}
session()->forget('landing_language_settings');
Helpers::landing_language_load();
session()->put('landing_site_direction', $direction);
session()->put('landing_local', $local);
return redirect()->back();
}
}