/**
  * To edit the record information (Role)
  * @param long $id : To get the particular user's id
  * @return : the view of edit User form
  */
 public function actionEdit($name = NULL)
 {
     if (!Yii::$app->user->isGuest) {
         $model = RoleAndPermission::findOne($name);
         if (isset($model) && !empty($model)) {
             $model->scenario = 'saveRole';
             $roleName = $model->name;
             if ($model->load(Yii::$app->request->post()) && $model->validate()) {
                 // Not to update role name when the role name is of superadmin (SUPERADMIN_ROLE_ALIAS)
                 if ($roleName == SUPERADMIN_ROLE_ALIAS) {
                     $model->name = $roleName;
                 }
                 if (RoleAndPermission::updateAll(['name' => $model->name, 'role_alias' => $model->role_alias, 'allow_registration' => $model->allow_registration, 'updated_at' => time()], "name = '{$name}'")) {
                     Yii::$app->session->setFlash("success", 'Role has been updated successfully', true);
                 }
                 return $this->redirect(Url::to(['/usermgmt/role-and-permission/index']));
             } else {
                 return $this->render('edit', ['model' => $model]);
             }
         } else {
             Yii::$app->session->setFlash("danger", 'Invalid Role', true);
             return $this->redirect(Url::to(['/usermgmt/user/index']));
         }
     } else {
         Yii::$app->session->setFlash("danger", 'You have to be looged in to perform any private operation', true);
         return $this->redirect(Url::to(['/usermgmt/user/index']));
     }
 }
 public function register()
 {
     if (NEW_REGISTRATION_IS_ALLOWED) {
         $modelDetail = new UserDetail();
         $model = new User();
         $model->scenario = 'addUser';
         if ($model->load(Yii::$app->request->post())) {
             $file = \yii\web\UploadedFile::getInstance($model, 'img_path');
             if (isset($file) && !empty($file)) {
                 $filePath = USER_DIRECTORY_PATH . DS . USER_PROFILE_IMAGES_DIRECTORY . DS;
                 $model->img_path = Yii::$app->custom->uploadFile($file, $filePath);
             }
             if ($model->validate()) {
                 $model->auth_key = User::generateNewAuthKey();
                 $model->password_hash = User::setNewPassword($model->password);
                 if (isset($model->phone_number)) {
                     $model->phone_number = str_replace("-", "", $model->phone_number);
                 }
                 if (isset($model->dob)) {
                     $model->dob = date("Y-m-d", strtotime($model->dob));
                 }
                 if ($model->save(false)) {
                     /** Associated Model linking ***/
                     $modelDetail->user_id = $model->id;
                     $model->link("userDetail", $modelDetail);
                     $userGroups = RoleAndPermission::find()->onCondition(['type' => '1'])->asArray()->all();
                     $roleNames = [];
                     foreach ($userGroups as $userGroup) {
                         $roleNames[] = $userGroup['name'];
                     }
                     if (in_array(DEFAULT_ROLE_NAME, $roleNames)) {
                         $userRole = new AuthAssignment();
                         $userRole->item_name = DEFAULT_ROLE_NAME;
                         $userRole->user_id = $model->id;
                     }
                     $model->link("userRole", $userRole);
                     /** Associated Model linking ***/
                     if ($model->save(false)) {
                         if (!SEND_REGISTRATION_MAIL) {
                             User::sendMail('welcome-email', $model, $model->email, 'Welcome to - ' . SITE_NAME);
                         }
                         Yii::$app->session->setFlash('success', 'Please verify your Email. A verification link has been sent to your Email Address.');
                         return array('redirect' => true, 'url' => Url::to(['/usermgmt/user/login']));
                     } else {
                         Yii::$app->session->setFlash('success', 'Your registration was not successful.');
                         return array('redirect' => true, 'url' => Yii::$app->homeUrl);
                     }
                 }
             }
         }
         return array('render' => "register", 'model' => $model);
     } else {
         Yii::$app->session->setFlash('danger', 'Currently new registrations are not allowed by administrator. Please try later.');
         return array('redirect' => true, 'url' => Yii::$app->homeUrl);
     }
 }