Example #1
0
 public function removePermission($permission)
 {
     if (is_string($permission)) {
         $permission = Permission::where('name', $permission)->first();
     }
     return $this->permissions()->detach($permission);
 }
Example #2
0
 public function update($id, $request)
 {
     if ($this->valid($request->all(), $this->rules($id))) {
         $user = $this->findItem($id);
         $user->name = $request->input('name');
         $pass = $request->input('password');
         $user->password = empty($pass) ? $user->password : bcrypt($pass);
         $user->email = $request->input('email');
         $group_id = $request->input('group_id');
         $active = $request->input('active');
         $user->active = empty($active) ? 0 : $active;
         if ($group_id == '0') {
             $user->group_id = -1;
         } else {
             $user->group_id = $group_id;
             $rules = Permission::where('object_id', $group_id)->lists('rule', 'admenu_id')->toArray();
             if (!is_null($rules)) {
                 $user->admenus()->detach();
                 foreach ($rules as $menu_id => $rule) {
                     $user->admenus()->attach($menu_id, ['rule' => $rule, 'type' => 'user']);
                 }
             }
         }
         $user->update();
     } else {
         throw new ValidationException('valid', $this->getError());
     }
 }
 public function postStudent(StudentRequest $request)
 {
     $user = new User();
     $user->username = $request->txtten;
     $user->password = Hash::make($request->txtten);
     $user->name = $request->txtten;
     $user->save();
     $user_id = $user->id;
     $permission = Permission::where('slug', 'student')->get()->first();
     $permissionUser = new PermissionUser();
     $permissionUser->permission_id = $permission->id;
     $permissionUser->user_id = $user_id;
     $permissionUser->save();
     $student = new ThiSinh();
     $student->ten = $request->txtten;
     $student->gioitinh = $request->sltGt;
     $student->namsinh = $request->txtns;
     $student->quequan = $request->txtqq;
     $student->khuvuc = $request->txtkv;
     $student->user_id = $user_id;
     $student->save();
     $thisinh_id = $student->id;
     $point = new Diem();
     $point->sbd = $request->txtsbd;
     $point->mon1 = 0;
     $point->mon2 = 0;
     $point->mon3 = 0;
     $point->khoi = $request->txtkt;
     $point->thisinh_id = $thisinh_id;
     $point->save();
     return redirect()->route('cluster-staff.quan-ly-thong-tin-thi-sinh.listStudent')->with(['flash_level' => 'success', 'flash_message' => 'Success!!! Complete Add Student']);
 }
Example #4
0
 public function permission_edit(Request $request)
 {
     $this->validate($request, array('permission' => 'required', 'permission_name' => 'required'));
     //check repeat before operate the database
     $error_msg_route = 'This route has already existed!';
     $error_msg_route_name = 'This route name has already existed!';
     if (!$request->input('id')) {
         if (Permission::where('permission', $request->input('permission'))->first()) {
             return redirect()->back()->withErrors($error_msg_route);
         }
         if (Permission::where('permission_name', $request->input('permission_name'))->first()) {
             return redirect()->back()->withErrors($error_msg_route_name);
         }
         $lastInsert = Permission::create($request->all());
         PermissionRole::create(array('permission_id' => $lastInsert->id, 'role_id' => 1));
     } else {
         $self = Permission::find($request->input('id'));
         if ($self->permission != $request->input('permission') && Permission::where('permission', $request->input('permission'))->first()) {
             return redirect()->back()->withErrors($error_msg_route);
         }
         if ($self->permission_name != $request->input('permission_name') && Permission::where('permission_name', $request->input('permission_name'))->first()) {
             return redirect()->back()->withErrors($error_msg_route_name);
         }
         Permission::find($request->input('id'))->update($request->all());
     }
     return redirect()->back();
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     // Admin
     $admin = User::where(['email' => '*****@*****.**'])->first();
     $adminRole = Role::where(['name' => 'admin'])->first();
     $adminPermission = Permission::where(['name' => 'sudo'])->first();
     $admin->attachRole($adminRole);
     $adminRole->attachPermission($adminPermission);
     // PM
     $projectManager = User::where(['email' => '*****@*****.**'])->first();
     $projectManagerRole = Role::where(['name' => 'project-manager'])->first();
     $projectManagerPermission = Permission::where(['name' => 'listing-budget'])->first();
     $projectManager->attachRole($projectManagerRole);
     $projectManagerRole->attachPermission($projectManagerPermission);
     // Team Leader
     $teamLeader = User::where(['email' => '*****@*****.**'])->first();
     $teamLeaderRole = Role::where(['name' => 'team-leader'])->first();
     $teamLeaderPermission = Permission::where(['name' => 'make-timeline'])->first();
     $teamLeader->attachRole($teamLeaderRole);
     $teamLeaderRole->attachPermission($teamLeaderPermission);
     // Programmer
     $programmer = User::where(['email' => '*****@*****.**'])->first();
     $programmerRole = Role::where(['name' => 'programmer'])->first();
     $programmerPermission = Permission::where(['name' => 'knowing-tasks'])->first();
     $programmer->attachRole($programmerRole);
     $programmerRole->attachPermission($programmerPermission);
 }
Example #6
0
 public function getTeamAttribute()
 {
     $permissions = Permission::where('model_name', 'App\\Project')->where('model_id', $this->jobId)->get();
     $team = [];
     foreach ($permissions as $permission) {
         array_push($team, $permission->user->teammate->full_name);
     }
     return $team;
 }
Example #7
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if (!Auth::check()) {
         return response('Unauthorized.', 401);
     }
     if (!Permission::where('route', $this->route->getActionName())->whereIn('roles_id', Auth::user()->role()->lists('id'))->exists()) {
         return response('Unauthorized.', 401);
     }
     return $next($request);
 }
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index()
 {
     //
     $q = \Request::get('q');
     if ($q != '') {
         $permissions = \App\Permission::where('name', 'RLIKE', $q)->paginate(10);
     } else {
         $permissions = \App\Permission::paginate(10);
     }
     return view('permissions.index', compact('permissions', 'q'));
 }
 public static function getWhere($fieldName, $id, $mode)
 {
     if ($mode == "MODEL_MODE") {
         return Permission::where($fieldName, $id);
     } else {
         if ($mode == "DATA_MODE") {
             return Permission::where($fieldName, $id)->get();
         } else {
             return false;
         }
     }
 }
Example #10
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next, $permission)
 {
     if (Auth::user()->id == 1) {
         return $next($request);
     }
     $idP = Permission::where('ip', $permission)->value('id');
     $rol = Auth::user()->rol;
     if (!Permissions_assigned::where('role', $rol)->where('permission', $idP)->first()) {
         return redirect('auth/logout');
     }
     return $next($request);
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     // su permissoin
     $permission_su = Permission::where('name', 'all')->first();
     // admin permission
     $create_user = Permission::where('name', 'create-user')->first();
     $update_user = Permission::where('name', 'update-user')->first();
     $drop_user = Permission::where('name', 'drop-user')->first();
     $permission_admin = [$create_user, $update_user, $drop_user];
     $role_su = Role::where('name', 'su')->first();
     $role_su->attachPermission($permission_su);
     $role_admin = Role::where('name', 'admin')->first();
     $role_admin->attachPermissions($permission_admin);
 }
Example #12
0
 /**
  * Methods
  */
 public static function updatePermissionStatus($user_id, $resource, $actions)
 {
     $permission = Permission::where('user_id', $user_id)->where('resource', $resource)->first();
     if (!$permission) {
         $permissionData = array_merge(['user_id' => $user_id, 'resource' => $resource], $actions);
         $permission = new Permission($permissionData);
         $permission->save();
         return true;
     }
     foreach ($actions as $action => $status) {
         $permission->{$action} = $status;
     }
     $permission->save();
 }
 /**
  * Reverse the migrations.
  *
  * @return void
  */
 public function down()
 {
     //Delete the rootadmin user
     $user = User::where('name', 'admin')->first();
     $user->roles()->sync(array());
     $user->delete();
     //Delete the rootadmin role
     $rootadmin = Role::where('name', 'rootadmin')->first();
     $rootadmin->perms()->sync(array());
     $rootadmin->delete();
     //Delete all the permissions
     foreach ($this->permissions as $permission) {
         $wp_perm = Permission::where('name', $permission['name']);
         $wp_perm->delete();
     }
 }
Example #14
0
 public function postTaoTaiKhoanQuanLyNhanVienCum(TaiKhoanQuanLyNhanVienCumRequest $request)
 {
     // thêm vào bảng users
     $user = new User();
     $user->username = $request->txtUsername;
     $user->name = $request->txtName;
     $user->password = Hash::make($request->txtPassword);
     $user->save();
     // thêm vào bảng permission_user
     $permission = Permission::where('slug', 'clusterstaffmanager')->get()->first();
     $permissionUser = new PermissionUser();
     $permissionUser->permission_id = $permission->id;
     $permissionUser->user_id = $user->id;
     $permissionUser->save();
     return redirect()->action('AdminController@getTaoTaiKhoanQuanLyNhanVienCum')->with(['flash_level' => 'success', 'flash_message' => 'Thêm tài khoản thành công!']);
 }
Example #15
0
 public static function checkPermission()
 {
     $userInfo = Session::get('user');
     $uri = new Permission();
     $currentRoute = Route::getFacadeRoot()->current()->uri();
     if (Cache::has('user')) {
         $user = Cache::get('user');
         $permission = $user['permission'];
         $ck = in_array($userInfo['role_id'] . '|' . $currentRoute, $permission);
     } else {
         $ck = $uri->where('name', $userInfo['role_id'] . '|' . $currentRoute)->count();
     }
     if ($ck > 0 || $userInfo['role_id'] == 1) {
         return true;
     }
     return false;
 }
 /**
  * Seed Data Source
  *
  * @author EB
  * @return void
  */
 protected function seedDataSource()
 {
     Model::unguard();
     $role = new \App\Role();
     $role->name = 'rosu';
     $role->display_name = 'Read Only Super User';
     $role->description = 'Read only user who can see everything';
     $role->save();
     $permissions = ['merchants-view', 'users-view', 'roles-view', 'locations-view', 'applications-view', 'reports-view'];
     foreach ($permissions as $permission) {
         try {
             $perm = \App\Permission::where('name', '=', $permission)->first();
             $role->permissions()->sync([$perm->id], false);
         } catch (Exception $e) {
         }
     }
     Model::reguard();
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     foreach ($this->routes as $route) {
         if (array_search('permission', $route->middleware()) !== false) {
             if (!empty($route->getName())) {
                 $params = explode('.', $route->getName());
                 $data = ['name' => $route->getName()];
                 if (count($params) > 1) {
                     $data['group'] = $params[0];
                 } else {
                     $data['group'] = 'base';
                 }
                 if (!Permission::where('name', $data['name'])->exists()) {
                     Permission::create($data);
                 }
             }
         }
     }
 }
 public function grantInheritanceTo(\App\Role $successor, \Illuminate\Database\Eloquent\Collection $predecessors)
 {
     $predecessors->each(function ($predecessor) use($successor) {
         $permissions = $predecessor->permissions()->get();
         if (empty($permissions)) {
             dump('Tried to grant [' . $successor->name . '] The permissions equal to those of [' . $predecessor->name . '] but the latter seems to have none granted.');
         } else {
             foreach ($predecessor->permissions()->get() as $permission) {
                 if ($permission instanceof \App\Permission) {
                     dump('[' . $successor->name . '] Inherited [' . $permission->name . '] Thru [' . $predecessor->name . ']');
                     $successor->givePermissionTo($permission);
                 } else {
                     $permission = \App\Permission::where(['name' => $permission])->first();
                     dump('[' . $successor->name . '] Inherited [' . $permission->name . '] Thru [' . $predecessor->name . ']');
                     $successor->givePermissionTo($permission);
                 }
             }
         }
     });
 }
Example #19
0
 function postLogin(LoginRequest $request)
 {
     //get Request
     $getDataRequest = $request->all();
     $data = array('name' => $getDataRequest['name'], 'password' => $getDataRequest['password']);
     $userInfo = User::where('name', $data['name'])->first()->toArray();
     //Check status?
     if ($userInfo['status'] == User::IN_ACTIVED_STATUS) {
         return redirect_errors("Account active yet!");
     }
     //Check password
     $password = md5($data['password'] . md5($userInfo['remember_token']));
     if ($password == $userInfo['password']) {
         //Add Session
         Authen::setUser($userInfo);
         //Check remember
         if (Input::get('remember')) {
             $permissions = Permission::where('name', 'like', $userInfo['role_id'] . '%')->get(['name']);
             $listPermission = [];
             foreach ($permissions as $per) {
                 $listPermission[] = $per['name'];
             }
             $data = $userInfo;
             $data['permission'] = $listPermission;
             Cache::put('user', $data, 6000);
         }
         //navigator page
         if ($userInfo['role_id'] == Role::SA_ROLE_ID || $userInfo['role_id'] == Role::AD_ROLE_ID) {
             return redirect()->action('BackendController@index');
         } elseif (Cart::total() > 0 && $userInfo['role_id'] == Role::CUS_ROLE_ID) {
             Session::forget('option');
             // is customer ensure to have shipping_add already
             Session::put('option', ['type' => 'logged', 'shi_add' => true, 'pay_add' => true, 'pay_med' => false, 'conf' => false]);
             return redirect()->action('FrontendController@checkout');
         } else {
             return redirect('home');
         }
     }
     return redirect_errors("Password Wrong!");
 }
Example #20
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  \Closure $next
  * @param $role
  * @return mixed
  */
 public function handle($request, Closure $next, $permissionName)
 {
     if ($this->auth->guest()) {
         //未登入
         if ($request->ajax()) {
             return response('Unauthorized.', 401);
         } else {
             return redirect()->route('member.login');
         }
     }
     $user = $this->auth->user();
     if (empty($user->confirm_at)) {
         //未驗證信箱
         return redirect()->route('member.resend')->with('warning', '完成信箱驗證方可進入此頁面');
     }
     //取得權限
     $permission = Permission::where('name', '=', $permissionName)->first();
     if (!$permission || !$user->can($permissionName)) {
         return redirect()->route('home')->with('warning', '權限不足');
     }
     return $next($request);
 }
 public function postTaoTaiKhoanNhanVienTruong(TaiKhoanNhanVienTruongRequest $request)
 {
     // thêm vào bảng users
     $user = new User();
     $user->username = $request->txtUsername;
     $user->name = $request->txtName;
     $user->password = Hash::make($request->txtPassword);
     $user->save();
     // thêm vào bảng permission_user
     $permission = Permission::where('slug', 'universitystaff')->get()->first();
     $permissionUser = new PermissionUser();
     $permissionUser->permission_id = $permission->id;
     $permissionUser->user_id = $user->id;
     $permissionUser->save();
     // thêm trường
     $truong = new Truong();
     $truong->tentr = $request->txtUniversity;
     $truong->matr = $request->txtUniversityCode;
     $truong->nhanvienquanly_user_id = $user->id;
     $truong->save();
     return redirect()->action('ClusterStaffManagerController@getTaoTaiKhoanNhanVienTruong')->with(['flash_level' => 'success', 'flash_message' => 'Thêm tài khoản thành công!']);
 }
Example #22
0
 public function hasPermissions($permissions, $all = false)
 {
     if ($this->id == 1) {
         return true;
     }
     if (!$all) {
         foreach ($permissions as $permission) {
             $idP = Permission::where('ip', $permission)->value('id');
             if (Permissions_assigned::where('role', $this->rol)->where('permission', $idP)->first()) {
                 return true;
             }
         }
         return false;
     } else {
         foreach ($permissions as $permission) {
             $idP = Permission::where('ip', $permission)->value('id');
             if (!Permissions_assigned::where('role', $this->rol)->where('permission', $idP)->first()) {
                 return false;
             }
         }
         return true;
     }
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     db::table('permissions')->insert([['name' => 'createAT', 'display_name' => 'Create new Actions and Tasks', 'description' => 'Create new Actions and Tasks'], ['name' => 'updateAT', 'display_name' => 'Update new Actions and Tasks', 'description' => 'Update new Actions and Tasks'], ['name' => 'deleteAT', 'display_name' => 'Delete new Actions and Tasks', 'description' => 'Delete new Actions and Tasks'], ['name' => 'createGO', 'display_name' => 'Create new Goals and Objectives', 'description' => 'Create new Goals and Objectives'], ['name' => 'updateGO', 'display_name' => 'Update new Goals and Objectives', 'description' => 'Update new Goals and Objectives'], ['name' => 'deleteGO', 'display_name' => 'Delete new Goals and Objectives', 'description' => 'Delete new Goals and Objectives'], ['name' => 'createBP', 'display_name' => 'Create new Business Plans', 'description' => 'Create new Business Plans'], ['name' => 'setPerm', 'display_name' => 'Set User Permissions', 'description' => 'Set User Permissions']]);
     $user = Role::where('name', '=', 'user')->first();
     $leader = Role::where('name', '=', 'leader')->first();
     $bplead = Role::where('name', '=', 'bpLead')->first();
     $admin = Role::where('name', '=', 'admin')->first();
     $perm = Permission::where('name', '=', 'createAT')->first();
     $user->attachPermission($perm);
     $leader->attachPermission($perm);
     $bplead->attachPermission($perm);
     $admin->attachPermission($perm);
     $perm = Permission::where('name', '=', 'updateAT')->first();
     $user->attachPermission($perm);
     $leader->attachPermission($perm);
     $bplead->attachPermission($perm);
     $admin->attachPermission($perm);
     $perm = Permission::where('name', '=', 'deleteAT')->first();
     $leader->attachPermission($perm);
     $bplead->attachPermission($perm);
     $admin->attachPermission($perm);
     $perm = Permission::where('name', '=', 'createGO')->first();
     $bplead->attachPermission($perm);
     $admin->attachPermission($perm);
     $perm = Permission::where('name', '=', 'updateGO')->first();
     $bplead->attachPermission($perm);
     $admin->attachPermission($perm);
     $perm = Permission::where('name', '=', 'deleteGO')->first();
     $bplead->attachPermission($perm);
     $admin->attachPermission($perm);
     $perm = Permission::where('name', '=', 'createBP')->first();
     $bplead->attachPermission($perm);
     $admin->attachPermission($perm);
     $perm = Permission::where('name', '=', 'setPerm')->first();
     $admin->attachPermission($perm);
 }
Example #24
0
 public function updatePerm()
 {
     if (Request::ajax()) {
         $perm = Permission::where('name', Input::get('perm'))->first();
         $role = Role::where('name', Input::get('role'))->first();
         if ($perm === null) {
             return "DENIED";
         } elseif ($role === null) {
             return "DENIED";
         } else {
             $role->assignPermission($perm);
             return "OK";
         }
     }
 }
Example #25
0
 /**
  * So here's the deal with permissions... Suppose we have code
  * like the following:
  * 
  * @if( $user->hasPermission('edit', 'Employee') )
  *     <li><a href="/editEmployees">Edit Employees</a></li>
  * @endif
  * 
  * Now suppose a user can edit a SUBSET of employees... We still
  * want to display this button, but within this button we need
  * to limit the employees shown. So we need two different actions:
  * 
  *     can you edit ANYTHING?
  *     what can you edit?
  * 
  * To prevent "what can you edit" from returning the entire
  * database in the event that you actually can edit everything,
  * it needs to somehow be condensed. Maybe a query string?
  * 
  * 
  * 
  */
 public function hasPermission($action, $model)
 {
     // First, is $model an instance? If so, get the class name
     if (is_string($model)) {
         $modelName = $model;
         $modelInstance = null;
     } else {
         $modelName = get_class($model);
         $modelInstance = $model;
     }
     // Now get ALL permissions for this action on this model
     $permissions = Permission::where(function ($query) use($action) {
         $query->orWhere('action', $action)->orWhere('action', 'all');
     })->where(function ($query) use($modelName) {
         $query->orWhere('model', 'like', $modelName)->orWhere('model', '*');
     })->get();
     // Now see if we have a matching role
     // To start, see if we have a previously cached list of roles:
     if ($this->roleParents == null) {
         // We start with a list of this user's roles...
         $this->roleParents = $this->roles;
         // Then we iteratively get all parents
         foreach ($this->roleParents as $role) {
             if ($role->parent != null) {
                 $this->roleParents->add($role->parent);
             }
         }
     }
     if ($this->roleChildren == null) {
         // We start with a list of this user's roles...
         $this->roleChildren = $this->roles;
         // Then we need to recursively get all children
         $children = new Collection();
         foreach ($this->roles as $role) {
             $this->roleChildren = $this->roleChildren->merge($this->getAllChildren($role));
         }
         $this->roleChildren = $this->roleChildren->unique();
     }
     foreach ($permissions as $permission) {
         if ($permission->role_id == 0 || $this->roleParents->contains($permission->role) || $this->roleChildren->contains($permission->role) && $permission->trickle) {
             // So the user has a role that can perform the action on this model
             if ($modelInstance == null) {
                 // If we're looking at the model as a whole, we good
                 return true;
             } else {
                 // If we're looking at a specific model, we need to check the domain
                 $domain = json_decode($permission->domain);
                 if (is_array($domain)) {
                     if ($this->confirmDomain($domain, $modelInstance)) {
                         return true;
                     }
                 } else {
                     return true;
                 }
             }
         }
     }
     // Failed to find a valid permission
     return false;
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy(Request $request, $id)
 {
     $user = User::where('id', $id)->first();
     $permission = Permission::where('id', $user->permission_id)->first();
     $user->delete();
     $permission->delete();
     return redirect('/users');
 }
Example #27
0
 public function searchPermissionByName(Request $request)
 {
     $permission = $request->input('permission-name');
     $permissions = Permission::where('name', 'like', '%' . $permission . '%')->take(5)->lists('name');
     return $permissions;
 }
Example #28
0
 /**
  * Update the specified resource in storage.
  *
  * @param $role
  * @return Response
  */
 public function postEdit(RoleRequest $request, $id)
 {
     $is_admin = 0;
     if (!empty($request->permission)) {
         $permissionsAdmin = Permission::where('is_admin', '=', 1)->get();
         foreach ($permissionsAdmin as $perm) {
             foreach ($request->permission as $item) {
                 if ($item == $perm['id'] && $perm['is_admin'] == '1') {
                     $is_admin = 1;
                 }
             }
         }
     }
     $role = Role::find($id);
     $role->is_admin = $is_admin;
     $role->name = $request->name;
     $role->save();
     PermissionRole::where('role_id', '=', $id)->delete();
     if (is_array($request->permission)) {
         foreach ($request->permission as $item) {
             $permission = new PermissionRole();
             $permission->permission_id = $item;
             $permission->role_id = $role->id;
             $permission->save();
         }
     }
 }
Example #29
0
 /**
  * Bootstrap any application services.
  *
  * @return void
  */
 public function boot()
 {
     /**
      * Custom validation rules
      */
     Validator::extend('alpha_spaces', function ($attribute, $value) {
         return preg_match('/^[\\pL\\s]+$/u', $value);
     });
     Validator::extend('cedula', function ($attribute, $value) {
         return preg_match('/^([0-9]{6,8})$/', $value);
     });
     Validator::extend('rif', function ($attribute, $value) {
         return preg_match('/^([J,G,N]-([0-9]{8,12}))$/', $value);
     });
     Validator::extend('equal_provedor', function ($attribute, $value, $parameters) {
         $orden = Input::get($parameters[0]);
         $entrada = Entrada::where('orden', $orden)->value('provedor');
         if (!$entrada) {
             return true;
         } else {
             if ($value != $entrada) {
                 return false;
             }
             return true;
         }
     });
     Validator::extend('diff_provedor', function ($attribute, $value, $parameters) {
         if (empty($value)) {
             return true;
         } else {
             $id = Input::get($parameters[0]);
             $entrada = Entrada::where('id', $id)->value('provedor');
             if ($value == $entrada) {
                 return false;
             }
             return true;
         }
     });
     Validator::extend('diff_orden', function ($attribute, $value, $parameters) {
         if (empty($value)) {
             return true;
         } else {
             $id = Input::get($parameters[0]);
             $entrada = Entrada::where('id', $id)->value('orden');
             if ($value == $entrada) {
                 return false;
             }
             return true;
         }
     });
     Validator::extend('diff_departamento', function ($attribute, $value, $parameters) {
         $id = Input::get($parameters[0]);
         $salida = Salida::where('id', $id)->value('departamento');
         if ($value == $salida) {
             return false;
         }
         return true;
     });
     Validator::extend('insumos', function ($attribute, $value) {
         if (empty($value) || !is_array($value)) {
             return false;
         } else {
             foreach ($value as $insumo) {
                 if (!isset($insumo['cantidad']) || !isset($insumo['id']) || $insumo['cantidad'] <= 0 || !Insumo::where('id', $insumo['id'])->first()) {
                     return false;
                 }
             }
         }
         return true;
     });
     Validator::extend('insumos_salida', function ($attribute, $value) {
         if (empty($value) || !is_array($value)) {
             return false;
         } else {
             foreach ($value as $insumo) {
                 if (!isset($insumo['solicitado']) || !isset($insumo['despachado']) || !isset($insumo['id']) || $insumo['solicitado'] <= 0 || $insumo['despachado'] <= 0 || $insumo['solicitado'] < $insumo['despachado'] || !Insumo::withTrashed()->where('id', $insumo['id'])->first()) {
                     return false;
                 }
             }
         }
         return true;
     });
     Validator::extend('insumos_alarmas', function ($attribute, $value) {
         if (empty($value) || !is_array($value)) {
             return false;
         } else {
             foreach ($value as $insumo) {
                 if (!isset($insumo['id']) || !isset($insumo['min']) || !isset($insumo['med'])) {
                     return false;
                 }
                 if ($insumo['min'] <= 0 || $insumo['med'] <= 0 || $insumo['min'] >= $insumo['med']) {
                     return false;
                 }
             }
         }
         return true;
     });
     Validator::extend('insumos_validate_e', function ($attribute, $value) {
         foreach ($value as $insumo) {
             if (!isset($insumo['cantidad'])) {
                 continue;
             }
             $originalI = Insumos_entrada::where('id', $insumo['id'])->first();
             if (!isset($insumo['id']) || !$originalI || $originalI['cantidad'] == $insumo['cantidad'] || $insumo['cantidad'] < 0) {
                 return false;
             }
         }
         return true;
     });
     Validator::extend('insumos_validate_s', function ($attribute, $value) {
         foreach ($value as $insumo) {
             if (!isset($insumo['despachado'])) {
                 continue;
             }
             $originalI = insumos_salida::where('id', $insumo['id'])->first();
             if (!isset($insumo['id']) || !$originalI || $insumo['despachado'] == $originalI['despachado'] || $insumo['despachado'] < 0) {
                 return false;
             }
             if (!isset($insumo['solicitado'])) {
                 if ($originalI['solicitado'] < $insumo['despachado']) {
                     return false;
                 }
             } else {
                 if (!is_int($insumo['solicitado']) || $insumo['solicitado'] < 0 || $insumo['solicitado'] == $originalI['solicitado']) {
                     return false;
                 }
             }
         }
         return true;
     });
     Validator::extend('one_insumo_entrada', function ($attribute, $value, $parameters) {
         $entrada = Input::get($parameters[0]);
         $insumos = Insumos_entrada::where('entrada', $entrada)->get();
         if ($insumos->count() == 1 && isset($value[0]['cantidad']) && $value[0]['cantidad'] == 0) {
             return false;
         }
         return true;
     });
     Validator::extend('one_insumo_salida', function ($attribute, $value, $parameters) {
         $salida = Input::get($parameters[0]);
         $insumos = Insumos_salida::where('salida', $salida)->get();
         if ($insumos->count() == 1 && isset($value[0]['despachado']) && $value[0]['despachado'] == 0) {
             return false;
         }
         return true;
     });
     Validator::extend('insumo', function ($attribute, $value) {
         if (!Insumo::where('id', $value)->first()) {
             return false;
         }
         return true;
     });
     Validator::extend('insumo_with_daleted', function ($attribute, $value) {
         if (!insumo::withTrashed()->where('id', $value)->first()) {
             return false;
         }
         return true;
     });
     Validator::extend('deposito', function ($attribute, $value) {
         if (!Deposito::where('id', $value)->first()) {
             return false;
         }
         return true;
     });
     Validator::extend('date_limit_current', function ($attribute, $value) {
         $value = str_replace('/', '-', $value);
         if (strtotime($value) > strtotime(date("Y-m-d"))) {
             return false;
         }
         return true;
     });
     Validator::extend('insumos_ids_array', function ($attribute, $value) {
         if (!is_array($value)) {
             return false;
         }
         foreach ($value as $v) {
             if (!insumos_salida::where('id', $v)->first()) {
                 return false;
             }
         }
         return true;
     });
     Validator::extend('documento_salida', function ($attribute, $value) {
         $documento = Documento::where('id', $value)->first();
         if (!$documento) {
             return false;
         }
         return $documento->naturaleza == 'salida';
     });
     Validator::extend('documento_entrada', function ($attribute, $value) {
         $documento = Documento::where('id', $value)->first();
         if (!$documento) {
             return false;
         }
         return $documento->naturaleza == 'entrada';
     });
     Validator::extend('tercero', function ($attribute, $value, $parameters) {
         $documento = Input::get($parameters[0]);
         $tipo = Documento::where('id', $documento)->value('tipo');
         if ($tipo == 'interno') {
             return true;
         }
         if ($tipo == 'proveedor') {
             return Provedore::where('id', $value)->first();
         }
         if ($tipo == 'servicio') {
             return Departamento::where('id', $value)->first();
         }
         if ($tipo == 'deposito') {
             $deposito = Auth::user()->deposito;
             return Deposito::where('id', $value)->where('id', '!=', $deposito)->first();
         }
     });
     Validator::extend('permissions', function ($attribute, $value) {
         if (!is_array($value)) {
             return false;
         } else {
             foreach ($value as $permiso) {
                 if (!Permission::where('id', $permiso)->first()) {
                     return false;
                 }
             }
         }
         return true;
     });
     Validator::extend('rol', function ($attribute, $value) {
         return Role::where('id', $value)->first();
     });
     Validator::extend('movimiento', function ($attribute, $value, $parameters) {
         $documento = Input::get($parameters[0]);
         $documento = Documento::where('id', $documento)->value('id');
         $deposito = Auth::user()->deposito;
         if (Entrada::where('id', $value)->where('documento', $documento)->where('deposito', $deposito)->first()) {
             return true;
         } else {
             if (Salida::where('id', $value)->where('documento', $documento)->where('deposito', $deposito)->first()) {
                 return true;
             } else {
                 return false;
             }
         }
     });
     Validator::extend('documento', function ($attribute, $value) {
         return Documento::where('id', $value)->first();
     });
     Validator::extend('documento_same_nature', function ($attribute, $value, $parameters) {
         $id = Input::get($parameters[0]);
         $ori_naturaleza = Documento::where('id', $id)->value('naturaleza');
         $up_naturaleza = Documento::where('id', $value)->value('naturaleza');
         return $ori_naturaleza == $up_naturaleza;
     });
     Validator::extend('document_not_equal', function ($attribute, $value, $parameters) {
         $id = Input::get($parameters[0]);
         $ori_documento = Documento::where('id', $id)->value('id');
         $up_documento = Documento::where('id', $value)->value('id');
         return !($ori_documento == $up_documento);
     });
 }
 /**
  * @Then there should be one permission with the id :arg1 and the name :arg2 and the display name :arg3
  */
 public function thereShouldBeOnePermissionWithTheIdAndTheNameAndTheDisplayName($arg1, $arg2, $arg3)
 {
     $permissionCount = Permission::where(['id' => $arg1, 'name' => $arg2, 'display_name' => $arg3])->get()->count();
     PHPUnit::assertEquals(1, $permissionCount, "There should be exactly one permission with the id {$arg1} and the name {$arg2} and the display name {$arg3}. {$permissionCount} were found.");
 }