public function actionCreate()
 {
     $model = new Family();
     if ($model->load(Yii::$app->request->post())) {
         //Se o utilizador já tiver uma familia não faz nada
         if (Yii::$app->user->identity->family_id) {
             return $this->redirect('update');
         }
         $model->login_status = \app\enum\UserStatus::Inativo;
         //$model->accepts_members = 0 ;
         if ($model->validate() && $model->save()) {
             $user = Yii::$app->user->identity;
             //inicia transação
             $transaction = Yii::$app->db->beginTransaction();
             //Cria membro
             $fme = new FamilyMember();
             $fme->family_id = $model->id;
             $fme->user_id = Yii::$app->user->getId();
             $fme->name = $user->username;
             $fme->event_color = '#ff9900';
             $fme->user_type = \app\enum\UserType::Administrador_MemoBoard;
             if (!$fme->save()) {
                 $transaction->rollBack();
                 return $this->goHome();
             }
             //Cria um calendário para o membro
             $cal = new Calendar();
             $cal->sistem = 0;
             $cal->name = Yii::$app->user->identity->username;
             $cal->member_id = $fme->id;
             if (!$cal->save()) {
                 $transaction->rollBack();
                 return $this->goHome();
             }
             $user->family_id = $model->id;
             $user->calendar_id = $cal->id;
             $user->family_member_id = $fme->id;
             if (!$user->save()) {
                 $transaction->rollBack();
                 return $this->goHome();
             }
             //Finaliza transação
             $transaction->commit();
             return $this->redirect('update');
         }
     }
     return $this->render('create', ['model' => $model]);
 }
 public function actionInit()
 {
     $res = '';
     $model = new FamilyMember();
     if ($model->load(Yii::$app->request->post())) {
         $family_login = Yii::$app->request->post('login');
         $family_pass = Yii::$app->request->post('password');
         if ($family_login && $family_pass) {
             $user = \app\models\User::findByUsername($family_login);
             //&& $user->validatePassword($family_pass)
             if ($user && $user->family_login_user) {
                 $res = \app\models\FamilyMember::joinMemberToFamilyAndSave($model, Yii::$app->user->getId(), $user->family_login_user);
                 if (!is_string($res)) {
                     Yii::$app->getSession()->setFlash('success', '<h2>Sucesso !!!</h2>' . 'Passa a partir deste momento a fazer parte da família <b>' . $model->family->name . '</b>' . '<br>' . '<br>' . 'Tem ao seu dispor várias funcionalidades que foram pensadas especificamente para si como membro de uma família.' . 'Explore os cantos da casa e caso tenha alguma dúvida use o ' . '<a class="" href="/site/contact">formulário</a> que também pode ser acessado no menu "Contacto".');
                     return $this->redirect("/site/message");
                 }
             }
         }
         Yii::$app->getSession()->setFlash('danger', '<h2>Algo correu mal !!!</h2>' . 'Não foi possível adiciona-lo como membro da família pretendida.' . '<br>' . '<br>' . '<b>' . $res . '</b>' . '<br>' . '<br>' . 'P.f. confira dados e tente novamente.' . '<br>' . '<br>' . '<a class="btn btn-info" href="javascript:history.back()">Tentar novamente</a>');
         return $this->redirect("/site/message");
     }
     return $this->render('./init', ['model' => $model]);
 }
 private function saveModelNewMember($model, $url)
 {
     //O user_id tem o mail do utilizador que se pretende juntar
     $user = \app\models\User::findByUsername($model->user_id);
     //Limpa valor
     $model->user_id = '';
     if ($user) {
         $res = \app\models\FamilyMember::joinMemberToFamilyAndSave($model, $user->id, yii::$app->user->identity->family_id);
         if (is_bool($res) && $res) {
             return $this->redirect(['index']);
         }
         //Elimina o valor fornecido
         $model->user_id = '';
         //coloca erro
         $model->addError('user_id', $res);
         //mostra
         return $this->render($url, ['model' => $model]);
     }
     if ($model->validate() && $model->save()) {
         return $this->redirect(['index']);
     }
     return $this->render($url, ['model' => $model]);
 }
 public function actionMembers()
 {
     $dataProvider = new ActiveDataProvider(['query' => FamilyMember::find()->orderBy('family_id ASC'), 'pagination' => ['pageSize' => 20]]);
     return $this->render('members', array('dataProvider' => $dataProvider));
 }
Example #5
0
 public function getFamilyMembers()
 {
     if (self::isFamilyLogin()) {
         return $this->hasMany(FamilyMember::className(), ['family_id' => 'family_login_user']);
     }
     return $this->hasMany(FamilyMember::className(), ['family_id' => 'family_id']);
 }
Example #6
0
 /**
  * Proprietário da tarefa
  * @return type FamilyMember
  */
 public function getOwner()
 {
     return $this->hasOne(FamilyMember::className(), ['id' => 'member_id']);
 }
 /**
  * Proprietário da tarefa
  * @return type FamilyMember
  */
 public function getOwner()
 {
     return $this->hasOne(FamilyMember::className(), ['id' => 'member_id'])->viaTable(Calendar::tableName(), ['id' => 'calendar_id']);
 }
Example #8
0
 /**
  * Verifica se existe pelo menos um membro admin
  */
 public function existMemberAdmin()
 {
     $isAdmin = $this->user_type == \app\enum\UserType::Administrador_MemoBoard;
     if ($isAdmin) {
         return true;
     }
     $x = FamilyMember::find()->where(['user_type' => \app\enum\UserType::Administrador_MemoBoard])->andWhere(['family_id' => $this->family_id])->andWhere(['<>', 'id', $this->id])->count();
     if ($x < 1) {
         $this->addError('user_type', 'Tem de existir na família pelo menos um membro ' . \app\enum\UserType::toName(\app\enum\UserType::Administrador_MemoBoard));
         return false;
     }
     return true;
 }