/// ///////////////////////////////////////////////////////////////// private void CFormParametresEntreeAgendaCyclique_Load(object sender, System.EventArgs e) { CPlanificationTache planif = m_entree.PlanificationCyclique; if (planif == null) { CPlanificationTacheHebdomadaire ph = new CPlanificationTacheHebdomadaire(); planif = ph; ph.JoursExecution = CUtilDate.GetJourBinaireFor(m_entree.DateDebut.DayOfWeek); ph.Heure = m_entree.DateDebut.Hour; ph.EcartSemaine = 1; } m_panelPlanif.Init(planif); m_dateDebut.Value = m_entree.DateDebut; m_dateFin.Value = m_entree.DateFinCyclique; TimeSpan sp = m_entree.DateFin - m_entree.DateDebut; m_chkSansHoraire.Checked = m_entree.SansHoraire; if (!m_entree.SansHoraire) { m_nDureeJours.Value = (int)sp.TotalDays; } else { m_nDureeJours.Value = (int)(sp.TotalDays + .999999999); } m_nDureeHeures.Value = (int)sp.Hours; m_nDureeMinutes.Value = (int)sp.Minutes; m_wndListeExclusions.ListeSource = m_entree.Desactivations; }
//Retourne toutes les clés concernant une date donnée dans l'ordre de priorité public static string[] GetAllKeysConcernant(DateTime dt) { return(new string[] { CCalendrier_JourParticulier.GetKeyForJourMoisAnnee(dt.Day, dt.Month, dt.Year), CCalendrier_JourParticulier.GetKeyForJourMois(dt.Day, dt.Month), CCalendrier_JourParticulier.GetKeyForJourDuMois(dt.Day), CCalendrier_JourParticulier.GetKeyJoursDeSemaine(CUtilDate.GetJourBinaireFor(dt.DayOfWeek)) }); }
/// /////////////////////////////////////////// protected CDateTimeEx GetMyNextOccurence(DateTime dtDateExecutionPrecedente, bool bPremiereExecution, bool bSuperieur) { DateTime dtVal = dtDateExecutionPrecedente; if (JoursExecution == JoursBinaires.Aucun) { JoursExecution = JoursBinaires.Lundi; } JoursBinaires jour = CUtilDate.GetJourBinaireFor(dtVal.DayOfWeek); int nInc = 0; if (bPremiereExecution) { while (((jour & JoursExecution) != jour) && nInc < 7) { nInc++; dtVal = dtVal.AddDays(1); jour = CUtilDate.GetJourBinaireFor(dtVal.DayOfWeek); } } else { if (bSuperieur) { if (dtVal.DayOfWeek == DayOfWeek.Sunday) { dtVal = dtVal.AddDays(7 * (m_nEcartSemaine - 1) + 1); } else { dtVal = dtVal.AddDays(1); } } jour = CUtilDate.GetJourBinaireFor(dtVal.DayOfWeek); //Regarde les jours suivants de la même semaine while ((jour & JoursExecution) != jour && dtVal.DayOfWeek != DayOfWeek.Sunday) { dtVal = dtVal.AddDays(1); jour = CUtilDate.GetJourBinaireFor(dtVal.DayOfWeek); } if ((jour & JoursExecution) != jour) { //Il faut passer à la semaine d'après return(GetMyNextOccurence(CUtilDate.LundiDeSemaine(dtDateExecutionPrecedente.AddDays(7 * m_nEcartSemaine)), false, false)); } } int nHeure = (int)Heure; int nMinute = (int)Math.Round((Heure - nHeure) * 60, 0); dtVal = new DateTime(dtVal.Year, dtVal.Month, dtVal.Day, nHeure, nMinute, 0); return(new CDateTimeEx(dtVal)); }
/// /////////////////////////////////////////// protected override CDateTimeEx GetMyNextOccurence(DateTime dtDateExecutionPrecedente, bool bPremiereExecution) { if (JoursExecution == JoursBinaires.Aucun) { return(null); } DateTime dtVal = dtDateExecutionPrecedente; double fHeure = ((double)dtVal.Hour) + ((double)dtVal.Minute) / 60; if (fHeure < Heure) { dtVal = dtVal.Date.AddHours(Heure); } else { switch (m_nUnite) { case EUniteTemps.Hour: dtVal = dtVal.AddHours(m_nEcart); break; case EUniteTemps.Minute: dtVal = dtVal.AddMinutes(m_nEcart); break; } } fHeure = ((double)dtVal.Hour) + ((double)dtVal.Minute) / 60; if (fHeure > HeureFin || fHeure < Heure) { dtVal = dtDateExecutionPrecedente.Date.AddDays(1); dtVal = dtVal.AddHours(Heure); JoursBinaires jour = CUtilDate.GetJourBinaireFor(dtVal.DayOfWeek); while ((jour & JoursExecution) != jour) { dtVal = dtVal.AddDays(1); jour = CUtilDate.GetJourBinaireFor(dtVal.DayOfWeek); } } dtVal = new DateTime(dtVal.Year, dtVal.Month, dtVal.Day, dtVal.Hour, dtVal.Minute, 0); return(dtVal); }
//-------------------------------------------- public bool IsInPeriode(DateTime dt) { JoursBinaires j = CUtilDate.GetJourBinaireFor(dt.DayOfWeek); return((m_joursActivation & j) == j); }
//---------------------------------------------------------------------------------------- /// <summary> /// Retourne tous les jours particuliers /// </summary> /// <param name="date"></param> /// <returns></returns> private CCalendrier_JourParticulier GetJourParticulierAvecHeritage(DateTime date, bool bAutoriseLectureEnBase) { CCalendrier_JourParticulier jourParticulier = new CCalendrier_JourParticulier(this.ContexteDonnee); CCalendrier_JourParticulier jourParticulierHerite = new CCalendrier_JourParticulier(this.ContexteDonnee); if (this.CalendrierDeBase != null) { jourParticulierHerite = this.CalendrierDeBase.GetJourParticulierAvecHeritage(date, bAutoriseLectureEnBase); } else { jourParticulierHerite = null; } // Vérifie s'il existe une exception "jour/mois/année" sur le jour du calendrier sélectionné if (jourParticulier.ReadIfExists(new CFiltreData( CCalendrier_JourParticulier.c_champAnnee + "=@1 and " + CCalendrier_JourParticulier.c_champMois + "=@2 and " + CCalendrier_JourParticulier.c_champJour + "=@3 and " + CCalendrier.c_champId + "=@4", date.Year, date.Month, date.Day, this.Id), bAutoriseLectureEnBase)) { return(jourParticulier); } // Vérifie s'il existe une exception "jour/mois/année" sur le jour du calendrier de base if (jourParticulierHerite != null && jourParticulierHerite.Annee != null) { return(jourParticulierHerite); } // Vérifie s'il existe une exception "jour/mois" sur le jour du calendrier sélectionné if (jourParticulier.ReadIfExists(new CFiltreData( CCalendrier_JourParticulier.c_champAnnee + " is null and " + CCalendrier_JourParticulier.c_champMois + "=@1 and " + CCalendrier_JourParticulier.c_champJour + "=@2 and " + CCalendrier.c_champId + "=@3", date.Month, date.Day, this.Id), bAutoriseLectureEnBase)) { return(jourParticulier); } // Vérifie s'il existe une exception "jour/mois" sur le jour du calendrier de base if (jourParticulierHerite != null && jourParticulierHerite.Mois != null) { return(jourParticulierHerite); } // Vérifie s'il existe une exception "jour du mois" sur le jour du calendrier sélectionné if (jourParticulier.ReadIfExists(new CFiltreData( CCalendrier_JourParticulier.c_champAnnee + " is null and " + CCalendrier_JourParticulier.c_champMois + " is null and " + CCalendrier_JourParticulier.c_champJour + "=@1 and " + CCalendrier.c_champId + "=@2", date.Day, this.Id), bAutoriseLectureEnBase)) { return(jourParticulier); } // Vérifie s'il existe une exception "jour" sur le jour du calendrier de base if (jourParticulierHerite != null && jourParticulierHerite.Jour != null) { return(jourParticulierHerite); } // Vérifie s'il existe une exception "jour de semaine" sur le jour du calendrier sélectionné if (jourParticulier.ReadIfExists(new CFiltreData( CCalendrier_JourParticulier.c_champAnnee + " is null and " + CCalendrier_JourParticulier.c_champMois + " is null and " + CCalendrier_JourParticulier.c_champJour + " is null and " + CCalendrier_JourParticulier.c_champJourSemaine + "=@1 and " + CCalendrier.c_champId + "=@2", (int)CUtilDate.GetJourBinaireFor(date.DayOfWeek), this.Id), bAutoriseLectureEnBase)) { return(jourParticulier); } // Vérifie s'il existe une exception "jour de semaine" sur le jour du calendrier de base if (jourParticulierHerite != null && jourParticulierHerite.JourSemaine != 0) { return(jourParticulierHerite); } return(null); }