Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/User/LookupController.php
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use App\Models\StaticPage;
use Auth, DB, Hash, Exception, File, Setting, Log ,Validator;
use App\Models\Cart, App\Models\Order;
use App\Models\SupportContact;
use App\Repositories\ProductRepository as ProductRepo;
class LookupController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct() {
// $this->middleware('auth:user');
}
/**
* @method index()
*
* @uses Index
*
* @created Ganesh
*
* @updated
*
* @param object $request - User Id
*
* @return response of success/failure details with view page
*
*/
public function static_pages(Request $request) {
$static_pages = StaticPage::where('type',$request->type)->first();
return view('user.pages.index')
->with('static_pages',$static_pages);
}
/**
* @method cart_checkout()
*
* @uses Index
*
* @created Ganesh
*
* @updated
*
* @param object $request - User Id
*
* @return response of success/failure details with view page
*
*/
public function cart_checkout(Request $request) {
$query = Cart::where('carts.ip_address',get_ip_address())
->CommonResponse()
->where('products.status', APPROVED);
$cart = $query->orderBy('carts.id','DESC')->get();
$total_price = formatted_amount($cart->sum('total_price'));
return view('user.checkout.direct_checkout')
->with('cart',$cart)
->with('total_price' , $total_price);
}
/**
* @method direct_checkout_save()
*
* @uses Save Payment
*
* @created Bhawya
*
* @updated Bhawya
*
* @param object $request
*
* @return view page
*/
public function direct_checkout_save(Request $request) {
try {
$cart = Cart::where('carts.ip_address', get_ip_address())->CommonResponse()
->where('products.status', APPROVED)
->first();
if(!$cart) {
throw new Exception(api_error(106),106);
}
$validator = Validator::make( $request->all(), [
'name' => 'required|min:2|max:100',
'email' => 'required|email|max:255',
'mobile' => 'required|digits_between:4,16|unique:users,mobile',
'password' => 'required|min:6',
]);
if($validator->fails()) {
$error = implode(',', $validator->messages()->all());
throw new Exception($error, 101);
}
DB::beginTransaction();
$user_details = ProductRepo::user_details_save($request);
$request->request->add([
'id' => $user_details->id,
]);
$billing_details = ProductRepo::user_billing_address_save($request);
$request->request->add([
'user_billing_address_id' => $billing_details->id,
]);
$order = ProductRepo::orders_save($request);
$total = $user_pay_amount = $order->total ?? 0.00;
$request->request->add([
'total' => $total,
'user_pay_amount' => $user_pay_amount,
'paid_amount' => $user_pay_amount,
'payment_id' => 'FREE-'.rand()
]);
$payment_response = ProductRepo::order_payment_save($request, $order)->getData();
if($payment_response->success) {
$cart = Cart::where('carts.ip_address', get_ip_address())->delete();
DB::commit();
\Auth::guard('user')->login($user_details);
$order = Order::where('id',$payment_response->data->order_id)->first();
return view('user.orders.success')
->with('order',$order)
->with('flash_success', $payment_response->message);
} else {
return back()->with('flash_error', $payment_response->message);
}
} catch (Exception $e) {
return redirect()->route('cart_checkout')->with('flash_error', $e->getMessage());
}
}
public function contact_request(Request $request) {
try {
$validator = Validator::make( $request->all(), [
'name' => 'required|min:2|max:100',
'email' => 'required|email|max:255',
'mobile' => 'required|digits_between:4,16,mobile',
'subject' => 'required|min:4|max:100',
'country' => 'required|min:4|max:30',
]);
if($validator->fails()) {
$error = implode(',', $validator->messages()->all());
throw new Exception($error, 101);
}
DB::beginTransaction();
$support_contact = new SupportContact();
$support_contact->name = $request->name ?? '';
$support_contact->email = $request->email ?? '';
$support_contact->mobile = $request->mobile ?? '';
$support_contact->subject = $request->subject ?? '';
$support_contact->message = $request->message ?? '';
$support_contact->country = $request->country ?? '';
$support_contact->timezone = $request->timezone ?? 'Asia/Kolkata';
if($support_contact->save()){
DB::commit();
$email_data['subject'] = tr('user_contact_message').' '.Setting::get('site_name');
$email_data['page'] = "emails.contact-response";
$email_data['data'] = $support_contact;
$email_data['email'] = Setting::get('admin_email_id') ?? 'admin@shop.com';
$email_data['message'] = tr('admin_contact_message',$support_contact->name ?? '');
$this->dispatch(new \App\Jobs\SendEmailJob($email_data));
$code = 200; $message = tr('contact_submit_success');
return $this->sendResponse($message,$code, $data=[]);
}
throw new Exception(tr('contact_save_failed'), 101);
} catch (Exception $e) {
DB::rollback();
return $this->sendError($e->getMessage(), $e->getCode());
}
}
}
Back to Directory
File Manager