//-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CCalendrier_JourParticulier jourParticulier = (CCalendrier_JourParticulier)objet;

                // Vérificaton de la cohérence des tranches horaires
                // Pas de recouvrement entre les tranches
                foreach (CHoraireJournalier_Tranche tranche1 in jourParticulier.TranchesHorairesListe)
                {
                    foreach (CHoraireJournalier_Tranche tranche2 in jourParticulier.TranchesHorairesListe)
                    {
                        if (tranche1 != tranche2)
                        {
                            if (tranche2.HeureDebut <= tranche1.HeureDebut &&
                                tranche2.Durée > (tranche1.HeureDebut - tranche2.HeureDebut))
                            {
                                result.EmpileErreur(I.T("Two time slots are overlapping|165"));
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Beispiel #2
0
 //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))
     });
 }
Beispiel #3
0
        //----------------------------------------------------------------------------------------
        /// <summary>
        /// Retourne tous les jours particuliers
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        private CCalendrier_JourParticulier GetJourParticulierAvecHeritageOptim(DateTime date, Dictionary <string, CCalendrier_JourParticulier> dicJoursParticuliers)
        {
            CCalendrier_JourParticulier jourParticulier = new CCalendrier_JourParticulier(this.ContexteDonnee);


            foreach (string strKey in GetAllKeysConcernant(date))
            {
                if (dicJoursParticuliers.TryGetValue(strKey, out jourParticulier))
                {
                    return(jourParticulier);
                }
            }

            return(null);
        }
        //-----------------------------------------------------------------------
        /// <summary>
        /// Compare les propriétés d'un jour particlier avec un autre
        /// </summary>
        /// <param name="jpAComparer"></param>
        /// <returns>true si les propriétés sont identiques (définissent une même règle)</returns>
        public bool HasSameProperties(CCalendrier_JourParticulier jpAComparer)
        {
            if (jpAComparer == null)
            {
                return(false);
            }

            if (jpAComparer.Calendrier != this.Calendrier)
            {
                return(false);
            }

            if (jpAComparer.HoraireJournalier != this.HoraireJournalier)
            {
                return(false);
            }

            if (jpAComparer.TypeOccupationHoraire != this.TypeOccupationHoraire)
            {
                return(false);
            }

            // Compare les tranches horaires
            CListeObjetsDonnees listeThis      = this.TranchesHorairesListe;
            CListeObjetsDonnees listeAComparer = jpAComparer.TranchesHorairesListe;

            if (listeThis.Count != listeAComparer.Count)
            {
                return(false);
            }

            // Trier
            listeThis.Tri      = CHoraireJournalier_Tranche.c_champHeureDebut;
            listeAComparer.Tri = CHoraireJournalier_Tranche.c_champHeureDebut;

            for (int i = 0; i < listeThis.Count; i++)
            {
                CHoraireJournalier_Tranche t1 = (CHoraireJournalier_Tranche)listeThis[i];
                CHoraireJournalier_Tranche t2 = (CHoraireJournalier_Tranche)listeAComparer[i];
                if (!t2.HasSameProperties(t1))
                {
                    return(false);
                }
            }

            // Toutes les comparaisons sont OK
            return(true);
        }
        public bool ApplySameProperties(CCalendrier_JourParticulier jpACopier)
        {
            if (jpACopier == null)
            {
                return(false);
            }
            if (jpACopier == this)
            {
                return(true);
            }

            Calendrier            = jpACopier.Calendrier;
            HoraireJournalier     = jpACopier.HoraireJournalier;
            TypeOccupationHoraire = jpACopier.TypeOccupationHoraire;

            //Recopie les tranches sur les existantes
            int nIndex = 0;
            CListeObjetsDonnees listeMesTranches = TranchesHorairesListe;

            foreach (CHoraireJournalier_Tranche tranche in jpACopier.TranchesHorairesListe)
            {
                CHoraireJournalier_Tranche laTrancheQuiMeVa;
                if (nIndex >= listeMesTranches.Count)
                {
                    laTrancheQuiMeVa = new CHoraireJournalier_Tranche(this.ContexteDonnee);
                    laTrancheQuiMeVa.CreateNewInCurrentContexte();
                }
                else
                {
                    laTrancheQuiMeVa = (CHoraireJournalier_Tranche)listeMesTranches[nIndex];
                }
                laTrancheQuiMeVa.JourParticulier       = this;
                laTrancheQuiMeVa.HeureDebut            = tranche.HeureDebut;
                laTrancheQuiMeVa.HeureFin              = tranche.HeureFin;
                laTrancheQuiMeVa.TypeOccupationHoraire = tranche.TypeOccupationHoraire;
                nIndex++;
            }

            for (nIndex = jpACopier.TranchesHorairesListe.Count; nIndex < listeMesTranches.Count; nIndex++)
            {
                if (!((CObjetDonnee)listeMesTranches[nIndex]).Delete())
                {
                    return(false);
                }
            }
            return(true);
        }
Beispiel #6
0
        //----------------------------------------------------------------------------------------
        /// <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);
        }