Edit File: ClientController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\Client\AddEditClientRequest; use App\Jobs\BlockUser; use App\Jobs\DeleteUser; use App\Jobs\NotifyUser; use App\Models\City; use App\Models\Nationality; use App\Models\User; use App\Traits\Report; use Carbon\Carbon; use Illuminate\Http\Request; use Yajra\DataTables\DataTables; use App\Http\Requests\Admin\Notifiation\SendRequest; class ClientController extends Controller { // public function index(Request $request) { // if ($request->ajax()) { // return $this->prepareDatatable($request); // } // // $rows = User::where('type' , 'user')->latest()->get(); // return view('admin.clients.index', compact('rows')); // } public function index($id = null) { if (request()->ajax()) { $rows = User::where('type' , 'user')->search(request()->searchArray)->OrderBy('created_at','desc')->paginate(10); $html = view('admin.clients.table' ,compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.clients.index'); } // public function prepareDatatable($data = []) { // $rows = User::query(); // // if (!is_null($data['min']) && !is_null($data['max'])) { // $rows = $rows->whereBetween('created_at', [$data['min'], $data['max']]); // } // // return DataTables::of($rows) // ->addColumn('id', function ($row) { // return (string) view('admin.shared.datatables.checkbox', compact('row')); // }) // ->addColumn('created_at', function ($row) { // return '<td>' . Carbon::parse($row->created_at)->format('d/m/Y') . '</td>'; // }) // ->addColumn('image', function ($row) { // return '<td><a target="_blank" href="' . $row->avatar . '"><img src="' . $row->avatar . '" width="50px" height="50px" alt=""></a></td>'; // }) // ->addColumn('phone', function ($row) { // return '<td><a href="tel:' . $row->phone . '">' . $row->phone . '</a></td>'; // }) // ->addColumn('email', function ($row) { // return '<td><a href="mailto:' . $row->email . '">' . $row->email . '</a></td>'; // }) // ->addColumn('block', function ($row) { // return (string) view('admin.shared.datatables.user.block', compact('row')); // }) // ->addColumn('activate', function ($row) { // return (string) view('admin.shared.datatables.user.block', compact('row')); // }) // ->addColumn('controls', function ($row) { // return (string) view('admin.shared.datatables.user.controls', compact('row')); // }) // ->rawColumns(['id', 'created_at', 'image', 'phone', 'email', 'block', 'activate', 'controls']) // ->make(true); // } /*************************** get active clients **************************/ public function active(Request $request) { if (request()->ajax()) { $rows = User::where('type' , 'user')->where(['status' => 'active'])->search(request()->searchArray)->OrderBy('created_at','desc')->paginate(10); $html = view('admin.clients.active_table', compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.clients.active'); } /*************************** get not active clients **************************/ public function notActive() { if (request()->ajax()) { $rows = User::where('type' , 'user')->where(['status' => 'pending'])->search(request()->searchArray)->OrderBy('created_at','desc')->paginate(10); $html = view('admin.clients.pending_table' ,compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.clients.pending'); } /*************************** get active clients **************************/ public function block() { if (request()->ajax()) { $rows = User::where('type' , 'user')->where(['status' => 'block'])->search(request()->searchArray)->OrderBy('created_at','desc')->paginate(10); $html = view('admin.clients.block_table' ,compact('rows'))->render() ; return response()->json(['html' => $html]); } return view('admin.clients.block'); } /*************************** get active clients **************************/ public function notBlock() { $rows = User::where('status' ,'!=' , 'block')->latest()->where('type' , 'user')->get(); return view('admin.clients.index', compact('rows')); } /*************************** store **************************/ public function create() { $nationalities = Nationality::get(); $cities = City::get(); return view('admin.clients.create' , compact('nationalities' , 'cities')); } /*************************** store client **************************/ public function store(AddEditClientRequest $request) { User::create($request->validated() + (['active' => $request->status == 'pending' ? 0 : 1,'country_key' => '00966'])); Report::addToLog(' اضافه مستخدم'); return response()->json(['url' => route('admin.clients.index')]); } /*************************** store **************************/ public function edit($id) { $row = User::findOrFail($id); $nationalities = Nationality::get(); $cities = City::get(); return view('admin.clients.edit', compact('nationalities' , 'cities' , 'row')); } /*************************** update client **************************/ public function update(AddEditClientRequest $request, $id) { $user = User::find($id); $user->update($request->validated()); if($request['status']=='block'){ dispatch(new BlockUser($user)); } Report::addToLog(' تعديل مستخدم'); return response()->json(['url' => route('admin.clients.index')]); } /*************** show *************************************/ public function show($id) { $row = User::findOrFail($id); $nationalities = Nationality::get(); $cities = City::get(); return view('admin.clients.show', compact('nationalities' , 'cities' , 'row')); } /*************************** delete client **************************/ public function destroy($id) { $user = User::find($id); dispatch(new DeleteUser($user)); $user->delete(); Report::addToLog(' حذف مستخدم'); return response()->json(['id' => $id ]); } public function blockUser($id) { $user = User::find($id); dispatch(new BlockUser($user)); return redirect()->back()->with('success', 'تم حظر المستخدم بنجاح'); } public function notify(SendRequest $request) { if ('all' == $request->id) { $count ='all'; $clients = User::where('type','user')->where('status','active')->get(); } else { $count ='one'; $clients = User::findOrFail($request->id); } dispatch(new NotifyUser($clients, $request, $request->type ,$count)); return response()->json(); } public function destroyAll(Request $request) { $requestIds = json_decode($request->data); foreach ($requestIds as $id) { $ids[] = $id->id; } $users=User::whereIn('id', $ids)->get(); foreach($users as $user){ dispatch(new DeleteUser($user)); } if (User::whereIn('id', $ids)->delete()) { Report::addToLog(' حذف العديد من المستخدمين'); return response()->json('success'); } else { return response()->json('failed'); } } public function address($id) { $rows = User::findOrFail($id)->addresses->toArray() ; return view('admin.clients.addresses' , compact('rows')); } }
Back to File Manager