Пример #1
0
        /// <summary>
        /// Controleert of <paramref name="p"/> een geldige communicatievorm zou zijn
        /// voor het gegeven <paramref name="communicatieType"/>
        /// </summary>
        /// <param name="p">Telefoonnummer, e-mailadres,...</param>
        /// <param name="communicatieType">Een communicatietype</param>
        /// <returns><c>True</c> als <paramref name="p"/> een geldige communicatievorm zou zijn
        /// voor het gegeven <paramref name="communicatieType"/></returns>
        public bool IsGeldig(string p, CommunicatieType communicatieType)
        {
            var validator = new CommunicatieVormValidator();

            return
                (validator.Valideer(new CommunicatieValidatieInfo
            {
                CommunicatieTypeValidatie = communicatieType.Validatie,
                Nummer = p
            }));
        }
        public void TestOngeldigTelefoonnummerValideren()
        {
            // Arrange
            var cvValid = new CommunicatieVormValidator();
            var comm    = new CommunicatieVorm
            {
                CommunicatieType = new CommunicatieType
                {
                    ID        = (int)CommunicatieTypeEnum.TelefoonNummer,
                    Validatie = @"^0[0-9]{1,2}\-[0-9]{2,3} ?[0-9]{2} ?[0-9]{2}$|^04[0-9]{2}\-[0-9]{2,3} ?[0-9]{2} ?[0-9]{2}$|^[+][0-9]*$"
                },
                Nummer = "03/231.07.95"
            };

            // Act
            bool vlag = cvValid.Valideer(comm);

            // Assert
            Assert.IsFalse(vlag);
        }
Пример #3
0
        /// <summary>
        /// Koppelt een communicatievorm aan een gelieerde persoon.
        /// </summary>
        /// <param name="gelieerdePersoon">
        /// De gelieerde persoon voor wie de communicatievorm toegevoegd of aangepast wordt
        /// </param>
        /// <param name="nieuweCommunicatieVorm">
        /// De nieuwe gegevens voor de communicatievorm
        /// </param>
        /// <returns>
        /// De lijst van effectief gekoppelde communicatievormen. Als <paramref name="nieuweCommunicatieVorm"/>
        /// gezinsgebonden is, kunnen dat er meer zijn.
        /// </returns>
        /// <remarks>
        /// Als de communicatievorm de eerste van een bepaald type is, dan wordt dat ook de voorkeur.
        /// </remarks>
        public List <CommunicatieVorm> Koppelen(GelieerdePersoon gelieerdePersoon, CommunicatieVorm nieuweCommunicatieVorm)
        {
            // Opmerking: gebruik dit niet als referentie-implementatie:
            // Te veel rommel!

            var gekoppeld = new List <CommunicatieVorm>();

            var cvValid = new CommunicatieVormValidator();

            if (!cvValid.Valideer(nieuweCommunicatieVorm))
            {
                throw new FoutNummerException(FoutNummer.ValidatieFout, string.Format(Resources.CommunicatieVormValidatieFeedback,
                                                                                      nieuweCommunicatieVorm.Nummer,
                                                                                      nieuweCommunicatieVorm.CommunicatieType.Omschrijving));
            }

            // nieuweCommunicatieVorm kan hier nog geen ID hebben
            Debug.Assert(nieuweCommunicatieVorm.ID == 0);

            nieuweCommunicatieVorm.GelieerdePersoon = gelieerdePersoon;
            gelieerdePersoon.Communicatie.Add(nieuweCommunicatieVorm);

            gekoppeld.Add(nieuweCommunicatieVorm);

            if (nieuweCommunicatieVorm.IsGezinsgebonden)
            {
                // Beetje gepruts voor gezinsgebonden communicatie. Dit zit niet juist op database-niveau. (#1070)
                // Als er gezinsgebonden communicatie wordt toegevoegd, dan voegen we die hier toe aan alle andere
                // gezinsleden, of juister: adresgenoten.

                var alleAdresgenoten =
                    gelieerdePersoon.Persoon.PersoonsAdres.Select(pa => pa.Adres)
                    .SelectMany(adr => adr.PersoonsAdres)
                    .Select(pa => pa.Persoon).ToList();
                var mijnAdresGenoten = _autorisatieMgr.MijnGelieerdePersonen(alleAdresgenoten);

                // adresgenoten die ik niet zelf ben, en die het e-mailadres nog niet hebben.
                var relevanteAdresGenoten = (from gp in mijnAdresGenoten
                                             where gp.ID != gelieerdePersoon.ID
                                             &&
                                             !gp.Communicatie.Any(
                                                 cv =>
                                                 cv.CommunicatieType.ID ==
                                                 nieuweCommunicatieVorm.CommunicatieType.ID &&
                                                 String.Compare(cv.Nummer, nieuweCommunicatieVorm.Nummer,
                                                                StringComparison.OrdinalIgnoreCase) == 0)
                                             select gp).ToList();

                foreach (var adresgenoot in relevanteAdresGenoten)
                {
                    var cvKloon = Kloon(nieuweCommunicatieVorm);

                    cvKloon.GelieerdePersoon = adresgenoot;
                    adresgenoot.Communicatie.Add(cvKloon);
                    gekoppeld.Add(cvKloon);
                }
            }

            // Voorkeurscommunicatie zetten voor toegevoegde communicatievorm.
            // Opgelet: als de communicatievorm gezinsgebonden was, en voorkeur, dan zal die
            // bij de gezinsgenoten die hem nog niet hebben als voorkeurscommunicatie van dat
            // type toegevoegd worden. Dit is misschien gewenst, misschien ook niet. Maar
            // alleszins erg verwarrend. Zie ook #1070.

            foreach (var cv in gekoppeld)
            {
                bool eersteVanType = (from c in cv.GelieerdePersoon.Communicatie
                                      where c.CommunicatieType.ID == nieuweCommunicatieVorm.CommunicatieType.ID &&
                                      !Equals(c, cv)
                                      select c).FirstOrDefault() == null;

                if (eersteVanType || cv.Voorkeur)
                {
                    VoorkeurZetten(nieuweCommunicatieVorm);
                }
            }

            return(gekoppeld);
        }