public void JaarOvergangUitvoerenTest() { // ARRANGE // Vrij veel voorbereiding voor een vrij flauwe test. var ribbeloff = new OfficieleAfdeling { ID = 1, LeefTijdTot = 7, LeefTijdVan = 6, Naam = "Ribbel" }; var groep = new ChiroGroep { ID = 10, GroepsWerkJaar = new List <GroepsWerkJaar>() }; var gwj = new GroepsWerkJaar { WerkJaar = 2010, Groep = groep }; groep.GroepsWerkJaar.Add(gwj); var afdjaar1 = new AfdelingsJaar { ID = 1, GeboorteJaarVan = 2003, GeboorteJaarTot = 2004, OfficieleAfdeling = ribbeloff }; var afd1 = new Afdeling { ID = 2, AfdelingsJaar = new List <AfdelingsJaar> { afdjaar1 }, ChiroGroep = groep }; afdjaar1.Afdeling = afd1; groep.Afdeling.Add(afd1); gwj.AfdelingsJaar.Add(afdjaar1); var newafdjaar = new AfdelingDetail { AfdelingID = afd1.ID, AfdelingsJaarID = afdjaar1.ID, GeboorteJaarVan = DateTime.Today.Year - 10, GeboorteJaarTot = DateTime.Today.Year - 8, OfficieleAfdelingID = ribbeloff.ID, Geslacht = GeslachtsType.Gemengd }; var officieleAfdelingenRepo = new DummyRepo <OfficieleAfdeling>(new[] { ribbeloff }); // ACT var target = Factory.Maak <JaarOvergangManager>(); var teActiveren = new List <AfdelingsJaarDetail> { newafdjaar }; target.JaarOvergangUitvoeren(teActiveren, groep, officieleAfdelingenRepo); // ASSERT Assert.AreEqual(groep.GroepsWerkJaar.Count, 2); Assert.AreEqual(groep.GroepsWerkJaar.OrderByDescending(gwjr => gwjr.WerkJaar).First().AfdelingsJaar.Count, 1); }
public void AfdelingsJarenVoorstellenMvxGemengdTest() { // -- Arrange -- // Testsituatie opzetten var ribbels = new OfficieleAfdeling { ID = (int)NationaleAfdeling.Ribbels, LeefTijdVan = 6, LeefTijdTot = 7 }; // Een Chirogroep met een oud groepswerkjaar. var groep = new ChiroGroep(); var sloebers = new Afdeling { ID = 1, ChiroGroep = groep }; var oudGroepsWerkJaar = new GroepsWerkJaar { Groep = groep }; groep.GroepsWerkJaar.Add(oudGroepsWerkJaar); oudGroepsWerkJaar.AfdelingsJaar.Add(new AfdelingsJaar { Afdeling = sloebers, GroepsWerkJaar = oudGroepsWerkJaar, OfficieleAfdeling = ribbels, // Geslacht uit de oude doos: Geslacht = (GeslachtsType.Man | GeslachtsType.Vrouw) }); // Dit jaar willen we een groep met 1 afdeling. var afdelingen = new List <Afdeling> { sloebers }; const int NIEUW_WERKJAAR = 2012; // Jaartal is eigenlijk irrelevant voor deze test. // -- Act -- var target = Factory.Maak <GroepsWerkJarenManager>(); var actual = target.AfdelingsJarenVoorstellen(groep, afdelingen, NIEUW_WERKJAAR, ribbels); var afdelingsJaar = actual.FirstOrDefault(); // -- Assert -- Assert.IsNotNull(afdelingsJaar); Assert.AreEqual(afdelingsJaar.Geslacht, GeslachtsType.Gemengd); }
public void AfdelingsJarenVoorstellenOfficieleAfdelingTest() { // -- Arrange -- // Testsituatie opzetten var ribbels = new OfficieleAfdeling { ID = (int)NationaleAfdeling.Ribbels, LeefTijdVan = 6, LeefTijdTot = 7 }; // Een Chirogroep met een oud groepswerkjaar. Zonder afdelingen, why not. var groep = new ChiroGroep { GroepsWerkJaar = new List <GroepsWerkJaar> { new GroepsWerkJaar() } }; // Dit jaar willen we een groep met 1 afdeling. var afdelingen = new List <Afdeling> { new Afdeling { ID = 1, ChiroGroep = groep } }; const int NIEUW_WERKJAAR = 2012; // Jaartal is eigenlijk irrelevant voor deze test. // -- Act -- var target = Factory.Maak <GroepsWerkJarenManager>(); var actual = target.AfdelingsJarenVoorstellen(groep, afdelingen, NIEUW_WERKJAAR, ribbels); var afdelingsJaar = actual.FirstOrDefault(); // -- Assert -- Assert.IsNotNull(afdelingsJaar); Assert.IsNotNull(afdelingsJaar.OfficieleAfdeling); }
public void AfdelingGroepsWerkJaarMismatch() { var groep1 = new ChiroGroep { ID = 1 }; var groep2 = new ChiroGroep { ID = 2 }; var gwj = new GroepsWerkJaar { ID = 1, Groep = groep1 }; var a = new Afdeling { ChiroGroep = groep2 }; var oa = new OfficieleAfdeling(); var target = Factory.Maak <IAfdelingsJaarManager>(); var ex = Assert.Throws <FoutNummerException>(() => target.Aanmaken(a, oa, gwj, 2001, 2002, GeslachtsType.Gemengd)); }
/// <summary> /// Maakt een afdelingsjaar voor een groep en een afdeling, persisteert niet. /// </summary> /// <param name="a"> /// Afdeling voor nieuw afdelingsjaar /// </param> /// <param name="oa"> /// Te koppelen officiële afdeling /// </param> /// <param name="gwj"> /// Groepswerkjaar (koppelt de afdeling aan een groep en een werkJaar) /// </param> /// <param name="geboorteJaarBegin"> /// Geboortejaar van /// </param> /// <param name="geboorteJaarEind"> /// Geboortejaar tot /// </param> /// <param name="geslacht"> /// Bepaalt of de afdeling een jongensafdeling, meisjesafdeling of /// gemengde afdeling is. /// </param> /// <returns> /// Het aangemaakte afdelingsjaar /// </returns> public AfdelingsJaar Aanmaken( Afdeling a, OfficieleAfdeling oa, GroepsWerkJaar gwj, int geboorteJaarBegin, int geboorteJaarEind, GeslachtsType geslacht) { var afdelingsJaar = new AfdelingsJaar { OfficieleAfdeling = oa, Afdeling = a, GroepsWerkJaar = gwj, GeboorteJaarVan = geboorteJaarBegin, GeboorteJaarTot = geboorteJaarEind, Geslacht = geslacht }; // TODO check if no conflicts with existing afdelingsjaar a.AfdelingsJaar.Add(afdelingsJaar); oa.AfdelingsJaar.Add(afdelingsJaar); gwj.AfdelingsJaar.Add(afdelingsJaar); FoutNummer?afdelingsJaarFout = new AfdelingsJaarValidator().FoutNummer(afdelingsJaar); if (afdelingsJaarFout == FoutNummer.OngeldigeGeboorteJarenVoorAfdeling) { throw new FoutNummerException(afdelingsJaarFout.Value, Resources.OngeldigeGeboorteJarenVoorAfdeling); } if (afdelingsJaarFout != null) { throw new FoutNummerException(afdelingsJaarFout.Value, Resources.AfdelingsJaarOngeldig); } return(afdelingsJaar); }
/// <summary> /// Stelt afdelingsjaren voor voor de gegeven <paramref name="groep"/> en <paramref name="afdelingen"/> /// in het werkjaar <paramref name="nieuwWerkJaar"/> - <paramref name="nieuwWerkJaar"/>+1. /// </summary> /// <param name="groep">Groep waarvoor afdelingsjaren moeten worden voorgesteld, met daaraan gekoppeld /// het huidige groepswerkjaar, de huidige afdelingsjaren, en alle beschikbare afdelingen.</param> /// <param name="afdelingen">Afdelingen waarvoor afdelingsjaren moeten worden voorgesteld</param> /// <param name="nieuwWerkJaar">Bepaalt het werkjaar waarvoor de afdelingsjaren voorgesteld moeten worden.</param> /// <param name="standaardOfficieleAfdeling">Officiele afdeling die standaard voorgesteld moet worden als de /// afdeling het laatste afdelingsjaar niet in gebruik was.</param> /// <returns>Lijstje afdelingsjaren</returns> public IList <AfdelingsJaar> AfdelingsJarenVoorstellen(ChiroGroep groep, IList <Afdeling> afdelingen, int nieuwWerkJaar, OfficieleAfdeling standaardOfficieleAfdeling) { // TODO: als een afdeling vorig jaar niet bestond, dan maken we een afdelingsjaar op basis van de meegegeven // standaardOfficieleAfdeling. Dat kan beter. We zouden in eerste instantie kunnen nakijken of de afdeling // in een vroeger afdelingsjaar gebruikt was. En in tweede instantie zouden we kunnen gokken op basis van // de naam. if (afdelingen.FirstOrDefault(afd => afd.ChiroGroep.ID != groep.ID) != null) { throw new FoutNummerException(FoutNummer.AfdelingNietVanGroep, Resources.AfdelingNietVanGroep); } var recentsteWerkjaar = groep.GroepsWerkJaar.OrderByDescending(gwj => gwj.WerkJaar).FirstOrDefault(); if (recentsteWerkjaar == null) { // Eigenlijk gaan we ervan uit dat elke groep al wel een afdelingsjaar heeft. Maar // moest het toch niet zo zijn, dan geven we gauw een domme suggestie terug return((from afd in afdelingen select new AfdelingsJaar { Afdeling = afd, OfficieleAfdeling = standaardOfficieleAfdeling, Geslacht = GeslachtsType.Gemengd }).ToList()); } var werkJarenVerschil = nieuwWerkJaar - recentsteWerkjaar.WerkJaar; // We halen de afdelingsjaren van het huidige (oude) werkjaar op, zodat we op basis daarvan geboortejaren // en geslacht voor de nieuwe afdelingsjaren in het nieuwe werkjaar kunnen voorstellen. var huidigeAfdelingsJaren = recentsteWerkjaar.AfdelingsJaar; // Creeer een voorstel voor de nieuwe afdelingsjaren var nieuweAfdelingsJaren = new List <AfdelingsJaar>(); foreach (var afdeling in afdelingen) { // geboortejaren en geslacht gewoon default values, passen we zo nodig // straks nog aan. var afdelingsJaar = new AfdelingsJaar { Afdeling = afdeling, GeboorteJaarVan = 0, GeboorteJaarTot = 0, Geslacht = GeslachtsType.Gemengd }; nieuweAfdelingsJaren.Add(afdelingsJaar); // Als de afdeling dit jaar al actief was, kunnen we de details automatisch bepalen var bestaandAfdelingsJaar = (from aj in huidigeAfdelingsJaren where aj.Afdeling.ID == afdeling.ID select aj).FirstOrDefault(); if (bestaandAfdelingsJaar != null) { afdelingsJaar.OfficieleAfdeling = bestaandAfdelingsJaar.OfficieleAfdeling; afdelingsJaar.Geslacht = bestaandAfdelingsJaar.Geslacht; afdelingsJaar.GeboorteJaarTot = bestaandAfdelingsJaar.GeboorteJaarTot + werkJarenVerschil; afdelingsJaar.GeboorteJaarVan = bestaandAfdelingsJaar.GeboorteJaarVan + werkJarenVerschil; // 'Gemengd' werd geherdefinieerd sinds het gap het derde geslacht ondersteunt (#3814). // De 'oude' interpretatie van gemengd moet nu vertaald worden naar M|V|X. (zie #3849). if (afdelingsJaar.Geslacht == (GeslachtsType.Man | GeslachtsType.Vrouw)) { afdelingsJaar.Geslacht = GeslachtsType.Gemengd; } } else { // Als officiële afdeling, geven we ribbels, om te vermijden dat de groepen te snel // 'speciaal' zouden kiezen. // TODO: Als een afdeling vorig jaar niet gebruikt werd, zou het niet slecht zijn moesten // we opgezocht hebben of ze in een erder verleden wel gebruikt is geweest. afdelingsJaar.OfficieleAfdeling = standaardOfficieleAfdeling; afdelingsJaar.Geslacht = GeslachtsType.Gemengd; afdelingsJaar.GeboorteJaarTot = nieuwWerkJaar - standaardOfficieleAfdeling.LeefTijdVan; afdelingsJaar.GeboorteJaarVan = nieuwWerkJaar - standaardOfficieleAfdeling.LeefTijdTot; } } // Sorteer de afdelingsjaren: eerst die zonder geboortejaren, dan van jong naar oud var resultaat = (from a in nieuweAfdelingsJaren orderby a.GeboorteJaarTot descending orderby a.GeboorteJaarTot == 0 descending select a).ToArray(); return(resultaat); }