Exemplo n.º 1
0
 public function editar(Request $request, $id)
 {
     $data = $request->all();
     $validator = Validator::make($data, ['nombre' => 'required|min:3|max:60', 'permisos' => 'required|permissions'], $this->message);
     if (!Role::where('id', $id)->first()) {
         return Response()->json(['status' => 'danger', 'message' => 'Este rol no existe']);
     }
     if ($validator->fails()) {
         return Response()->json(['status' => 'danger', 'message' => $validator->errors()->first()]);
     } else {
         $permisos = Permissions_assigned::where('role', $id)->lists('permission')->toArray();
         $add_permissions = array_diff($data['permisos'], $permisos);
         $delete_permissions = array_diff($permisos, $data['permisos']);
         if ($data['nombre'] == Role::where('id', $id)->value('nombre') && (empty($add_permissions) && empty($delete_permissions))) {
             return Response()->json(['status' => 'danger', 'message' => 'No se han hecho modificaciones']);
         }
         if ($data['nombre'] != Role::where('id', $id)->value('nombre')) {
             if (Role::where('nombre', $data['nombre'])->first()) {
                 return Response()->json(['status' => 'danger', 'message' => 'Ya fue registrado un rol con este nombre']);
             } else {
                 Role::where('id', $id)->update(['nombre' => $data['nombre']]);
             }
         }
         if (!empty($add_permissions)) {
             foreach ($add_permissions as $permiso) {
                 Permissions_assigned::create(['role' => $id, 'permission' => $permiso]);
             }
         }
         if (!empty($delete_permissions)) {
             foreach ($delete_permissions as $permiso) {
                 Permissions_assigned::where('role', $id)->where('permission', $permiso)->delete();
             }
         }
     }
     return Response()->json(['status' => 'success', 'message' => 'El rol ha sido modificado satisfactoriamente.']);
 }