ok
Direktori : /home2/selectio/public_html/3-idiots/app/Http/Controllers/Admin/ |
Current File : /home2/selectio/public_html/3-idiots/app/Http/Controllers/Admin/CustomerController.php |
<?php namespace App\Http\Controllers\Admin; use App\CPU\Helpers; use App\Http\Controllers\Controller; use App\Model\Order; use App\User; use Brian2694\Toastr\Facades\Toastr; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use App\Model\Subscription; use App\Model\BusinessSetting; use Rap2hpoutre\FastExcel\FastExcel; class CustomerController extends Controller { public function customer_list(Request $request) { $query_param = []; $search = $request['search']; if ($request->has('search')) { $key = explode(' ', $request['search']); $customers = User::with(['orders']) ->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('f_name', 'like', "%{$value}%") ->orWhere('l_name', 'like', "%{$value}%") ->orWhere('phone', 'like', "%{$value}%") ->orWhere('email', 'like', "%{$value}%"); } }); $query_param = ['search' => $request['search']]; } else { $customers = User::with(['orders']); } $customers = $customers->latest()->paginate(Helpers::pagination_limit())->appends($query_param); return view('admin-views.customer.list', compact('customers', 'search')); } public function status_update(Request $request) { User::where(['id' => $request['id']])->update([ 'is_active' => $request['status'] ]); DB::table('oauth_access_tokens') ->where('user_id', $request['id']) ->delete(); return response()->json([], 200); } public function view(Request $request, $id) { $customer = User::find($id); if (isset($customer)) { $query_param = []; $search = $request['search']; $orders = Order::where(['customer_id' => $id]); if ($request->has('search')) { $orders = $orders->where('id', 'like', "%{$search}%"); $query_param = ['search' => $request['search']]; } $orders = $orders->latest()->paginate(Helpers::pagination_limit())->appends($query_param); return view('admin-views.customer.customer-view', compact('customer', 'orders', 'search')); } Toastr::error('Customer not found!'); return back(); } public function delete($id) { $customer = User::find($id); $customer->delete(); Toastr::success('Customer deleted successfully!'); return back(); } public function subscriber_list(Request $request) { $query_param = []; $search = $request['search']; if ($request->has('search')) { $subscription_list = Subscription::where('email','like', "%{$search}%"); $query_param = ['search' => $request['search']]; } else { $subscription_list = new Subscription; } $subscription_list = $subscription_list->latest()->paginate(Helpers::pagination_limit())->appends($query_param); return view('admin-views.customer.subscriber-list',compact('subscription_list','search')); } public function customer_settings() { $data = BusinessSetting::where('type','like','wallet_%')->orWhere('type','like','loyalty_point_%')->get(); $data = array_column($data->toArray(), 'value','type'); return view('admin-views.customer.customer-settings', compact('data')); } public function customer_update_settings(Request $request) { if (env('APP_MODE') == 'demo') { Toastr::info(\App\CPU\translate('update_option_is_disable_for_demo')); return back(); } $request->validate([ 'add_fund_bonus'=>'nullable|numeric|max:100|min:0', 'loyalty_point_exchange_rate'=>'nullable|numeric', ]); BusinessSetting::updateOrInsert(['type' => 'wallet_status'], [ 'value' => $request['customer_wallet']??0 ]); BusinessSetting::updateOrInsert(['type' => 'loyalty_point_status'], [ 'value' => $request['customer_loyalty_point']??0 ]); BusinessSetting::updateOrInsert(['type' => 'wallet_add_refund'], [ 'value' => $request['refund_to_wallet']??0 ]); BusinessSetting::updateOrInsert(['type' => 'loyalty_point_exchange_rate'], [ 'value' => $request['loyalty_point_exchange_rate']??0 ]); BusinessSetting::updateOrInsert(['type' => 'loyalty_point_item_purchase_point'], [ 'value' => $request['item_purchase_point']??0 ]); BusinessSetting::updateOrInsert(['type' => 'loyalty_point_minimum_point'], [ 'value' => $request['minimun_transfer_point']??0 ]); Toastr::success(\App\CPU\translate('customer_settings_updated_successfully')); return back(); } public function get_customers(Request $request){ $key = explode(' ', $request['q']); $data = User::where('id','!=',0)-> where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('f_name', 'like', "%{$value}%") ->orWhere('l_name', 'like', "%{$value}%") ->orWhere('phone', 'like', "%{$value}%"); } }) ->limit(8) ->get([DB::raw('id, CONCAT(f_name, " ", l_name, " (", phone ,")") as text')]); if($request->all) $data[]=(object)['id'=>false, 'text'=>trans('messages.all')]; return response()->json($data); } /** * Export product list by excel * @param Request $request * @param $type */ public function export(Request $request){ if ($request->has('search')) { $key = explode(' ', $request['search']); $customers = User::with(['orders']) ->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('f_name', 'like', "%{$value}%") ->orWhere('l_name', 'like', "%{$value}%") ->orWhere('phone', 'like', "%{$value}%") ->orWhere('email', 'like', "%{$value}%"); } }); } else { $customers = User::with(['orders']); } $items = $customers->latest()->get(); return (new FastExcel($items))->download('customer_list.xlsx'); } }