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)); }
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']); }
/** * 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']); }
/** * 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; }