Bonjour,

Sur une application, je dois mettre en place un système d'alerte.
Actuellement, j'ai fait ce système en php et je me demandais si il y avait un moyen de le faire en js pour éviter les requêtes un peut lourde.

Je m'explique, j'ai un tableau de bord avec plusieurs compteur qui indique le nombre de dossier suivant l'état de ceux-ci.
Je souhaite que dès qu'il y a un nouveau ou un changement d'état d'un dossier dans un des compteurs, afficher un badge qui compte le nombre de new pour chaque utilisateur. Dès qu'un utilisateur clique sur le compteur, il a la liste des dossiers qui correspond à l'état, là j'aimerais que les nouveau soient en vert et les dossiers qui ont été vue soient en rouge !

10 réponses


Salut,

Ta demande est confuse, pourrais-tu la reformuler stp ?

cid5420
Auteur

j'ai plusieurs utilisateur qui se connectent à mon application.
Lorsqu'ils sont connecté, ils tombent sur un tableau de bord avec plusieurs compteurs.
Exemple de compteur, j'ai 5 dossiers qui ont un statut "à vérifier" et 50 dossiers qui on un statut "vérifié"
problème 1 : comment l'utilisateur voit combien de dossier à été ajouté dans chaque compteur depuis sa dernière visite ?
problème 2 : comment l'utilisateur voit quel sont les dossiers qui ont été ajouté ou non vue ?
Actuellement, je fais une table qui enregistre, pour chaque utilisateurs et pour chaque dossiers, un statut vue = oui ou non

Le problème c'est que je dois gérer des milliers de dossiers pour 50 utilisateurs env.

Donc la qestion est, est ce qu'il y a un moyen de faire la même chose en js ?

cid5420
Auteur

En fait pour être plus clair, j'aimerais faire le même système que sur gmail où sur la boîte de réception il y a un badge qui indique le nombre d'email non lu. Je doute que ça soit enregistré en base de donnée pour chaque utilisateurs !
Comment fonctionne ces systèmes ?

Eh si c'est enregistré en BD pour chaque compte ;)
Chaque message a (sûrement) un flag 'read' qui est égal à si le message est non lu et à 1 si le message a été lu.

cid5420
Auteur

ah ok donc c'est le seul moyen de procéder !

Je ne pense pas que ça soit le seul moyen, mais c'est le plus simple et intuitif en tout cas (de mon point de vue) :)

cid5420
Auteur

ok bon mon système fonctionne, seulement je rencontre un petit problème
Lorsque je décrémente un compteur, suite à un changement d'état, si l'utilisateur n'a pas consulté les nouveaux ajouts, il se retrouve avec :

40 le nombre de dossier "à vérifier", 41 le nombre de news.

Pourtant dès qu'il y a un dossier qui va dans un compteur, j'enregistre l'état, l'utilisateur, si vue ou non.
Si un dossier change d'état, donc il passe dans un autre compteur, je mets à jour la ligne en changeant l'état.

public function newViews($data, $etat)
    {
        $user = $this->FtthUser->find($_SESSION['auth']);
        if($user->societe_id === '1'){
            foreach($data as $d){
                $dossier = $d->dossier;
                $new = $this->FtthNew->findByDossier($dossier, $user->id);
                if(empty($new)){
                    if($_SESSION['auth'] != null){
                        $this->FtthNew->create([
                            'dossier' => $dossier,
                            'user_id' => $user->id,
                            'view'    => 'non',
                            'etat'    => $etat
                        ]);
                    }
                }else{
                    if($new->etat != $etat){
                        $this->FtthNew->maj($new->dossier, [
                            'etat' => $etat
                        ]);
                    }
                }
            }
        }
        return $this;
    }

Du coup je ne suis peut être plus au bon endroit !

Ce n'est pas plutôt un souci de MAJ de data sur le front ?

cid5420
Auteur

comment ça ?

Bonjour

Pour ton problème numéro un tu peux utilisé la date de la dernière actualisation sur le site et comparé aux posts les plus récents.
tu aura le nombre depuis ta dernière connexion

pour ton autre soucis comme ca je vois pas.

Bon courage à toi.