Example #1
0
        private void MainForm_Shown(object sender, EventArgs e)
        {

            if (Parametres.debug == "all")
            {
                MainForm.writeLog("mainForm.cs->MainForm_Shown");
            }


            notifyIcon1.Icon = Properties.Resources.logo_256;
            notifyIcon1.Text = "LGBConnect";
            notifyIcon1.Visible = true;
            notifyIcon1.ShowBalloonTip(5000, "LGB Connect", "Chargé !", ToolTipIcon.Info);
            groupBox_inscription.Hide();
            this.Hide();

            // récupération de l'id et du nom de la salle
            poste = new Poste(Parametres.poste_id);
            Salle salle = new Salle(Parametres.poste_nom);
            Espace espace = new Espace(salle.idEspace);

            lbl_Espace.Text = espace.nom + "\n" + salle.nom;

            // on vérifie que pour l'espace sélectionné, il y a une config logiciel dans cyberGestionnaire.
            // Pour le moment, cette configuration ne sert qu'à déterminer s'il faut afficher la page de préinscription
            configLogiciel = new ConfigLogiciel(salle.idEspace);

            if (configLogiciel.exists() && configLogiciel.pageInscription)
            {
                groupBox_inscription.Show();
                if (Parametres.debug == "all")
                {
                    MainForm.writeLog("mainForm.cs->MainForm_Shown : préinscription activée !");
                }
            }
            else
            {
                groupBox_inscription.Hide();
                if (Parametres.debug == "all")
                {
                    MainForm.writeLog("mainForm.cs->MainForm_Shown : préinscription désactivée");
                }
            }

            // verification en base si une reservation est deja active sur le poste
            // si c'est le cas, il y a eu un problème avec le logiciel...
            // 2 solutions possibles :
            // - on clot de force la réservation. On pourrait analyser le temps passé en fonction des données de la résa,
            //   mais si on considère qu'il y a eu un probleme, ce n'est sans doute pas la bonne approche.
            //   Il est sans doute préférable de clore la résa avec une durée = 0 pour ne pas pénaliser l'usager
            // - on rouvre le poste avec l'identifiant trouvé dans la résa. Charge ensuite à frm_temps de se dépatouiller avec ca.
            //   Ce n'est pas l'approche que je retiens

            int idResa = Resa.verifierResaEnCours(Parametres.poste_id);
            while (idResa != 0)
            {
                Resa resa = new Resa(idResa);
                resa.annuler();
                idResa = Resa.verifierResaEnCours(Parametres.poste_id);
            }


            if (Parametres.poste_type == "usager")
            {
                if (Parametres.debug == "all")
                {
                    MainForm.writeLog("mainForm.cs->MainForm_Shown : poste usager : blocage demandé");
                }

                Fonction.blocageGestionnaireDesTaches(true);
                Fonction.blocageChangementMotDePasse(true);
                goFullscreen(true);
            }
            if (Parametres.poste_type == "animateur")
            {
                if (Parametres.debug == "all")
                {
                    MainForm.writeLog("mainForm.cs->MainForm_Shown : poste animateur");
                }

            }
            this.Show();
            timer_MAJEtat_Tick(null, null);
        }
Example #2
0
        private void frm_Temps_Shown(object sender, EventArgs e)
        {
            if (Parametres.debug == "all")
            {
                MainForm.writeLog("frm_Temps.cs->frm_Temps_Shown");
            }
            // début de la session
            heureConnexion = DateTime.Now;
            if (Parametres.debug == "all")
            {
                MainForm.writeLog("frm_Temps.cs->frm_Temps_Load : début de session à " + heureConnexion.ToString());
            }

            t.Interval = 1000; // specify interval time as you want
            t.Tick += new EventHandler(timer_Tick);
            t.Start();

            if (Parametres.debug == "all")
            {
                MainForm.writeLog("frm_Temps.cs->frm_Temps_Load : temps restant = " + utilisateur.tempsRestant());
            }

            if (utilisateur.statut == 1)
            {
                // vérification de la présence d'une résa sur le poste
                // cas ou c'est une réservation future qui commence
                int idResaEnCours = Resa.verifierResaEnCours(Parametres.poste_id);
                if (idResaEnCours != 0)
                {
                    // il y a effectivement une résa en cours sur le poste...
                    resa = new Resa(idResaEnCours);
                    if (resa.duree > utilisateur.tempsRestant())
                    {
                        resa.duree = utilisateur.tempsRestant();
                    }
                    if (resa.idUtilisateur != utilisateur.id)
                    {
                        // ca ne devrait pas arriver ! Seul l'utilisateur ayant fait la résa future
                        // peut l'utiliser !
                        MessageBox.Show("Erreur dans le codage ! Ce message ne devrait jamais apparaitre !");
                        this.Close();
                    }
                }
                else
                {
                    // pas de resa, inscription d'une nouvelle réservation dans la base
                    resa = new Resa(utilisateur.id, utilisateur.tempsRestant(), heureConnexion);


                    // on essaye de voir combien de temps il reste avant
                    // une éventuelle future résa
                    int idResaFuture = Resa.prochaineResa(Parametres.poste_id);
                    if (idResaFuture != 0) // il existe une résa future pour le poste !
                    {
                        prochaineResa = new Resa(idResaFuture);

                        if (resa.finDeSession > prochaineResa.debutDeSession)
                        {

                            if (prochaineResa.idUtilisateur == utilisateur.id)
                            {
                                // cas ou l'utilisateur ayant réservé arrive plus tôt...
                                DialogResult dresult = MessageBox.Show("Vous avez réservé ce poste pour le " + prochaineResa.debutDeSession.ToString("G") + ". Voulez-vous utiliser cette réservation maintenant ?", "Attention !", MessageBoxButtons.YesNo);
                                if (dresult == DialogResult.Yes)
                                {
                                    prochaineResa.annuler();
                                }
                            }
                            else
                            {
                                TimeSpan diff = prochaineResa.debutDeSession.AddMinutes(-1) - heureConnexion;
                                MessageBox.Show("Ce poste a été reservé pour le " + prochaineResa.debutDeSession.ToString("G") + ". La session sur ce poste se terminera donc dans " + Math.Floor(diff.TotalMinutes) + " mn.", "Poste réservé prochainement !");
                                resa.duree = (int)Math.Floor(diff.TotalMinutes);
                            }
                        }
                    }
                }
            }
            else
            {
                // connexion admin
                resa = new Resa(utilisateur.id, utilisateur.tempsRestant(), heureConnexion);
            }


            if (resa == null)
            {
                MessageBox.Show("erreur dans l'initialisation de la résa.");
                this.Close();
            }

        }
Example #3
0
        /// <summary>
        /// Mise à jour des données de connexion dans la base CyberGestionnaire.
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer_MAJEtat_Tick(object sender, EventArgs e)
        {
            if (Parametres.debug == "all")
            {
                MainForm.writeLog("mainForm.cs->timer_MAJEtat_Tick : Tick 5s !");
            }

            // vérification des réservations actives
            int idResa = Resa.prochaineResa(poste.id);
            if (idResa != 0)
            {
                prochaineResa = new Resa(idResa);
                prochainUtilisateur = new Utilisateur(prochaineResa.idUtilisateur);

                TimeSpan diff = DateTime.Now - prochaineResa.debutDeSession;

                lbl_resa_texte.Text = "Prochaine réservation du poste";
                lbl_resa.Text = prochaineResa.dateResa.AddMinutes(prochaineResa.debut).ToString("G") + " (durée : " + prochaineResa.duree + " mn)";

                if (diff.TotalMinutes > -5 && diff.TotalMinutes < prochaineResa.duree) // on verrouille 5 minutes avant
                {
                    lbl_resa.Text = lbl_resa.Text + "\n (poste verrouillé pour " + prochainUtilisateur.prenom + " " + prochainUtilisateur.nom + ")";
                    lbl_resa.ForeColor = System.Drawing.Color.Red;
                } else {
                    lbl_resa.ForeColor = System.Drawing.Color.Blue;
                }
            }
            else
            {
                lbl_resa.Text = "";
                lbl_resa_texte.Text = "";
            }
        }