public function createUserAuth($flow, $reservation) { Yii::trace("Criando Request User Authorization"); //Confere se o usuário ja respondeu exatamente mesma requisição, se sim, não questiona novamente. $auth = ConnectionAuth::findOne(['type' => ConnectionAuth::TYPE_USER, 'domain' => $flow->domain, 'manager_user_id' => $flow->value, 'connection_id' => $flow->connection_id]); if ($auth) { return true; } //Confere se usuário requisitante é o mesmo que deve responder. Se sim, não pergunta, considera aceito. if ($flow->value == $reservation->request_user_id) { $flow->status = self::STATUS_YES; $flow->save(); return true; } $auth = new ConnectionAuth(); $auth->domain = $flow->domain; $auth->status = Connection::AUTH_STATUS_PENDING; $auth->type = ConnectionAuth::TYPE_USER; $auth->manager_user_id = $flow->value; $auth->connection_id = $flow->connection_id; $auth->save(); AuthorizationNotification::createToUser($flow->value, $flow->domain, $reservation->id, $auth->id); return false; }
static function createNotificationsGroup($user_id, $group_name, $domain) { $user = User::findOne($user_id); $group = Group::findOne(['role_name' => $group_name]); if ($user && $group) { Yii::trace("Criar notificações do grupo " . $group->name . " para usuário " . $user->name); //Busca todas autorizações pendentes do grupo //Se tem dominio, procura só as relacionadas ao dominio do papel if ($domain) { $auths = ConnectionAuth::find()->where(['status' => Connection::AUTH_STATUS_PENDING, 'domain' => $domain, 'type' => ConnectionAuth::TYPE_GROUP, 'manager_group_id' => $group->id])->all(); } else { $auths = ConnectionAuth::find()->where(['status' => Connection::AUTH_STATUS_PENDING, 'type' => ConnectionAuth::TYPE_GROUP, 'manager_group_id' => $group->id])->all(); } //Passa por todas criando uma notificação foreach ($auths as $auth) { $connection = Connection::findOne($auth->connection_id); $reservation = Reservation::findOne($connection->reservation_id); AuthorizationNotification::createToUser($user->id, $auth->domain, $connection->reservation_id, $auth->id, $reservation->date); } } }