static function create($user_id, $msg = "", $date = null) { $not = new Notification(); $not->user_id = $user_id; //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação if ($date) { $not->date = $date; } else { $not->date = DateUtils::now(); } $not->type = Notification::TYPE_TOPOLOGY; $not->viewed = 0; $not->info = json_encode($msg); $not->save(); }
static function createToGroup($group_id, $domain, $reservation_id, $auth_id, $date = null) { $group = Group::findOne($group_id); $domain = Domain::findOne(['name' => $domain]); if (!$group || !$domain) { return false; } //Confere todos papeis associados ao grupo $roles = UserDomainRole::findByGroup($group); foreach ($roles->all() as $role) { if ($role->domain == null || $role->domain == $domain->name) { //Se papel for para todos dominios ou para dominio espeficido //Confere se já foi feita uma notificação de algum circuito desta reserva, se sim, reutiliza a mesma notificação $not = null; $notifications = Notification::find()->where(['user_id' => $role->user_id, 'type' => Notification::TYPE_AUTHORIZATION])->all(); foreach ($notifications as $notification) { $cauth = ConnectionAuth::findOne($notification->info); if ($cauth) { if ($cauth->domain == $domain->name) { $conn = Connection::findOne($cauth->connection_id); if ($conn) { if ($conn->reservation_id == $reservation_id) { $not = $notification; break; } } } } } if ($not) { //Se já existe, atualiza e coloca nova data //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação if ($date) { $not->date = $date; } else { //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário $date = new \DateTime('now', new \DateTimeZone("UTC")); $dateAux = $date->format("Y-m-d H:i:s"); while (Notification::find()->where(['user_id' => $role->user_id, 'date' => $dateAux])->one()) { $date->modify('-1 second'); $dateAux = $date->format("Y-m-d H:i:s"); } $not->date = $dateAux; } $not->viewed = 0; $not->save(); } else { //Se for nova, cria notificação $not = new Notification(); $not->user_id = $role->user_id; if (isset($date)) { $not->date = $date; } else { //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário $date = new \DateTime('now', new \DateTimeZone("UTC")); $dateAux = $date->format("Y-m-d H:i:s"); while (Notification::find()->where(['user_id' => $role->user_id, 'date' => $dateAux])->one()) { $date->modify('-1 second'); $dateAux = $date->format("Y-m-d H:i:s"); } $not->date = $dateAux; } $not->date = $dateAux; $not->type = Notification::TYPE_AUTHORIZATION; $not->viewed = 0; $not->info = (string) $auth_id; $not->save(); } } } }
static function create($connection_id) { $connection = Connection::findOne($connection_id); if (!$connection) { return; } $reservation = Reservation::findOne($connection->reservation_id); if (!$reservation) { return; } if ($reservation->type == Reservation::TYPE_TEST) { return; } $user_id = $reservation->request_user_id; //Confere se já foi feita uma notificação de algum circuito desta reserva, se sim, reutiliza a mesma notificação $not = null; $notifications = Notification::find()->where(['user_id' => $reservation->request_user_id, 'type' => Notification::TYPE_RESERVATION])->all(); foreach ($notifications as $notification) { if ($notification->info == $reservation->id) { $not = $notification; break; } } if ($not) { //Se já existe, atualiza e coloca nova data //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário $date = new \DateTime('now', new \DateTimeZone("UTC")); $dateAux = $date->format("Y-m-d H:i:s"); while (Notification::find()->where(['user_id' => $user_id, 'date' => $dateAux])->one()) { $date->modify('-1 second'); $dateAux = $date->format("Y-m-d H:i:s"); } $not->date = $dateAux; $not->viewed = 0; $not->save(); } else { //Se for nova, cria notificação $not = new Notification(); $not->user_id = $reservation->request_user_id; //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário $date = new \DateTime('now', new \DateTimeZone("UTC")); $dateAux = $date->format("Y-m-d H:i:s"); while (Notification::find()->where(['user_id' => $user_id, 'date' => $dateAux])->one()) { $date->modify('-1 second'); $dateAux = $date->format("Y-m-d H:i:s"); } $not->date = $dateAux; $not->type = Notification::TYPE_RESERVATION; $not->viewed = 0; $not->info = (string) $reservation->id; $not->save(); } }
static function create($user_id, $type, $group, $domain = null, $date = null) { $notice = []; $notice[0] = $type; //Tipo da noticia $notice[1] = $group; if ($domain) { $notice[2] = $domain; } $not = new Notification(); $not->user_id = $user_id; //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação if ($date) { $not->date = $date; } else { //Pequena maquipulação do horário para que nunca existam duas notificações com o mesmo horário $date = new \DateTime('now', new \DateTimeZone("UTC")); $dateAux = $date->format("Y-m-d H:i:s"); while (Notification::find()->where(['user_id' => $user_id, 'date' => $dateAux])->one()) { $date->modify('-1 second'); $dateAux = $date->format("Y-m-d H:i:s"); } $not->date = $dateAux; } $not->type = Notification::TYPE_NOTICE; $not->viewed = 0; $not->info = json_encode($notice); //Armazena todos dados em um JSON $not->save(); }
/** * CREATE TOPOLOGY NOTIFICAION * @param string $msg (A tag no caso) * @param string $date * Cria notificação de mudança na topologia. VERSÃO BETA */ public static function createTopologyNotification($msg, $date = null) { $users = User::find()->all(); foreach ($users as $user) { $not = Notification::findOne(['user_id' => $user->id, 'type' => self::TYPE_TOPOLOGY, 'info' => $msg]); if ($not) { //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação if ($date) { $not->date = $date; } else { $not->date = DateUtils::now(); } $not->viewed = 0; $not->save(); } else { $not = new Notification(); $not->user_id = $user->id; //Pode receber uma data por parametro, neste caso, utiliza essa data como a data da criação da notificação if ($date) { $not->date = $date; } else { $not->date = DateUtils::now(); } $not->type = self::TYPE_TOPOLOGY; $not->viewed = 0; $not->info = $msg; $not->save(); } } }