File manager - Edit - /home/autoph/public_html/projects/tickets-autohub/app/Http/Controllers/RoleController.php
Back
<?php namespace App\Http\Controllers; use App\Models\Role; use App\Models\User; use App\Models\Department; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; // use Silber\Bouncer\Bouncer; use Silber\Bouncer\BouncerFacade as Bouncer; use Silber\Bouncer\Database\Queries\Roles; use Illuminate\Support\Str; class RoleController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ private $roles, $auth; public function __construct() { $this->roles = new Role; $this->auth = new AuthenticationController; } public function index() { // var_dump($this->getComDealerAccess(7)); // exit; if($this->auth->checkMaintenance() == "true"){ abort(503); } if(!Auth::user()->can('view-role')){ return response()->json(["message"=>"Forbidden"],403); } return view('layouts.authentication.admin.user_management.abilityIndex') ->with(['title_page'=>"Roles Management"]); } public function getComDealerAccess($role_id){ // \DB::connection()->enableQueryLog(); $com_ids = DB::table('company_dealer_access')->where('role_id', $role_id)->select('com_id','dealer_id')->get(); $com_names = []; // Initialize an empty array to store company names $dealer_names=[]; if ($com_ids->isNotEmpty()) { foreach ($com_ids as $com_id_row) { $array_com_id = explode(',', $com_id_row->com_id); foreach ($array_com_id as $com_id) { $com = DB::table('companies')->where('id', $com_id)->value('comp_name'); if ($com) { $com_names[] = $com; } } $array_dealer_id = explode(',', $com_id_row->dealer_id); foreach ($array_dealer_id as $dealer_id) { $dealer = DB::table('dealers')->where('id', $dealer_id)->value('dealer_name'); if ($dealer) { $dealer_names[] = $dealer; } } } $com_names = implode(', ', $com_names); $dealer_names = implode(', ', $dealer_names); } else { $com_names = NULL; $dealer_names =NULL; } return [$com_names,$dealer_names]; } public function displayRoles(Request $request){ $array_data['search_keyword'] = $request->search['value']; if(empty($request->search_type)){ $array_data['search_type'] = ""; } else { $array_data['search_type'] = json_decode($request->search_type,true)[0]; } $array_data['sort'] = $request->order[0]['dir']; $array_data['order'] = $request->columns[$request->order[0]['column']]['data']; $array_data['offset'] = $request->start; $array_data['limit'] = $request->length; $array_data['offset_limit'] = " LIMIT {$array_data['offset']},{$array_data['limit']}"; $array_data['sort'] = " ORDER BY {$array_data['order']} {$array_data['sort']} "; $array_data['search'] = ""; $array_data['where'] = ""; $data = $request->data; $results = $this->roles->getRoles($array_data); $result['data'] = array(); foreach($results as $row){ // echo $row->id; $result['data'][] = [ "id" => $row->id, "name" => $row->name, "title" => $row->title, "company" => ($row->id > 0 ? $this->getComDealerAccess($row->id)[0] : ''), "dealer" => ($row->id > 0 ? $this->getComDealerAccess($row->id)[1] : ''), "status" => $row->status ]; } $result['draw'] = $request->draw; $result['recordsTotal'] = $this->roles->getRolesCount($array_data)[0]->Count; $result['recordsFiltered'] = $this->roles->getRolesFilteredCount($array_data)[0]->FilteredCount; return response()->json($result); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { if($this->auth->checkMaintenance() == "true"){ abort(503); } if(!Auth::user()->can('create-role')){ return response()->json(["message"=>"Forbidden"],403); } $companies =$this->companylist(); return view('layouts.authentication.admin.user_management.addNewRole') ->with(['title_page'=>"Add New Role",'companies'=>$companies]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { if(!Auth::user()->can('create-role')){ return response()->json(["message"=>"Forbidden"],403); } if(!$request->title){ return response()->json(['message'=>"Please Provide a title"],403); } if (!is_array($request->abilities)){ return response()->json(['message'=>"No ability selected"],403); } $role = Bouncer::role()->firstOrCreate([ 'name' => Str::slug($request->title,'-'), 'title' => $request->title, 'status' => $request->stat ]); if($role){ $selectedAbilities = $request->abilities; $abilities = []; foreach($selectedAbilities as $ability){ $abilities[] = $ability['nodeId']; } $role->allow($abilities); if($request->stat == 1){ $role->status = 1; $role->save(); $role_id =$role->id;//get last inserted id; } $request->com_id = ($request->full_access ==1 ? '' : $request->com_id); $request->dealer_id = ($request->full_access ==1 ? '' : $request->dealer_id); $insertData =[ 'role_id' => $role_id, 'com_id' =>(is_array($request->com_id) ? implode(',',$request->com_id) : $request->com_id), 'dealer_id' => (is_array($request->dealer_id) ? implode(',',$request->dealer_id) : $request->dealer_id), 'full_access' => $request->full_access, 'user_id' => 0 ]; if($request->com_id!=NULL || ($request->full_access ==1)){ DB::table('company_dealer_access')->insert([$insertData]); } return response()->json(['message'=>"Success"],201); } } /** * Display the specified resource. * * @param \App\Models\Role $role * @return \Illuminate\Http\Response */ public function show(Role $role) { // } /** * Show the form for editing the specified resource. * * @param \App\Models\Role $role * @return \Illuminate\Http\Response */ public function edit($id) { $companies =$this->companylist(); if($this->auth->checkMaintenance() == "true"){ abort(503); } if(!Auth::user()->can('update-role')){ return response()->json(["message"=>"Forbidden"],403); } $role = Role::findOrFail($id); //get com access $com_dealers = DB::table('company_dealer_access')->where('role_id', $id) ->select('com_id','full_access') ->get(); $com_id_access = []; $full_acccess = 0; // $dealer_id_access =[]; if(count($com_dealers)> 0){ foreach($com_dealers as $row) { foreach(explode(',',$row->com_id) as $key=> $com_id){ $com_id_access[] = $com_id; } $full_acccess = $row->full_access; } } return view('layouts.authentication.admin.user_management.createAbility') ->with(['title_page'=>"Edit ".$role->title." Role",'role'=>$role,'companies'=>$companies,'com_dealer_access'=>[$com_id_access,$full_acccess]]); } public function companylist() { $res = DB::select("select id,comp_code,comp_name from companies order by comp_name asc"); return $res; } // public function fetchRoles(){ // $abilities = DB::table('abilities')->select('*')->where('name','!=',"*")->get(); // foreach($abilities as $row){ // dd($row); // $id = $row->id; // $title = $row->title; // $parentCategory = $row->parent_category; // $node = [ // 'id' => $id, // 'text' => $title, // 'parent' => $parentCategory, // Set the parent category as the 'parent' // 'icon' => 'fa fa-cogs', // Optional: Add an icon class // ]; // // Add the node to the formatted data // $formattedAbility[] = $node; // } // return response()->json($formattedAbility); // } public function fetchDealers(Request $request) { $com_id_array = $request->com_id; $role_id = request()->segment(3); if($com_id_array != NULL){ $dealers = DB::table('dealers')->whereIn('comp_id', $com_id_array) ->select('id', 'dealer_name') ->get(); }else{ $dealers = DB::table('dealers')->where('comp_id', $com_id_array) ->select('id', 'dealer_name') ->get(); } $dealer_access = DB::table('company_dealer_access')->where('role_id', $role_id) ->select('dealer_id') ->get(); $dealer_id_access =[]; if(count($dealer_access)> 0){ foreach($dealer_access as $row) { foreach(explode(',',$row->dealer_id) as $key=> $dealer_id){ // $com_id_assignaccess[] = $com_id; $dealer_id_access[]=intval($dealer_id); } // $dealer_id_access[] = $row->dealer_id; } } return [$dealers,$dealer_id_access]; // echo'<pre>';print_r($dealers);echo'<pre>'; // \DB::connection()->enableQueryLog(); // $queries = \DB::getQueryLog(); // $dealers->query =$queries; // return $dealers; } public function fetchDealersByCompany(Request $request) { $com_id_array = $request->com_id; $role_id = request()->segment(3); if($com_id_array != NULL){ $dealers = DB::table('dealers')->whereIn('comp_id', $com_id_array) ->select('id', 'dealer_name') ->get(); }else{ $dealers = DB::table('dealers')->where('comp_id', $com_id_array) ->select('id', 'dealer_name') ->get(); } $dealer_access = DB::table('company_dealer_access')->where('role_id', $role_id) ->select('dealer_id') ->get(); $dealer_id_access =[]; if(count($dealer_access)> 0){ foreach($dealer_access as $row) { foreach(explode(',',$row->dealer_id) as $key=> $dealer_id){ // $com_id_access[] = $com_id; $dealer_id_access[]=intval($dealer_id); } // $dealer_id_access[] = $row->dealer_id; } } return [$dealers,$dealer_id_access]; } //single company public function DealersByCompany(Request $request) { $com_id_array = $request->com_id; // $role_id =null;// request()->segment(3); // $role = DB::table('assigned_roles')->where('entity_id',Auth::user()->id)->first(); // $role_id = $role->role_id; $dealers = DB::table('dealers')->where('comp_id', $com_id_array) ->select('id', 'dealer_name') ->get(); return response()->json([$dealers]); } public function SubByCategory(Request $request) { $category_id_array = $request->cat_id; $sub_categories = DB::table('categories')->where('parent_id', $category_id_array) ->select('id', 'title') ->where('status',1) ->get(); return response()->json([$sub_categories]); } public function fetchRoles(){ $abilities = DB::table('abilities')->select('*')->where([['name','!=',"*"],['parent_category',"!=",null]])->get(); $formattedData = []; foreach($abilities as $row){ $id = $row->id; $title = $row->title; $parentCategory = $row->parent_category; // Check if a parent folder with this category already exists $parentFolderExists = false; foreach ($formattedData as &$folder) { if ($folder['text'] === $parentCategory) { $parentFolderExists = true; $folder['children'][] = [ 'id' => $id, 'text' => $title, 'state' => ['selected' => false], // Set the initial state of the checkbox ]; break; } } // If the parent folder doesn't exist, create it if (!$parentFolderExists) { $formattedData[] = [ 'id' => 'folder_' . $parentCategory, 'text' => $parentCategory, 'state' => ['opened' => true], 'children' => [ [ 'id' => $id, 'text' => $title, 'state' => ['selected' => false], // Set the initial state of the checkbox ], ], ]; } } return response()->json($formattedData); } public function selectedAbilities($roleId) { $role = Bouncer::role()->where('id', $roleId)->firstOrFail(); DB::enableQueryLog(); $selectedAbilities = $role->getAbilities()->pluck('title'); // echo'<pre>';print_r($selectedAbilities);echo'<pre>';return; // $quries = DB::getQueryLog(); // var_dump($quries); return response()->json($selectedAbilities); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Role $role * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // dd($request->all()); // DB::beginTransaction(); // try{ if (!is_array($request->abilities)){ return response()->json(['message'=>"No ability selected"],403); } if(!Auth::user()->can('update-role')){ return response()->json(["message"=>"Forbidden"],403); } $role = Bouncer::role()->where('id',$id)->firstOrFail(); if($role){ //disallow all abilities for this role $role->abilities()->detach(); // dd($role); } if($request->stat){ $role->status = 1; $role->save(); } else { $role->status = null; $role->save(); } $selectedAbilities = $request->abilities; $abilities = []; foreach($selectedAbilities as $ability){ $abilities[] = $ability['nodeId']; } $role->allow($abilities); // if($request->stat != 0){ // $role->title = $request->title; // $role->status = 1; // $role->save(); // } else { // $role->status = null; // $role->save(); // } $request->com_id = ($request->full_access ==1 ? '' : $request->com_id); $request->dealer_id = ($request->full_access ==1 ? '' : $request->dealer_id); $insertData =[ 'role_id' => $id, 'com_id' =>(is_array($request->com_id) ? implode(',',$request->com_id) : $request->com_id), 'dealer_id' => (is_array($request->dealer_id) ? implode(',',$request->dealer_id) : $request->dealer_id), 'full_access' => $request->full_access, 'user_id' => 0 ]; if(DB::table('company_dealer_access')->where('role_id',$id)->exists()){ DB::table('company_dealer_access')->where('role_id',$id)->update($insertData); }else{ if($request->com_id!=NULL || ($request->full_access ==1)){ DB::table('company_dealer_access')->insert([$insertData]); } } return response()->json(["message" => "Success"]); // DB::commit(); // }catch(\Exception $e){ // DB::rollback(); // return response()->json(["message" => "error".$e]); // } } public function assignment(){ if($this->auth->checkMaintenance() == "true"){ abort(503); } return view('layouts.authentication.admin.user_management.index') ->with(['title_page' => "Assign Role"]); } public function assign($id){ if($this->auth->checkMaintenance() == "true"){ abort(503); } $roles = Role::where('status',1)->get(); // $departments = DB::connection('hr')->table('departments')->get(); $departments = DB::table('departments')->get(); $companies = DB::connection('autohub_connect')->table('vts_company')->select('comp_id','comp_code','comp_name')->where('comp_status',1)->get(); // $user = User::findOrFail($id); $user = DB::table('users') ->leftJoin(DB::connection('autohub_connect')->getDatabaseName() . ".vts_company",'users.comp_code','=','vts_company.comp_code') ->leftJoin(DB::connection('autohub_connect')->getDatabaseName() . ".vts_dealerships",'users.deal_code','=','vts_dealerships.deal_code') ->where('users.id', $id) ->select('users.*', 'vts_company.comp_id','vts_dealerships.deal_id') // Adjust columns as needed ->first(); $assignedRole = DB::table('assigned_roles')->where('entity_id',$user->id)->value('role_id'); return view('layouts.authentication.admin.user_management.roles.assign', compact('roles')) ->with(['title_page'=>$user->f_name." ".$user->l_name,'user'=>$user,'assigned_role'=>$assignedRole,'departments'=> $departments,'companies' => $companies]); } /** * Remove the specified resource from storage. * * @param \App\Models\Role $role * @return \Illuminate\Http\Response */ public function destroy(Role $role) { // } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0 |
proxy
|
phpinfo
|
Settings