Beispiel #1
0
                public CListeObjetsDonnees GetRelations(ISatisfactionBesoin satisfaction)
                {
                    DateLastAcces = DateTime.Now;
                    CCacheRelation cache = null;
                    CFiltreData    filtre;

                    if (!m_dicCaches.TryGetValue(GetKey(satisfaction), out cache))
                    {
                        filtre = new CFiltreData(
                            CRelationBesoin_Satisfaction.c_champTypeElement + "=@1 and " +
                            CRelationBesoin_Satisfaction.c_champIdElement + "=@2",
                            satisfaction.GetType().ToString(),
                            satisfaction.Id);
                        CListeObjetsDonnees liste = new CListeObjetsDonnees(satisfaction.ContexteDonnee, typeof(CRelationBesoin_Satisfaction), filtre);
                        liste.PreserveChanges = true;
                        SetRelations(satisfaction, liste);
                        return(liste);
                    }
                    filtre = new CFiltreDataImpossible();
                    if (cache.Ids.Count > 0)
                    {
                        filtre = new CFiltreData(CRelationBesoin_Satisfaction.c_champId + " in (" + cache.IdsPourFiltre + ")");
                    }
                    else
                    {
                        filtre = new CFiltreDataImpossible();
                    }
                    CListeObjetsDonnees lstOptim = new CListeObjetsDonnees(satisfaction.ContexteDonnee, typeof(CRelationBesoin_Satisfaction), filtre);

                    lstOptim.PreserveChanges     = true;
                    lstOptim.InterditLectureInDB = true;
                    return(lstOptim);
                }
Beispiel #2
0
        //------------------------------------------------------------------------------------------------------------------------------
        public static void SetPourcentageFor(CBesoin besoin, ISatisfactionBesoin satisfaction, double fPourcentageSouhaité)
        {
            CImputationsCouts imputations = satisfaction.GetImputationsAFaireSurUtilisateursDeCout();
            CImputationCout   imputation  = imputations.GetImputation(besoin);

            if (fPourcentageSouhaité < 100 && fPourcentageSouhaité >= 0)
            {
                if (imputations != null)
                {
                    double fPoids = imputations.PoidsTotal - imputation.Poids;
                    if (fPoids == 0)
                    {
                        return;
                    }
                    CListeObjetsDonnees lst = satisfaction.RelationsSatisfaits;
                    lst.Filtre = new CFiltreData(CBesoin.c_champId + "=@1", besoin.Id);
                    if (lst.Count != 0)
                    {
                        double fCalc = fPourcentageSouhaité / 100.0 * fPoids / (1 - fPourcentageSouhaité / 100.0);
                        CRelationBesoin_Satisfaction rel = lst[0] as CRelationBesoin_Satisfaction;
                        rel.RatioCoutReel = fCalc;
                    }
                }
            }
        }
Beispiel #3
0
 //---------------------------------------------------
 public void UnregisterSatisfaction(ISatisfactionBesoin satisfaction)
 {
     if (m_dicSatisfactionToDessin.ContainsKey(satisfaction))
     {
         m_dicSatisfactionToDessin.Remove(satisfaction);
     }
 }
Beispiel #4
0
 //------------------------------------------------------------------
 public static void ResetCache(ISatisfactionBesoin satisfaction)
 {
     if (m_cacheRelations != null)
     {
         m_cacheRelations.Reset();
     }
 }
Beispiel #5
0
 //-------------------------------------------
 public static void Show(CFormEditionStandard formMaitresse, ISatisfactionBesoin satisfaction)
 {
     Instance.SetFormMaitresse(formMaitresse);
     Instance.m_panelMap.Init(satisfaction);
     Instance.Show();
     Instance.Focus();
 }
Beispiel #6
0
        //------------------------------------------------------
        private void Init(IEnumerable <ISatisfactionBesoin> lstSatisfactions)
        {
            m_listeNiveaux.Clear();
            m_setSatisfactionsIntegrés.Clear();
            CNiveau niveau = new CNiveau(0);

            foreach (ISatisfactionBesoin sat in lstSatisfactions)
            {
                niveau.AddSatisfaction(this, sat);
            }
            m_listeNiveaux.Add(niveau);


            CNiveau niveau0 = niveau;

            while (niveau.Satisfactions.Count() != 0)
            {
                niveau = CalculeNiveauSuivant();
            }
            niveau = niveau0;
            while (niveau.Satisfactions.Count() != 0)
            {
                niveau = CalculeNiveauPrecedent();
            }
            CalculeRectangles();
            m_satisfactionSel = null;
            m_lienSel         = null;
        }
Beispiel #7
0
 //-------------------------------------------------------------------
 public void Reset(ISatisfactionBesoin satisfaction)
 {
     foreach (CCacheRelationsParContexte cache in m_dicContexteToCache.Values)
     {
         cache.Reset(satisfaction);
     }
 }
Beispiel #8
0
        //-----------------------------------------------------
        private CSegmentDroite DrawLien(
            Graphics g,
            ISatisfactionBesoin besoinSatisfait,
            ISatisfactionBesoin satisfaction,
            Pen p)
        {
            if (besoinSatisfait == null || satisfaction == null)
            {
                return(null);
            }
            CInfoDessinSatisfaction dessin1 = null;
            CInfoDessinSatisfaction dessin2 = null;

            m_dicSatisfactionToRect.TryGetValue(besoinSatisfait, out dessin1);
            m_dicSatisfactionToRect.TryGetValue(satisfaction, out dessin2);
            CSegmentDroite segment = null;

            if (dessin1 != null && dessin2 != null)
            {
                segment = new CSegmentDroite(new Point(dessin1.Rectangle.Right, dessin1.Rectangle.Top + m_nHauteurSatisfactionDefaut / 2),
                                             new Point(dessin2.Rectangle.Left, dessin2.Rectangle.Top + m_nHauteurSatisfactionDefaut / 2));
                g.DrawLine(p, segment.Point1, segment.Point2);
                segment.DrawFlechePt1(g, p, 4);
            }
            return(segment);
        }
Beispiel #9
0
        //------------------------------------------------------------
        void menuSatisfaction_Click(object sender, EventArgs e)
        {
            CObjetDonneeMenuItem item         = sender as CObjetDonneeMenuItem;
            ISatisfactionBesoin  satisfaction = item != null ? item.ObjetDragDrop as ISatisfactionBesoin : null;

            if (satisfaction != null)
            {
                if (m_bIsMenuDeleteSatisfaction && m_extModeEdition.ModeEdition)
                {
                    if (MessageBox.Show(I.T("Remove @1 from satisfactions list .|20637",
                                            satisfaction.LibelleSatisfactionComplet), "",
                                        MessageBoxButtons.YesNo,
                                        MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        Besoin.RemoveSatisfaction(satisfaction);
                        InitChamps(CurrentItem);
                    }
                }
                else
                {
                    CObjetDonnee objet = satisfaction.ObjetPourEditionElementACout.GetObjetInContexte(CSc2iWin32DataClient.ContexteCourant);
                    CTimosApp.Navigateur.EditeElement(objet, false, "");
                }
            }
        }
Beispiel #10
0
 //---------------------------------------------------------------
 public CDessinSatisfaction(
     CNiveauMapSatisfaction niveau,
     ISatisfactionBesoin satisfaction)
 {
     m_satisfaction = satisfaction;
     m_niveau       = niveau;
     niveau.BaseSatisfactions.RegisterDessin(this);
 }
Beispiel #11
0
        //------------------------------------------------------------------------------------------------------------------------------
        public static ISatisfactionBesoin[] GetFlattenSatisfactionsHierarchy(ISatisfactionBesoin satisfaction)
        {
            HashSet <ISatisfactionBesoin> set         = new HashSet <ISatisfactionBesoin>();
            HashSet <ISatisfactionBesoin> setSatFaits = new HashSet <ISatisfactionBesoin>();

            FillFlattenSatisfactionsHierarchy(satisfaction, set, setSatFaits);
            return(set.ToArray());
        }
Beispiel #12
0
                //-------------------------------------------------------------------
                public void Reset(ISatisfactionBesoin satisfaction)
                {
                    DateLastAcces = DateTime.Now;
                    CCacheRelation cache = null;

                    if (m_dicCaches.TryGetValue(GetKey(satisfaction), out cache))
                    {
                        m_dicCaches.Remove(GetKey(satisfaction));
                    }
                }
Beispiel #13
0
        //------------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Indique si cette satisfaction satisfait ce besoin directement ou indirectement
        /// </summary>
        /// <param name="satisfaction"></param>
        /// <param name="besoin"></param>
        /// <returns></returns>
        public static bool IsRecursiveSatisfactionFor(ISatisfactionBesoin satisfaction, CBesoin besoin)
        {
            if (besoin == null || satisfaction == null)
            {
                return(false);
            }
            HashSet <ISatisfactionBesoin> satisfactionsFaites = new HashSet <ISatisfactionBesoin>();

            return(IsRecursiveSatisfactionFor(satisfaction, besoin, satisfactionsFaites));
        }
Beispiel #14
0
        //------------------------------------------------------------------------------
        private void m_menuAfficherElement_Click(object sender, EventArgs e)
        {
            ISatisfactionBesoin sat = m_satisfactionSel;

            if (sat != null && sat.ObjetPourEditionElementACout != null)
            {
                CObjetDonnee objet = sat.ObjetPourEditionElementACout.GetObjetInContexte(CSc2iWin32DataClient.ContexteCourant);
                CTimosApp.Navigateur.EditeElement(objet, false, "");
            }
        }
Beispiel #15
0
                public void SetRelations(ISatisfactionBesoin satisfaction, CListeObjetsDonnees relations)
                {
                    CCacheRelation cache = new CCacheRelation();

                    foreach (CRelationBesoin_Satisfaction rel in relations)
                    {
                        cache.AddRelation(rel);
                    }
                    m_dicCaches[GetKey(satisfaction)] = cache;
                }
Beispiel #16
0
            //-------------------------------------------------------------------
            public bool IsLoaded(ISatisfactionBesoin satisfaction)
            {
                CCacheRelationsParContexte cache = null;

                if (!m_dicContexteToCache.TryGetValue(satisfaction.ContexteDonnee.IdContexteDonnee, out cache))
                {
                    return(false);
                }
                return(cache.IsLoaded(satisfaction));
            }
Beispiel #17
0
        //------------------------------------------------------------------
        public CRelationBesoin_Satisfaction GetRelationToBesoin(ISatisfactionBesoin satisfaction, CBesoin besoin)
        {
            CListeObjetsDonnees lst = GetRelationsBesoinsSatisfaits(satisfaction);

            lst.Filtre = new CFiltreData(CBesoin.c_champId + "=@1", besoin.Id);
            if (lst.Count > 0)
            {
                return(lst[0] as CRelationBesoin_Satisfaction);
            }
            return(null);
        }
Beispiel #18
0
        //---------------------------------------------------
        public CDessinSatisfaction GetDessin(ISatisfactionBesoin satisfaction)
        {
            CDessinSatisfaction de = null;

            if (satisfaction == null)
            {
                return(null);
            }
            m_dicSatisfactionToDessin.TryGetValue(satisfaction, out de);
            return(de);
        }
Beispiel #19
0
 //------------------------------------------
 public void Init(
     ISatisfactionBesoin satisfaction,
     bool bIsEnEdition)
 {
     m_satisfaction   = satisfaction;
     m_bIsEnEdition   = bIsEnEdition;
     m_picBox.Visible = m_satisfaction != null;
     if (m_satisfaction != null)
     {
         m_picBox.Image = m_satisfaction.RelationsSatisfaits.Count > 0 ? Resources.PuzzleMal32:Resources.PuzzleMal32Trans;
     }
 }
Beispiel #20
0
            //-------------------------------------------------------------------
            public CListeObjetsDonnees GetRelations(ISatisfactionBesoin satisfaction)
            {
                CCacheRelationsParContexte cache = null;

                if (!m_dicContexteToCache.TryGetValue(satisfaction.ContexteDonnee.IdContexteDonnee, out cache))
                {
                    NettoieCache();
                    cache = new CCacheRelationsParContexte();
                    m_dicContexteToCache[satisfaction.ContexteDonnee.IdContexteDonnee] = cache;
                }
                return(cache.GetRelations(satisfaction));
            }
Beispiel #21
0
            //-------------------------------------------------------------------
            public void SetRelations(ISatisfactionBesoin satisfaction, CListeObjetsDonnees lstRelations)
            {
                CCacheRelationsParContexte cache = null;

                if (!m_dicContexteToCache.TryGetValue(satisfaction.ContexteDonnee.IdContexteDonnee, out cache))
                {
                    NettoieCache();
                    cache = new CCacheRelationsParContexte();
                    m_dicContexteToCache[satisfaction.ContexteDonnee.IdContexteDonnee] = cache;
                }
                cache.SetRelations(satisfaction, lstRelations);
            }
Beispiel #22
0
        //------------------------------------------------------
        private Rectangle CalculeEnglobants(CNiveau niveau, ref int nIndexNext, int nIndexHierarchique)
        {
            ISatisfactionBesoin satisfaction = niveau.Satisfactions.ElementAt(nIndexNext);

            CInfoDessinSatisfaction dessin = null;

            m_dicSatisfactionToRect.TryGetValue(satisfaction, out dessin);
            Rectangle rctRetour = dessin.Rectangle;

            nIndexNext++;
            HashSet <ISatisfactionBesoin> besoinsFils = new HashSet <ISatisfactionBesoin>();
            int nIndexStartFils = nIndexNext;

            ISatisfactionBesoinAvecSousBesoins satB = satisfaction as ISatisfactionBesoinAvecSousBesoins;

            if (satB != null && m_setSatisfactionsExpanded.Contains(satB))
            {
                foreach (CBesoin besoin in satB.GetSousBesoinsDeSatisfaction())
                {
                    besoinsFils.Add(besoin);
                }
            }
            else if (satisfaction is CBesoin)
            {
                foreach (CBesoin besoin in ((CBesoin)satisfaction).BesoinsFils)
                {
                    besoinsFils.Add(besoin);
                }
            }

            if (besoinsFils.Count > 0)
            {
                while (nIndexNext < niveau.Satisfactions.Count() &&
                       besoinsFils.Contains(niveau.Satisfactions.ElementAt(nIndexNext)))
                {
                    Rectangle rctFils = CalculeEnglobants(niveau, ref nIndexNext, nIndexHierarchique + 1);
                    rctRetour = Rectangle.Union(rctRetour, rctFils);
                }
                for (int nFils = nIndexStartFils; nFils < nIndexNext; nFils++)
                {
                    ISatisfactionBesoin     satFils    = niveau.Satisfactions.ElementAt(nFils);
                    CInfoDessinSatisfaction dessinFils = null;
                    m_dicSatisfactionToRect.TryGetValue(satFils, out dessinFils);
                    dessinFils.Offset(m_nOffestNiveau, 0);
                }
                rctRetour.Width += m_nOffestNiveau;
                dessin.Rectangle = new Rectangle(rctRetour.Left + m_nOffestNiveau / 3, rctRetour.Top, m_nLargeurNiveauDefaut, rctRetour.Height + 4);
            }
            dessin.NiveauHierarchique = nIndexHierarchique;
            return(rctRetour);
        }
Beispiel #23
0
 //-----------------------------------------------------
 private void Invalidate(ISatisfactionBesoin satisfaction)
 {
     if (satisfaction != null)
     {
         CDessinSatisfaction dessin = m_baseMap.GetDessin(satisfaction);
         if (dessin != null)
         {
             Rectangle r = new Rectangle(PointToDisplay(new Point(dessin.Rectangle.Left - 5, dessin.Rectangle.Top - 5)),
                                         new Size(SizeToDisplay(dessin.Rectangle.Width + 11), SizeToDisplay(dessin.Rectangle.Height + 11)));
             r.Inflate(2, 2);
             m_panelDessin.Invalidate(r);
         }
     }
 }
Beispiel #24
0
        //------------------------------------------------------
        public void Init(ISatisfactionBesoin satisfaction)
        {
            m_satisfactionRacine = satisfaction;
            List <ISatisfactionBesoin> lst = new List <ISatisfactionBesoin>();

            lst.Add(satisfaction);
            ISatisfactionBesoinAvecSousBesoins sab = satisfaction as ISatisfactionBesoinAvecSousBesoins;

            if (sab != null)
            {
                m_setSatisfactionsExpanded.Add(sab);
            }
            Init(lst);
        }
Beispiel #25
0
        //------------------------------------------------------------------------------------------------------------------------------
        public static bool IsDirectSatisfactionFor(ISatisfactionBesoin satisfaction, CBesoin besoin)
        {
            if (besoin == null || satisfaction == null)
            {
                return(false);
            }
            CListeObjetsDonnees lstSatisfaits = satisfaction.RelationsSatisfaits;

            lstSatisfaits.Filtre = new CFiltreData(CBesoin.c_champId + "=@1",
                                                   besoin.Id);
            int nCoutn = lstSatisfaits.Count;

            return(nCoutn > 0);
        }
Beispiel #26
0
 //-----------------------------------------------------
 private void Invalidate(ISatisfactionBesoin satisfaction)
 {
     if (satisfaction != null)
     {
         CInfoDessinSatisfaction dessin = null;
         m_dicSatisfactionToRect.TryGetValue(satisfaction, out dessin);
         if (dessin != null)
         {
             Rectangle r = new Rectangle(PointToDisplay(new Point(dessin.Rectangle.Left - 5, dessin.Rectangle.Top - 5)),
                                         new Size(SizeToDisplay(dessin.Rectangle.Width + 11), SizeToDisplay(dessin.Rectangle.Height + 11)));
             r.Inflate(2, 2);
             m_panelDessin.Invalidate(r);
         }
     }
 }
Beispiel #27
0
        //------------------------------------------------------------------------------------------------------------------------------
        public static double GetPourcentageFor(CBesoin besoin, ISatisfactionBesoin satisfaction)
        {
            CImputationsCouts imputations = satisfaction.GetImputationsAFaireSurUtilisateursDeCout();
            CImputationCout   imputation  = imputations.GetImputation(besoin);

            if (imputations == null)
            {
                return(0);
            }
            if (imputations.PoidsTotal > 0)
            {
                return(imputation.Poids / imputations.PoidsTotal * 100);
            }
            return(0);
        }
Beispiel #28
0
            //-------------------------------
            public CInfoDessinSatisfaction(
                Rectangle rct,
                ISatisfactionBesoin satisfaction,
                bool bIsExpanded)
            {
                m_rectangle    = rct;
                m_satisfaction = satisfaction;
                ISatisfactionBesoinAvecSousBesoins sab = satisfaction as ISatisfactionBesoinAvecSousBesoins;

                if (sab != null)
                {
                    m_bHasChildren = sab.GetSousBesoinsDeSatisfaction().Count() != 0;
                }
                m_bIsExpanded = bIsExpanded;
            }
Beispiel #29
0
        //------------------------------------------------------------------
        /// <summary>
        /// Retourne les liens aux besoins satisfaits
        /// </summary>
        /// <param name="objet"></param>
        /// <returns></returns>
        public static CListeObjetsDonnees GetRelationsBesoinsSatisfaits(ISatisfactionBesoin satisfaction)
        {
            if (m_cacheRelations != null)
            {
                return(m_cacheRelations.GetRelations(satisfaction));
            }
            CFiltreData filtre = new CFiltreData(
                CRelationBesoin_Satisfaction.c_champTypeElement + "=@1 and " +
                CRelationBesoin_Satisfaction.c_champIdElement + "=@2",
                satisfaction.GetType().ToString(),
                satisfaction.Id);
            CListeObjetsDonnees liste = new CListeObjetsDonnees(satisfaction.ContexteDonnee, typeof(CRelationBesoin_Satisfaction), filtre);

            liste.PreserveChanges = true;
            return(liste);
        }
Beispiel #30
0
        //------------------------------------------------------
        public void Init(ISatisfactionBesoin satisfaction)
        {
            m_satisfactionRacine = satisfaction;
            List <ISatisfactionBesoin> lst = new List <ISatisfactionBesoin>();

            lst.Add(satisfaction);
            m_baseMap.Init(lst);
            m_satisfactionSel = null;
            m_lienSel         = null;

            CDessinSatisfaction dessin = m_baseMap.GetDessin(satisfaction);

            if (dessin != null)
            {
                dessin.Expand();
            }
        }