public void ValidatieLidVoorstelZonderTelefoonNummer() { // Arrange // Ik maak een persoon, en een werkjaar met 2 afdelingen. Maar dat is hier // niet relevant. Wat wel van belang is, is dat de persoon te jong is om // lid te worden. We verwachten dat het maken van een lidvoorstel crasht. var gwj = new GroepsWerkJaar { WerkJaar = 2014, Groep = new ChiroGroep() }; // Werkjaar 2012-2013 var gp = new GelieerdePersoon { Persoon = new Persoon { GeboorteDatum = new DateTime(2000, 06, 21), Geslacht = GeslachtsType.Vrouw, }, Groep = gwj.Groep, PersoonsAdres = new PersoonsAdres(), Communicatie = new List <CommunicatieVorm>() // geen telefoonnummer }; gwj.AfdelingsJaar.Add(new AfdelingsJaar { ID = 1, GeboorteJaarVan = 1999, GeboorteJaarTot = 2000, Geslacht = GeslachtsType.Gemengd, OfficieleAfdeling = new OfficieleAfdeling() }); gwj.AfdelingsJaar.Add(new AfdelingsJaar { ID = 2, GeboorteJaarVan = 1997, GeboorteJaarTot = 1998, Geslacht = GeslachtsType.Gemengd, OfficieleAfdeling = new OfficieleAfdeling() }); var lidVoorstel = new LidVoorstel { GelieerdePersoon = gp, GroepsWerkJaar = gwj, AfdelingsJarenIrrelevant = true, LeidingMaken = false }; var target = new LidVoorstelValidator(); // Act var foutNummer = target.FoutNummer(lidVoorstel); // Assert Assert.AreEqual(FoutNummer.TelefoonNummerOntbreekt, foutNummer); }
public void ValidatieLidVoorstelKleutersTest() { // Arrange // Ik maak een persoon, en een werkjaar met 2 afdelingen. Maar dat is hier // niet relevant. Wat wel van belang is, is dat de persoon te jong is om // lid te worden. var gwj = new GroepsWerkJaar { WerkJaar = 2012, Groep = new ChiroGroep() }; // Werkjaar 2012-2013 var gp = new GelieerdePersoon { Persoon = new Persoon { GeboorteDatum = new DateTime(2010, 06, 21), // Geboren in 2010 Geslacht = GeslachtsType.Vrouw, }, Groep = gwj.Groep }; gwj.AfdelingsJaar.Add(new AfdelingsJaar { ID = 1, GeboorteJaarVan = 1999, GeboorteJaarTot = 2000, Geslacht = GeslachtsType.Gemengd, OfficieleAfdeling = new OfficieleAfdeling() }); gwj.AfdelingsJaar.Add(new AfdelingsJaar { ID = 2, GeboorteJaarVan = 1997, GeboorteJaarTot = 1998, Geslacht = GeslachtsType.Gemengd, OfficieleAfdeling = new OfficieleAfdeling() }); var lidVoorstel = new LidVoorstel { GelieerdePersoon = gp, GroepsWerkJaar = gwj, AfdelingsJarenIrrelevant = true, LeidingMaken = false }; var target = new LidVoorstelValidator(); // Act var foutNummer = target.FoutNummer(lidVoorstel); // Assert Assert.AreEqual(FoutNummer.LidTeJong, foutNummer); }
public void ValidatieLidVoorstelLeidingZonderEmail() { // Arrange // Ik maak een persoon, en een werkjaar met 2 afdelingen. Maar dat is hier // niet relevant. Wat wel van belang is, is dat de persoon te jong is om // lid te worden. We verwachten dat het maken van een lidvoorstel crasht. var gwj = new GroepsWerkJaar { WerkJaar = 2014, Groep = new ChiroGroep() }; // Werkjaar 2012-2013 var gp = new GelieerdePersoon { Persoon = new Persoon { GeboorteDatum = new DateTime(1995, 06, 21), Geslacht = GeslachtsType.Vrouw, }, Groep = gwj.Groep, PersoonsAdres = new PersoonsAdres(), Communicatie = new List <CommunicatieVorm> { // Enkel telefoonnummer; e-mailadres ontbreekt. new CommunicatieVorm { CommunicatieType = new CommunicatieType { ID = (int)CommunicatieTypeEnum.TelefoonNummer } } } }; var lidVoorstel = new LidVoorstel { GelieerdePersoon = gp, GroepsWerkJaar = gwj, AfdelingsJaren = new List <AfdelingsJaar>(), AfdelingsJarenIrrelevant = false, LeidingMaken = true }; var target = new LidVoorstelValidator(); // Act var foutNummer = target.FoutNummer(lidVoorstel); // Assert Assert.AreEqual(FoutNummer.EMailVerplicht, foutNummer); }
/// <summary> /// Schrijft een gelieerde persoon in, persisteert niet. Er mag nog geen lidobject (ook geen inactief) voor de /// gelieerde persoon bestaan. /// </summary> /// <param name="voorstelLid"> /// Voorstel voor de eigenschappen van het in te schrijven lid. /// </param> /// <param name="isJaarOvergang"> /// Geeft aan of het over de automatische jaarovergang gaat; relevant voor de /// probeerperiode /// </param> /// <returns> /// Het aangemaakte lid object /// </returns> public Lid NieuwInschrijven(LidVoorstel voorstelLid, bool isJaarOvergang) { var validator = new LidVoorstelValidator(); var gp = voorstelLid.GelieerdePersoon; var gwj = voorstelLid.GroepsWerkJaar; // We gaan ervan uit dat er een voorstel is. Je kunt het voorstel automatisch laten // genereren via InschrijvingVoorstellen. Debug.Assert(voorstelLid != null); var foutNummer = validator.FoutNummer(voorstelLid); if (foutNummer != null) { if (foutNummer.Value == FoutNummer.OnbekendGeslacht) { // Al de rest zit in client side validation, maar dit is een complex geval. Geslacht is verplicht, // maar als het niet ingevuld wordt, krijg je standaard 'Onbekend', waardoor het toch ingevuld is. throw new FoutNummerException(foutNummer.Value, Resources.GeslachtVerplicht); } else { throw new FoutNummerException(foutNummer.Value, Resources.LidProbleem); } } if (voorstelLid.AfdelingsJarenIrrelevant && !voorstelLid.LeidingMaken) { // Lid maken en zelf afdeling bepalen voorstelLid.AfdelingsJaren = InschrijvingVoorstellen(gp, gwj, false).AfdelingsJaren; if (!voorstelLid.AfdelingsJaren.Any()) { throw new FoutNummerException(FoutNummer.AfdelingNietBeschikbaar, Resources.GeenAfdelingVoorLeeftijd); } } Lid nieuwlid; if (voorstelLid.LeidingMaken) { nieuwlid = LeidingMaken(gp, gwj, isJaarOvergang, voorstelLid.AfdelingsJaren); } else { nieuwlid = KindMaken(gp, gwj, isJaarOvergang, voorstelLid.AfdelingsJaren.First()); } return(nieuwlid); }
public List <InschrijvingsVoorstel> InschrijvingVoorstellen(IList <int> gelieerdePersoonIds) { // TODO (#195): van onderstaande logica moet wel wat verhuizen naar de workers! var gelieerdePersonen = _gelieerdePersonenRepo.ByIDs(gelieerdePersoonIds); if (!_autorisatieMgr.IsGav(gelieerdePersonen) || gelieerdePersoonIds.Count != gelieerdePersonen.Count) { throw FaultExceptionHelper.GeenGav(); } // We gaan ervan uit dat alle gelieerde personen op dit moment tot dezelfde groep behoren. // Maar in de toekomst is dat misschien niet meer zo. Dus laten we onderstaande constructie // maar staan. var groepen = (from gp in gelieerdePersonen select gp.Groep).Distinct().ToList(); var resultaat = new List <InschrijvingsVoorstel>(); foreach (var g in groepen) { var gwj = _groepenMgr.HuidigWerkJaar(g); foreach (var gp in gelieerdePersonen.Where(gelp => gelp.Groep.ID == g.ID).OrderByDescending(gp => gp.GebDatumMetChiroLeefTijd)) { var inschrijvingsVoorstel = new InschrijvingsVoorstel { GelieerdePersoonID = gp.ID, VolledigeNaam = gp.Persoon.VolledigeNaam }; try { var voorstel = _ledenMgr.InschrijvingVoorstellen(gp, gwj, true); var validator = new LidVoorstelValidator(); inschrijvingsVoorstel.AfdelingsJaarIrrelevant = voorstel.AfdelingsJarenIrrelevant; inschrijvingsVoorstel.AfdelingsJaarIDs = voorstel.AfdelingsJarenIrrelevant ? new int[0] : voorstel.AfdelingsJaren.Select(aj => aj.ID) .ToArray(); inschrijvingsVoorstel.LeidingMaken = voorstel.LeidingMaken; inschrijvingsVoorstel.VolledigeNaam = gp.Persoon.VolledigeNaam; inschrijvingsVoorstel.FoutNummer = validator.FoutNummer(voorstel); } catch (FoutNummerException ex) { inschrijvingsVoorstel.FoutNummer = ex.FoutNummer; } if (inschrijvingsVoorstel.FoutNummer == null) { // Gelukte inschrijvingen achteraan toevoegen aan lijst. resultaat.Add(inschrijvingsVoorstel); } else { // Foutberichten vooraan de feedback. resultaat.Insert(0, inschrijvingsVoorstel); } } } return(resultaat); }