public void AjouterAnalyseChantier(AnalyseChantier analyseChantier) { _Achat += analyseChantier.Achat; _HeureQte += analyseChantier.HeureQte; _HeureMt += analyseChantier.HeureMt; _Depense += analyseChantier.Depense; ListeAnalyseChantier.Add(analyseChantier); }
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); }