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); }
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(); } }
/// <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 = ""; } }