/**
  * Updates an existing User model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $model = $this->findModel($id);
     if (Yii::$app->request->post()) {
         $transaction = User::getDb()->beginTransaction();
         try {
             $model->load(Yii::$app->request->post());
             $password = $_POST['User']['password'];
             if ($password != "") {
                 $model->setPassword($password);
             }
             $model->generateAuthKey();
             if ($model->save()) {
                 EmpresasUsuarios::deleteAll(['usuario_id' => $model->id]);
                 foreach (Yii::$app->request->post()['User']['empresa_id'] as $emp_id) {
                     $modelEmpresasUsuarios = new EmpresasUsuarios();
                     $modelEmpresasUsuarios->empresa_id = $emp_id;
                     $modelEmpresasUsuarios->usuario_id = $model->id;
                     if (!$modelEmpresasUsuarios->save()) {
                         throw new Exception('Não foi possível salvar uma das empresas!');
                     }
                 }
                 $auth = Yii::$app->authManager;
                 $auth->revokeAll($model->id);
                 $userRole = $auth->getRole(Yii::$app->request->post()['User']['user_role']);
                 $auth->assign($userRole, $model->id);
                 $transaction->commit();
                 return $this->redirect(['view', 'id' => $model->id]);
             } else {
                 throw new Exception('Não foi possível salvar o usuário!');
             }
         } catch (Exception $e) {
             $transaction->rollBack();
             throw new HttpException(400, '$e');
         }
     } else {
         return $this->render('update', ['model' => $model]);
     }
 }