예제 #1
0
        private static void InterditsVersBas(int id, List <Personne> interdits)
        {
            IEnumerable <Personne> enfants = new PersonneRepository().DonnerEnfants(id);

            foreach (Personne pe in enfants)
            {
                AjIlistUnique(interdits, pe);
                InterditsVersBas(pe.id, interdits);
            }
        }
예제 #2
0
        public IEnumerable <Personne> DonnerParenteesDirectesPossibles(int id)
        {
            int             idArbre       = new PersonneRepository().Donner(id).idarbre;
            List <Personne> interdictions = new List <Personne>();

            InterditsVersHaut(id, interdictions);
            InterditsVersBas(id, interdictions);


            return(new PersonneRepository()
                   .DonnerPourArbre(idArbre)
                   .Where(k => !(interdictions.Select(j => j.id).Contains(k.id)))
                   //?? new List<Personne>();
                   );
        }
예제 #3
0
        public IEnumerable <Descendant> DonnerLesEnfants(int id)
        {
            string   sqlRequete = $"{CONST_PERSONNE_REQ}";
            Personne p          = new PersonneRepository().Donner(id);
            string   s          = p.homme == 1 ? "idpere" : "idmere";

            sqlRequete += $" where {s} = @id";

            Commande com = new Commande(sqlRequete);

            com.AjouterParametre("id", id);


            IEnumerable <Personne> enfants = _connexion.ExecuterLecteur(com, j => j.VersPersonne());

            var vivacite = enfants.Select(j => new { parentId = ((p.homme == 1) ? j.idmere : j.idpere), enfant = j })
                           .GroupBy(j => j.parentId)
            ;
            IList <Descendant> descendants = new List <Descendant>();

            foreach (var ch in vivacite)
            {
                Console.WriteLine(ch);
                Console.WriteLine(ch.Count());

                /*
                 * Descendants d = new Descendants(ch.Key == null ? null : new PersonneRepository().Donner((int)ch.Key),
                 *  enfants.Where(j=>p.homme==1?j.idmere==ch.Key:j.idpere==ch.Key));
                 */
                int?     idparent = ch.Key;
                Personne parent   = idparent == null?null:new PersonneRepository().Donner((int)idparent);

                foreach (var chch in ch)
                {
                    descendants.Add(new Descendant {
                        id = p.id, parent = parent, enfant = chch.enfant
                    });
                }
            }
            //if (descendants.Count() == 0) descendants = null;
            return(descendants);

            throw new NotImplementedException();
        }
예제 #4
0
        private static void InterditsVersHaut(int id, List <Personne> interdits)
        {
            Personne p = new PersonneRepository().Donner(id);

            AjIlistUnique(interdits, p);

            int?idpere = p.idpere;

            if (idpere != null)
            {
                InterditsVersHaut((int)idpere, interdits);
            }
            int?idmere = p.idmere;

            if (idmere != null)
            {
                InterditsVersHaut((int)idmere, interdits);
            }
        }
예제 #5
0
        public Personne DonnerMere(int id)
        {
            Personne p = new PersonneRepository().Donner(id);

            return((p == null) ? null : (p.idmere == null) ? null : new PersonneRepository().Donner((int)p.idmere));
        }