public AansluitingModule(IGapUpdater gapUpdater) { // gapUpdater, aangeleverd door de dependency injection container, is disposable, // en moet achteraf vrijgegeven worden. Dat doen we in Dispose() van deze module. _gapUpdater = gapUpdater; // You can test this with curl: // curl -X PUT -d AdNummer=3 -d RecentsteWerkJaar=2015 localhost:50673/aansluiting Put["/aansluiting"] = _ => { // AdNummer is hier de key. AansluitingModel model = this.Bind(); try { _gapUpdater.Bijwerken(model); } catch (FoutNummerException ex) { if (ex.FoutNummer == FoutNummer.PersoonNietGevonden) { return(HttpStatusCode.NotFound); } throw; } return(HttpStatusCode.OK); }; }
public void AansluitingBijwerkenOnbekendLid() { // In principe kun je discussiëren over het geval dat de groep en de persoon wel // bestaan, maar het lid van het membership niet. Maar deze situatie doet zich // normaal gezien niet voor. // // De aansluitingsinformatie is voor het GAP enkel relevant om te weten of het // een membership moet aanmaken voor een lid. Voor onbestaande leden is het dus // niet erg dat die informatie verloren gaat. Te meer omdat CiviSync vermijdt dat // iemand dubbel aangesloten wordt, als het toch ergens mis gaat. // ARRANGE var model = new AansluitingModel { AdNummer = 1, StamNummer = "BLA/0000", RecentsteWerkJaar = 2015 }; // Dummy ledenrepository maken, die zeker geen leden vindt. var repositoryProviderMock = new Mock <IRepositoryProvider>(); repositoryProviderMock.Setup(src => src.RepositoryGet <Lid>()) .Returns(new DummyRepo <Lid>(new List <Lid>())); Factory.InstantieRegistreren(repositoryProviderMock.Object); // ACT var target = Factory.Maak <GapUpdater>(); target.Bijwerken(model); // ASSERT // We zijn blij dat we hier raken zonder exceptions. Assert.IsTrue(true); }
/// <summary> /// Werkt het werkjaar van laatste aansluiting bij van de persoon met /// AD-nummer gegeven in het model. /// </summary> /// <param name="model">Gegevens over bij te werken werkjaar.</param> public void Bijwerken(AansluitingModel model) { var lid = (from l in _ledenRepo.Select() where l.GelieerdePersoon.Persoon.AdNummer == model.AdNummer && l.GroepsWerkJaar.Groep.Code == model.StamNummer && l.GroepsWerkJaar.WerkJaar == model.RecentsteWerkJaar select l).FirstOrDefault(); if (lid == null) { Console.WriteLine( "Lid niet gevonden. {1} AD{0} {2}. Aansluiting genegeerd. Zie #4526", model.AdNummer, model.StamNummer, model.RecentsteWerkJaar); return; } if (lid.IsAangesloten) { Console.WriteLine( "{1} (ID {2}) was al aangesloten bij {3} in {0}. ", model.RecentsteWerkJaar, lid.GelieerdePersoon.Persoon.VolledigeNaam, lid.GelieerdePersoon.Persoon.ID, model.StamNummer); } lid.IsAangesloten = true; _ledenRepo.SaveChanges(); Console.WriteLine("Aansluiting in {0} geregistreerd voor {1} (ID {2}) bij {3}.", model.RecentsteWerkJaar, lid.GelieerdePersoon.Persoon.VolledigeNaam, lid.GelieerdePersoon.Persoon.ID, model.StamNummer); }