Esempio n. 1
0
function isManageableDepartment($managedDepartment, $currentDepartment)
{
    if ($managedDepartment == $currentDepartment) {
        return true;
    } else {
        $parentDepartment = parentDepartment($currentDepartment);
        if ($parentDepartment) {
            if ($parentDepartment == $managedDepartment) {
                return true;
            } else {
                if ($parentDepartment != $currentDepartment) {
                    return isManageableDepartment($managedDepartment, $parentDepartment);
                }
            }
        } else {
            return false;
        }
    }
}
 /**
  * Show the form for creating a new resource.
  *
  * @return Response
  */
 public function create()
 {
     $pageTitle = 'Add New Category';
     // If user is administrator
     if (Auth::user()->hasRole(['administrator'])) {
         $departments = Department::all()->toArray();
     }
     // If user is department manager
     if (Auth::user()->hasRole(['department_manager'])) {
         $managedDepartment = Auth::user()->departments->first();
         $allDepartments = Department::all();
         foreach ($allDepartments as $oneDepartment) {
             if (isManageableDepartment($managedDepartment->id, $oneDepartment->id)) {
                 array_push($departments, $oneDepartment->toArray());
             }
         }
     }
     // If user is category manager
     if (Auth::user()->hasRole(['category_manager'])) {
         $departments = Auth::user()->departments->toArray();
     }
     return view('home.categories.create', compact('pageTitle', 'departments'));
 }
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index()
 {
     $pageTitle = 'All Departments';
     // consider to optimise the order of departments
     $originalDepartments = Department::all();
     $i = 0;
     $managedDepartment = DB::table('departments')->where('manager', Auth::user()->id)->pluck('id');
     foreach ($originalDepartments as $originalDepartment) {
         $manager = $originalDepartment->manager ? User::find($originalDepartment->manager)->name : 'TBD';
         $parent_department = $originalDepartment->parent_department ? Department::find($originalDepartment->parent_department)->display_name : '--';
         $isManageable = 0;
         if (Auth::user()->hasRole(['administrator'])) {
             $isManageable = 1;
         }
         if (Auth::user()->hasRole(['department_manager'])) {
             if (isManageableDepartment($managedDepartment, $originalDepartment->id)) {
                 $isManageable = 1;
             }
         }
         $departments[$i] = array('number' => $i + 1, 'id' => $originalDepartment->id, 'name' => $originalDepartment->name, 'display_name' => $originalDepartment->display_name, 'description' => $originalDepartment->description, 'manager' => $manager, 'parent_department' => $parent_department, 'is_manageable' => $isManageable);
         $i++;
     }
     return view('home.departments.index', compact('pageTitle', 'departments'));
 }
Esempio n. 4
0
 /**
  * Show the form for editing the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function edit($id)
 {
     $user = User::find($id);
     $pageTitle = 'Update User: '******'administrator'])) {
         $departments = Department::all()->toArray();
     } else {
         $managedDepartment = Auth::user()->departments->first();
         $allDepartments = Department::all();
         foreach ($allDepartments as $oneDepartment) {
             if (isManageableDepartment($managedDepartment->id, $oneDepartment->id)) {
                 array_push($departments, $oneDepartment->toArray());
             }
         }
     }
     $currentDepartment = $user->departments ? $user->departments->first() : null;
     $currentRole = $user->roles ? $user->roles->first() : null;
     return view('home.users.edit', compact('pageTitle', 'user', 'departments', 'currentDepartment', 'currentRole'));
 }