Advertisement
Guest User

Untitled

a guest
Jan 14th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.77 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Http\Request;
  7. use Spatie\Permission\Models\Role;
  8. use Spatie\Permission\Models\Permission;
  9. use App\User;
  10. use App\Subsystem;
  11. use App\Truck_Fleet;
  12. use App\Truck_Model;
  13. use App\Truck;
  14. use App\Truck_Counter;
  15.  
  16.  
  17. use Illuminate\Support\Facades\Auth;
  18.  
  19.  
  20. class AdminController extends Controller
  21. {
  22.     /**
  23.      * Show the admin dashboard.
  24.      *
  25.      */
  26.     public function index(){
  27.         return view('admin.home');
  28.     }
  29.  
  30.     public function truck_summary(){
  31.         return view('admin.truck_summary');
  32.     }
  33.  
  34.     public function truck_201(){
  35.         $fleets =  Truck_Fleet::all();
  36.         $truck_models = Truck_Model::all();
  37.         $trucks =  Truck::all();
  38.  
  39.         return view('admin.truck_201', [
  40.             'trucks'=> $trucks,
  41.             'fleets'=> $fleets,
  42.             'truck_models'=> $truck_models
  43.         ]);
  44.     }
  45.  
  46.     /*
  47.     * Adds A new User to be verified
  48.     * @param \Illuminate\Http\Request $request
  49.     * @param \Illuminate\Http\Response
  50.     * type: API
  51.     */
  52.     public function addTruck201(Request $request){
  53.         $this->validate($request, [
  54.             'body_number' => 'required',
  55.             'plate_number' => 'required'
  56.         ]);
  57.  
  58.         $out = array(); // response object
  59.  
  60.         // create truck counter
  61.         $count = new Truck_Counter;
  62.         if ($count->save()){
  63.  
  64.             // create truck object
  65.             $truck = new Truck;
  66.  
  67.             $truck->encodeID($count->id);
  68.             $truck->body_no = $request->input('body_number');
  69.             $truck->plate_no = $request->input('plate_number');
  70.  
  71.             if ($truck->save()){
  72.                 $out['error'] = false;
  73.                 $out['message'] = "Truck Created successfully";
  74.                 $out['truck_id'] = $truck->vehicle_id;
  75.                 return response()
  76.                 ->json($out, 202);
  77.             }
  78.  
  79.         }
  80.         $out['error'] = true;
  81.         $out['message'] = "An error has occured";
  82.         return response()
  83.         ->json($out, 300);
  84.     }
  85.  
  86.     public function truck_personnel(){
  87.         return view('admin.truck_personnel');
  88.     }
  89.  
  90.     public function truck_documents(){
  91.         return view('admin.truck_documents');
  92.     }
  93.  
  94.     public function truck_operations(){
  95.        
  96.         return view('admin.truck_operations');
  97.     }
  98.  
  99.     public function users(){
  100.  
  101.         $roles = Role::all('id', 'name');
  102.         $users = User::all();
  103.        
  104.         return view('admin.users_page', [
  105.             'roles' => $roles,
  106.             'users' => $users
  107.         ]);
  108.     }
  109.  
  110.     /*
  111.     * Adds A new User to be verified
  112.     * @param \Illuminate\Http\Request $request
  113.     * @param \Illuminate\Http\Response
  114.     */
  115.     public function addUser(Request $request){
  116.         $this->validate($request, [
  117.             'fname' => 'required',
  118.             'lname' => 'required',
  119.             'email' => 'required',
  120.             'role' => 'required'
  121.         ]);
  122.  
  123.         // check if email already exists
  124.         $n = User::where('email', $request->input('email'))->count();
  125.         if ($n > 0)
  126.             return redirect('/users')->with('error', 'Email already exists');
  127.  
  128.         $user = new User;
  129.         $user->fname = $request->input('fname');
  130.         $user->lname = $request->input('lname');
  131.         $user->email = $request->input('email');
  132.         //$user->password = bcrypt(str_random(20));
  133.         $user->password = bcrypt("mmdapo");
  134.         $user->user_type = 1;
  135.         $user->added_by = Auth::user()->id;
  136.         if ($user->save()){
  137.             // assign role to user
  138.             $role = Role::find($request->input('role'));
  139.             $user->assignRole($role->name);
  140.  
  141.             return redirect('/users')->with('success', 'User added successfully');
  142.         }
  143.         else{
  144.             return redirect('/users')->with('An unexpected error has occured');
  145.         }
  146.  
  147.     }
  148.  
  149.     public function roles(){
  150.  
  151.         // retrive Modules
  152.         $available = array();
  153.         $modules = DB::table('modules')
  154.             ->select('name', 'mod_id')
  155.             ->get();
  156.        
  157.         foreach ($modules as $module) {
  158.            
  159.             $id = $module->mod_id;
  160.             $permissions = DB::table('module_has_permission')
  161.                 ->join('permissions', 'permissions.id', '=', 'module_has_permission.permission_id')
  162.                 ->select('permission_id', 'name')
  163.                 ->where('mod_id', "$id")
  164.                 ->get();
  165.            
  166.             array_push($available, [
  167.                 'name' => $module->name,
  168.                 'permissions' => $permissions
  169.             ]);
  170.         }
  171.  
  172.         $roles = Role::all();
  173.        
  174.         return view ('admin.roles_page', ['available' => $available, 'roles' => $roles]);
  175.     }
  176.  
  177.     /*
  178.     * Adds A new Role and permissions associated with it
  179.     * @param \Illuminate\Http\Request $request
  180.     * @param \Illuminate\Http\Response
  181.     */
  182.     public function addRole(Request $request){
  183.         $this->validate($request, [
  184.             'role_name' => 'required',
  185.             'permissions' => 'required|array|min:1'
  186.         ]);
  187.        
  188.  
  189.         // check if role already exists
  190.         $role_name = $request->input('role_name');
  191.         $n = Role::where('name', $role_name)->count();
  192.         if ($n > 0)
  193.             return redirect('/roles')->with('error', 'Role Already exists');
  194.        
  195.         // add role
  196.         $role = Role::create(['name' => $role_name]);
  197.         if (!$role)
  198.             return redirect('/roles')->with('error', 'Role Creation failed');
  199.        
  200.         $Permissions = Permission::whereIn('id', $request->input('permissions'))->get();
  201.         $role->syncPermissions($Permissions);
  202.  
  203.         // assign roles
  204.         return redirect('/roles')->with('success', 'Role Creation successful');
  205.     }
  206.     /*
  207.     * Edits an existing Role and permissions associated with it
  208.     * @param \Illuminate\Http\Request $request
  209.     * @param \Illuminate\Http\Response
  210.     */
  211.     public function editRole(Request $request){
  212.         $this->validate($request, [
  213.             'role_id' => 'required',
  214.             'role_name' => 'required',
  215.             'permissions' => 'required|array|min:1'
  216.         ]);
  217.        
  218.         $role_id = $request->input('role_id');
  219.         // check if role already exists
  220.         $role_name = $request->input('role_name');
  221.         $n = Role::where('name', $role_name)
  222.             ->where('id', '!=', $role_id)
  223.             ->count();
  224.         if ($n > 0){
  225.             return redirect('/roles')->with('error', 'Role name already taken');
  226.         }
  227.         $role = Role::find($role_id);
  228.         $role->name = $request->input('role_name');
  229.         if ($role->save()){
  230.             // get list of current roles before adding
  231.             $rp = $role->permissions;
  232.  
  233.             // add new roles
  234.             $new = Permission::whereIn('id', $request->input('permissions'))->get();
  235.             $role->syncPermissions($new);
  236.            
  237.             return redirect('/roles')->with('success', 'Role Updated successully');
  238.         }
  239.  
  240.         return redirect('/roles')->with('error', 'An error has occured');
  241.  
  242.     }
  243.     /*
  244.     * Gets all Permissions associated with a role
  245.     * type: API
  246.     * @param role_id
  247.     * @param \Illuminate\Http\Response
  248.     */
  249.     public function getRolePermissions($role_id){
  250.         $role = Role::find($role_id);
  251.         if (!$role)
  252.             return response()->json([
  253.                 'error' => true,
  254.                 'message' => 'Role not found'
  255.             ]);
  256.         return response()->json([
  257.             'error' => false,
  258.             'message' => 'Role found',
  259.             'id' => $role->id,
  260.             'name' => $role->name,
  261.             'permissions' => $role->permissions
  262.             ]);
  263.     }
  264. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement