private ListeObservable <T> Ajouter_List <T, U>(object sender, RoutedEventArgs e, Boolean UnSeul = false)
            where T : ObjetGestion, new()
            where U : ObjetGestion
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L))
            {
                U Parent = (U)V.DataContext;
                // On force à faire au minimum un tour de boucle dans le cas ou la liste est vide.

                int Nb = Math.Max(Ls.Count, 1);
                if (UnSeul)
                {
                    Nb = 1;
                }

                for (int i = 0; i < Nb; i++)
                {
                    T obj = Ajouter <T, U>(Parent);
                    pListe.Add(obj);
                    V.ScrollIntoView(obj);
                    V.SelectedItem = obj;
                }
            }

            return(pListe);
        }
        private ListeObservable <T> Inserer_Coller_List <T>(object sender, RoutedEventArgs e)
            where T : ObjetGestion, new()
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L) && (_Copie_Liste != null))
            {
                List <T> pListeCopie = new List <T>();

                pListeCopie = _Copie_Liste as List <T>;

                foreach (T iL in pListeCopie)
                {
                    T Obj = Ajouter <T>();
                    pListe.Add(Obj);
                    Obj.Copier(iL);

                    // Si la liste contient des lignes, on la déplace
                    if (L != null)
                    {
                        Liste.Move(Liste.IndexOf(Obj), Liste.IndexOf(L));
                    }
                }
                Liste.Numeroter();
            }
            return(pListe);
        }
예제 #3
0
 public ListeObservable(ListeObservable <T> Liste)
 {
     foreach (T item in Liste)
     {
         base.Add(item);
     }
 }
예제 #4
0
 protected void SupprimerListe <T>(ListeObservable <T> Liste)
     where T : ObjetGestion
 {
     if (Liste != null)
     {
         while (Liste.Count > 0)
         {
             Liste[0].Supprimer();
         }
     }
 }
        private Boolean Info <T>(MenuItem I, out ListBox V, out ListeObservable <T> Liste, out List <T> Ls, out T L)
            where T : ObjetWpf, INotifyPropertyChanged
        {
            V = null; Liste = null; Ls = null; L = default(T);
            if (I != null)
            {
                V     = (I.Parent as ContextMenu).PlacementTarget as ListBox;
                Liste = V.ItemsSource as ListeObservable <T>;
                Ls    = V.SelectedItems.Cast <T>().ToList();
                L     = (T)V.SelectedItem;

                if ((V != null) && (Liste != null) && (Ls != null) && ((L != null) || (Liste.Count == 0)))
                {
                    return(true);
                }
            }
            return(false);
        }
        private ListeObservable <T> Inserer_List <T>(object sender, RoutedEventArgs e)
            where T : ObjetGestion, new()
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L))
            {
                foreach (T iL in Ls)
                {
                    T Obj = Ajouter <T>();
                    pListe.Add(Obj);
                    Liste.Move(Liste.IndexOf(Obj), Liste.IndexOf(L));
                }
                Liste.Numeroter();
            }
            return(pListe);
        }
        private ListeObservable <T> Inserer_Coller_List <T, U>(object sender, RoutedEventArgs e)
            where T : ObjetGestion, new()
            where U : ObjetGestion
        {
            // Liste temporaire renvoyé par la fonction
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L) && (_Copie_Liste != null))
            {
                List <T> pListeCopie = new List <T>();

                U Parent = (U)V.DataContext;
                pListeCopie = _Copie_Liste as List <T>;

                foreach (T iL in pListeCopie)
                {
                    // On ajoute une ligne
                    T Obj = Ajouter <T, U>(Parent);
                    pListe.Add(Obj);

                    // On copie la ligne
                    Obj.Copier(iL);

                    // Si la liste contient des lignes, on la déplace
                    if (L != null)
                    {
                        Liste.Move(Liste.IndexOf(Obj), Liste.IndexOf(L));
                    }
                }

                Liste.Numeroter();
            }
            return(pListe);
        }
        private ListeObservable <T> Ajouter_List <T>(object sender, RoutedEventArgs e, Boolean UnSeul = false)
            where T : ObjetGestion, new()
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L))
            {
                int Nb = Math.Max(Ls.Count, 1);
                if (UnSeul)
                {
                    Nb = 1;
                }

                // On force à faire au minimum un tour de boucle dans le cas ou la liste est vide.
                for (int i = 0; i < Nb; i++)
                {
                    pListe.Add(Ajouter <T>());
                }
            }

            return(pListe);
        }
예제 #9
0
        public Boolean Analyser(DateTime dateDebut, DateTime dateFin)
        {
            _ListeAnalyseChantier = new ListeObservable <AnalyseChantier>();

            if (dateFin <= dateDebut)
            {
                return(false);
            }

            if ((dateFin - dateDebut).TotalDays < 32)
            {
                _DateValeur = String.Format("{0}", dateDebut.ToString("MMM yy")).UpperCaseFirstCharacter();
            }
            else
            {
                _DateValeur = String.Format("de {0} à {1}", dateDebut.ToString("MMM yy"), dateFin.ToString("MMM yy"));
            }

            var format = "yyyy-MM-dd HH:mm:ss";
            var filtre = String.Format("datevaleur >= '{0}' AND datevaleur < '{1}' ",
                                       dateDebut.ToString(format),
                                       dateFin.ToString(format)
                                       );
            var lstAchat = Bdd2.ListeFiltre <Achat>(filtre);
            var lstHeure = Bdd2.ListeFiltre <Heure>(filtre);

            if ((lstAchat.Count + lstHeure.Count) == 0)
            {
                return(false);
            }

            // Permet de précharger les parents et de limiter le nombre de requetes Sql
            var lstPostes = Bdd2.Parents <Poste, Achat>(lstAchat);

            foreach (var poste in Bdd2.Parents <Poste, Heure>(lstHeure))
            {
                lstPostes.Add(poste);
            }

            Bdd2.Parents <Chantier, Poste>(lstPostes);
            // fin du préchargement

            var dicAnalysePoste = new Dictionary <int, AnalysePoste>();

            foreach (var achat in lstAchat)
            {
                var          pst = achat.Poste;
                AnalysePoste ap;

                if (dicAnalysePoste.ContainsKey(pst.Id))
                {
                    ap = dicAnalysePoste[pst.Id];
                }
                else
                {
                    dicAnalysePoste.Add(pst.Id, ap = new AnalysePoste(pst));
                }

                ap.AjouterAchat(achat);
            }

            foreach (var heure in lstHeure)
            {
                var pst = heure.Poste;;

                AnalysePoste ap;

                if (dicAnalysePoste.ContainsKey(pst.Id))
                {
                    ap = dicAnalysePoste[pst.Id];
                }
                else
                {
                    dicAnalysePoste.Add(pst.Id, ap = new AnalysePoste(pst));
                }

                ap.AjouterHeure(heure);
            }

            var dicAnalyseChantier = new Dictionary <int, AnalyseChantier>();

            foreach (var analysePoste in dicAnalysePoste.Values)
            {
                var cht = analysePoste.Poste.Chantier;

                AnalyseChantier ac;

                if (dicAnalyseChantier.ContainsKey(cht.Id))
                {
                    ac = dicAnalyseChantier[cht.Id];
                }
                else
                {
                    dicAnalyseChantier.Add(cht.Id, ac = new AnalyseChantier(cht));
                }

                analysePoste.AnalyseChantier = ac;
                ac.AjouterAnalysePoste(analysePoste);
            }

            foreach (var analyseChantier in dicAnalyseChantier.Values)
            {
                analyseChantier.AnalysePeriode = this;
                this.AjouterAnalyseChantier(analyseChantier);
            }

            return(true);
        }