/// <summary>
        /// Nagaan of alle vereisten voldaan zijn om de opgegeven gelieerde personen allemaal in te schrijven
        /// voor de opgegeven uitstap.
        /// </summary>
        /// <param name="uitstap">De uitstap waar we mensen voor willen inschrijven</param>
        /// <param name="gelieerdePersonen">De mensen die we willen inschrijven</param>
        /// <exception cref="FoutNummerException"></exception>
        /// <returns><c>True</c> als alle voorwaarden voldaan zijn, anders <c>false</c></returns>
        public bool InschrijvingenValideren(Uitstap uitstap, List <GelieerdePersoon> gelieerdePersonen)
        {
            // De gelieerde personen moeten aan een groep gekoppeld zijn.
            var groepen = (from gp in gelieerdePersonen select gp.Groep).Distinct().ToList();

            if (!groepen.Any())
            {
                return(false);
            }

            if (uitstap.GroepsWerkJaar == null)
            {
                return(false);
            }

            if (uitstap.GroepsWerkJaar.Groep == null)
            {
                return(false);
            }

            // Als er meer dan 1 groep is, dan is er minstens een groep verschillend van de groep
            // van de uitstap (duivenkotenprincipe));););
            if (groepen.Count() > 1 || groepen.First().ID != uitstap.GroepsWerkJaar.Groep.ID)
            {
                throw new FoutNummerException(
                          FoutNummer.UitstapNietVanGroep,
                          Resources.FoutieveGroepUitstap);
            }

            return(true);
        }
예제 #2
0
        public void BewarenMetAdresTest()
        {
            // ARRANGE

            var kipSyncMock = new Mock <ISyncPersoonService>();

            kipSyncMock.Setup(src => src.BivakPlaatsBewaren(It.IsAny <int>(), It.IsAny <string>(), It.IsAny <Adres>())).Verifiable();
            Factory.InstantieRegistreren(kipSyncMock.Object);

            var uitstap = new Uitstap
            {
                IsBivak = true,
                Plaats  = new Plaats {
                    Adres = new BuitenLandsAdres {
                        Land = new Land()
                    }
                },
                GroepsWerkJaar = new GroepsWerkJaar {
                    Groep = new ChiroGroep()
                }
            };

            // ACT

            var target = Factory.Maak <BivakSync>();

            target.Bewaren(uitstap);

            // ASSERT

            kipSyncMock.VerifyAll();
        }
예제 #3
0
        public void BewarenContactZonderAdTest()
        {
            // ARRANGE

            var kipSyncMock = new Mock <ISyncPersoonService>();

            kipSyncMock.Setup(src => src.BivakContactBewarenAdOnbekend(It.IsAny <int>(), It.IsAny <PersoonDetails>())).Verifiable();
            Factory.InstantieRegistreren(kipSyncMock.Object);

            var uitstap = new Uitstap
            {
                IsBivak        = true,
                GroepsWerkJaar = new GroepsWerkJaar {
                    Groep = new ChiroGroep()
                },
                ContactDeelnemer =
                    new Deelnemer {
                    GelieerdePersoon = new GelieerdePersoon {
                        Persoon = new Persoon {
                            InSync = true
                        }
                    }
                }
            };

            // ACT

            var target = Factory.Maak <BivakSync>();

            target.Bewaren(uitstap);

            // ASSERT

            kipSyncMock.VerifyAll();
        }
예제 #4
0
 public void Check(Uitstap g)
 {
     if (g == null || !_autorisatieMgr.IsGav(g))
     {
         throw FaultExceptionHelper.GeenGav();
     }
 }
예제 #5
0
        public void PlaatsOpOnbekendAdresBewarenTest()
        {
            // ARRANGE

            var groep = new ChiroGroep {
                ID = 3
            };
            var bivak = new Uitstap {
                ID = 1, GroepsWerkJaar = new GroepsWerkJaar {
                    Groep = groep
                }
            };
            var land = new Land {
                Naam = "Nederland"
            };

            // dependency injection voor data access

            var dummyRepositoryProvider = new Mock <IRepositoryProvider>();

            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Uitstap>())
            .Returns(new DummyRepo <Uitstap>(new List <Uitstap> {
                bivak
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Plaats>())
            .Returns(new DummyRepo <Plaats>(new List <Plaats>()));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Adres>())
            .Returns(new DummyRepo <Adres>(new List <Adres>()));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Land>())
            .Returns(new DummyRepo <Land>(new List <Land> {
                land
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <WoonPlaats>())
            .Returns(new DummyRepo <WoonPlaats>(new List <WoonPlaats>()));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <StraatNaam>())
            .Returns(new DummyRepo <StraatNaam>(new List <StraatNaam>()));
            Factory.InstantieRegistreren(dummyRepositoryProvider.Object);

            // ACT

            var target = Factory.Maak <UitstappenService>();

            target.PlaatsBewaren(bivak.ID, "Warme Bivakplaats",
                                 new AdresInfo
            {
                StraatNaamNaam = "Zonnestraat",
                HuisNr         = 8,
                PostNr         = 9876,
                PostCode       = "PF",
                WoonPlaatsNaam = "Warmegem",
                LandNaam       = "Nederland"
            });

            // ASSERT

            Assert.IsInstanceOf <BuitenLandsAdres>(bivak.Plaats.Adres);
        }
예제 #6
0
        public void PlaatsBewarenTest()
        {
            // ARRANGE
            var groepsWerkJaar = new GroepsWerkJaar
            {
                Groep = new ChiroGroep {
                    ID = 1
                },
            };
            var bivak = new Uitstap {
                ID = 2, IsBivak = true, GroepsWerkJaar = groepsWerkJaar
            };

            groepsWerkJaar.Uitstap.Add(bivak);
            var land = new Land()
            {
                Naam = "Nederland"
            };

            // mock synchronisatie kipadmin
            var bivakSyncMock = new Mock <IBivakSync>();

            bivakSyncMock.Setup(src => src.Bewaren(It.IsAny <Uitstap>())).Verifiable();
            Factory.InstantieRegistreren(bivakSyncMock.Object);

            // mock data acces
            var repositoryProviderMock = new Mock <IRepositoryProvider>();

            repositoryProviderMock.Setup(src => src.RepositoryGet <Uitstap>())
            .Returns(new DummyRepo <Uitstap>(new List <Uitstap> {
                bivak
            }));
            repositoryProviderMock.Setup(src => src.RepositoryGet <Adres>())
            .Returns(new DummyRepo <Adres>(new List <Adres>()));
            repositoryProviderMock.Setup(src => src.RepositoryGet <Land>())
            .Returns(new DummyRepo <Land>(new List <Land> {
                land
            }));
            repositoryProviderMock.Setup(src => src.RepositoryGet <WoonPlaats>())
            .Returns(new DummyRepo <WoonPlaats>(new List <WoonPlaats>()));
            repositoryProviderMock.Setup(src => src.RepositoryGet <StraatNaam>())
            .Returns(new DummyRepo <StraatNaam>(new List <StraatNaam>()));
            Factory.InstantieRegistreren(repositoryProviderMock.Object);

            // ACT
            var target = Factory.Maak <UitstappenService>();

            target.PlaatsBewaren(bivak.ID, "Onze kampplaats", new AdresInfo {
                LandNaam = land.Naam
            });

            // ASSERT
            bivakSyncMock.Verify(src => src.Bewaren(It.IsAny <Uitstap>()), Times.AtLeastOnce());
        }
예제 #7
0
        public void ContactInstellenSyncTest()
        {
            // ARRANGE
            var groepsWerkJaar = new GroepsWerkJaar
            {
                Groep = new ChiroGroep {
                    ID = 1
                },
            };
            var bivak = new Uitstap
            {
                ID             = 2,
                IsBivak        = true,
                GroepsWerkJaar = groepsWerkJaar,
            };
            var deelnemer = new Deelnemer
            {
                ID               = 3,
                Uitstap          = bivak,
                GelieerdePersoon = new GelieerdePersoon {
                    Persoon = new Persoon()
                }
            };

            groepsWerkJaar.Uitstap.Add(bivak);

            // mock synchronisatie voor kipadmin
            var bivakSyncMock = new Mock <IBivakSync>();

            bivakSyncMock.Setup(src => src.Bewaren(bivak)).Verifiable();
            Factory.InstantieRegistreren(bivakSyncMock.Object);

            // mock data acces
            var repositoryProviderMock = new Mock <IRepositoryProvider>();

            repositoryProviderMock.Setup(src => src.RepositoryGet <Deelnemer>())
            .Returns(new DummyRepo <Deelnemer>(new List <Deelnemer> {
                deelnemer
            }));
            Factory.InstantieRegistreren(repositoryProviderMock.Object);

            // ACT

            var target = Factory.Maak <UitstappenService>();

            target.ContactInstellen(deelnemer.ID);

            // ASSERT

            Assert.IsTrue(deelnemer.GelieerdePersoon.Persoon.InSync);
            bivakSyncMock.Verify(src => src.Bewaren(bivak), Times.AtLeastOnce());
        }
        /// <summary>
        /// Bepaalt de status van de gegeven <paramref name="uitstap"/>
        /// </summary>
        /// <param name="uitstap">Uitstap, waarvan status bepaald moet worden</param>
        /// <returns>De status van de gegeven <paramref name="uitstap"/></returns>
        public BivakAangifteStatus StatusBepalen(Uitstap uitstap)
        {
            var resultaat = BivakAangifteStatus.Ok;

            if (uitstap.Plaats == null)
            {
                resultaat |= BivakAangifteStatus.PlaatsOntbreekt;
            }
            if (uitstap.ContactDeelnemer == null)
            {
                resultaat |= BivakAangifteStatus.ContactOntbreekt;
            }

            return(resultaat);
        }
예제 #9
0
        public void ContactInstellenSaveTest()
        {
            // ARRANGE
            var groepsWerkJaar = new GroepsWerkJaar
            {
                Groep = new ChiroGroep {
                    ID = 1
                },
            };
            var bivak = new Uitstap
            {
                ID             = 2,
                IsBivak        = true,
                GroepsWerkJaar = groepsWerkJaar,
            };
            var deelnemer = new Deelnemer
            {
                ID               = 3,
                Uitstap          = bivak,
                GelieerdePersoon = new GelieerdePersoon {
                    Persoon = new Persoon()
                }
            };

            groepsWerkJaar.Uitstap.Add(bivak);

            // mock data acces
            var deelnemersRepoMock = new DummyRepo <Deelnemer>(new List <Deelnemer> {
                deelnemer
            });
            var repositoryProviderMock = new Mock <IRepositoryProvider>();

            repositoryProviderMock.Setup(src => src.RepositoryGet <Deelnemer>())
            .Returns(deelnemersRepoMock);
            Factory.InstantieRegistreren(repositoryProviderMock.Object);

            // ACT

            var target = Factory.Maak <UitstappenService>();

            target.ContactInstellen(deelnemer.ID);

            // ASSERT

            Assert.IsFalse(deelnemersRepoMock.SaveCount == 0);
        }
예제 #10
0
        public void BivakVerwijderenAlsGeenBivakMeerTest()
        {
            // ARRANGE
            var groepsWerkJaar = new GroepsWerkJaar
            {
                Groep = new ChiroGroep {
                    ID = 1
                },
            };
            var bivak = new Uitstap {
                ID = 2, IsBivak = true, GroepsWerkJaar = groepsWerkJaar
            };

            groepsWerkJaar.Uitstap.Add(bivak);

            var uitstapInfo = new UitstapInfo {
                ID = bivak.ID, IsBivak = false
            };

            // mock synchronisatie voor kipadmin
            var bivakSyncMock = new Mock <IBivakSync>();

            bivakSyncMock.Setup(src => src.Verwijderen(bivak.ID)).Verifiable();
            Factory.InstantieRegistreren(bivakSyncMock.Object);

            // mock data acces
            var repositoryProviderMock = new Mock <IRepositoryProvider>();

            repositoryProviderMock.Setup(src => src.RepositoryGet <GroepsWerkJaar>())
            .Returns(new DummyRepo <GroepsWerkJaar>(new List <GroepsWerkJaar> {
                groepsWerkJaar
            }));
            Factory.InstantieRegistreren(repositoryProviderMock.Object);

            // ACT

            var target = Factory.Maak <UitstappenService>();

            target.Bewaren(groepsWerkJaar.Groep.ID, uitstapInfo);

            // ASSERT

            bivakSyncMock.Verify(src => src.Verwijderen(bivak.ID), Times.AtLeastOnce());
        }
예제 #11
0
        /// <summary>
        /// Bewaart de uitstap <paramref name="uitstap"/> in Kipadmin als bivak.  Met contactpersoon
        /// en plaats.
        /// </summary>
        /// <param name="uitstap">Te bewaren uitstap</param>
        public void Bewaren(Uitstap uitstap)
        {
            // TODO (#1057): Verfijnen van sync bivakgegevens van GAP naar Kipadmin/CiviCRM

            var teSyncen = MappingHelper.Map <Uitstap, Bivak>(uitstap);

            ServiceHelper.CallService <ISyncPersoonService>(svc => svc.BivakBewaren(teSyncen));

            var contactPersoon = uitstap.ContactDeelnemer != null ? uitstap.ContactDeelnemer.GelieerdePersoon : null;

            if (uitstap.Plaats != null && uitstap.Plaats.Adres != null)
            {
                // Als we het syncen van het adres ooit lostrekken van het syncen van het bivak (#1057), moeten we
                // eraan denken dat de naam van het bivak in Civi moet veranderen als het bivakadres verandert (#5030).
                ServiceHelper.CallService <ISyncPersoonService>(
                    svc =>
                    svc.BivakPlaatsBewaren(uitstap.ID, uitstap.Plaats.Naam,
                                           MappingHelper.Map <Adres, Kip.ServiceContracts.DataContracts.Adres>(uitstap.Plaats.Adres)));
            }

            if (contactPersoon != null)
            {
                Debug.Assert(contactPersoon.Persoon.InSync);
                if (contactPersoon.Persoon.AdNummer != null)
                {
                    // AD-nummer gekend: gewoon koppelen via AD-nummer
                    ServiceHelper.CallService <ISyncPersoonService>(svc => svc.BivakContactBewaren(
                                                                        uitstap.ID,
                                                                        (int)contactPersoon.Persoon.AdNummer));
                }
                else
                {
                    ServiceHelper.CallService <ISyncPersoonService>(
                        svc =>
                        svc.BivakContactBewarenAdOnbekend(uitstap.ID,
                                                          MappingHelper.Map <GelieerdePersoon, PersoonDetails>(contactPersoon)));
                }
            }
        }
 public bool IsGav(Uitstap uitstap)
 {
     return(IsGav(uitstap.GroepsWerkJaar.Groep));
 }
예제 #13
0
 public bool IsGav(Uitstap gelieerdePersoon)
 {
     return(true);
 }
 public bool IsGav(Uitstap gelieerdePersoon)
 {
     throw new NotImplementedException();
 }
예제 #15
0
 private static string BivakNaam(Uitstap src)
 {
     return(String.Format("Bivak {0} - {1}, {2} {3}", src.GroepsWerkJaar.Groep.Code, src.GroepsWerkJaar.Groep.Naam,
                          src.Plaats == null ? String.Empty : WoonPlaats(src.Plaats.Adres), src.DatumTot.Year));
 }
예제 #16
0
        public void PlaatsOpGekendAdresBewarenTest()
        {
            // ARRANGE

            var groep = new ChiroGroep {
                ID = 3
            };
            var bivak = new Uitstap {
                ID = 1, GroepsWerkJaar = new GroepsWerkJaar {
                    Groep = groep
                }
            };
            var adres = new BuitenLandsAdres
            {
                Straat     = "Vorststraat",
                HuisNr     = 3,
                PostCode   = "BR 1234",
                WoonPlaats = "Killegem",
                Land       = new Land {
                    Naam = "Nederland"
                }
            };

            // dependency injection voor data access

            var dummyRepositoryProvider = new Mock <IRepositoryProvider>();

            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Uitstap>())
            .Returns(new DummyRepo <Uitstap>(new List <Uitstap> {
                bivak
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Plaats>())
            .Returns(new DummyRepo <Plaats>(new List <Plaats>()));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Adres>())
            .Returns(new DummyRepo <Adres>(new List <Adres> {
                adres
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Land>())
            .Returns(new DummyRepo <Land>(new List <Land> {
                adres.Land
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <WoonPlaats>())
            .Returns(new DummyRepo <WoonPlaats>(new List <WoonPlaats>()));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <StraatNaam>())
            .Returns(new DummyRepo <StraatNaam>(new List <StraatNaam>()));
            Factory.InstantieRegistreren(dummyRepositoryProvider.Object);

            // ACT

            var target = Factory.Maak <UitstappenService>();

            target.PlaatsBewaren(bivak.ID, "Warme Bivakplaats",
                                 new AdresInfo
            {
                StraatNaamNaam = adres.Straat,
                HuisNr         = adres.HuisNr,
                PostCode       = adres.PostCode,
                WoonPlaatsNaam = adres.WoonPlaats,
                LandNaam       = adres.Land.Naam
            });

            // ASSERT

            Assert.AreEqual(bivak.Plaats.Adres.ID, adres.ID);
        }
예제 #17
0
 public void Bewaren(Uitstap uitstap)
 {
 }
예제 #18
0
        public void PlaatsVervangenTest()
        {
            // ARRANGE

            var groep = new ChiroGroep {
                ID = 3
            };
            var bivak = new Uitstap {
                ID = 1, GroepsWerkJaar = new GroepsWerkJaar {
                    Groep = groep
                }
            };
            var adres = new BuitenLandsAdres
            {
                Straat     = "Vorststraat",
                HuisNr     = 3,
                PostCode   = "BR 1234",
                WoonPlaats = "Killegem",
                Land       = new Land {
                    Naam = "Nederland"
                }
            };
            var plaats = new Plaats {
                ID = 2, Naam = "Coole bivakplaats", Adres = adres, Groep = groep
            };

            bivak.Plaats = plaats; // Bivak heeft al een plaats

            // dependency injection voor data access

            var dummyRepositoryProvider = new Mock <IRepositoryProvider>();

            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Uitstap>())
            .Returns(new DummyRepo <Uitstap>(new List <Uitstap> {
                bivak
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Plaats>())
            .Returns(new DummyRepo <Plaats>(new List <Plaats> {
                plaats
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Adres>())
            .Returns(new DummyRepo <Adres>(new List <Adres> {
                adres
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <Land>())
            .Returns(new DummyRepo <Land>(new List <Land> {
                adres.Land
            }));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <WoonPlaats>())
            .Returns(new DummyRepo <WoonPlaats>(new List <WoonPlaats>()));
            dummyRepositoryProvider.Setup(src => src.RepositoryGet <StraatNaam>())
            .Returns(new DummyRepo <StraatNaam>(new List <StraatNaam>()));

            Factory.InstantieRegistreren(dummyRepositoryProvider.Object);

            // ACT

            var target = Factory.Maak <UitstappenService>();

            target.PlaatsBewaren(bivak.ID, "Warme Bivakplaats",
                                 new AdresInfo
            {
                StraatNaamNaam = "Zonnestraat",
                HuisNr         = 8,
                PostNr         = 9876,
                PostCode       = "PF",
                WoonPlaatsNaam = "Warmegem",
                LandNaam       = "Nederland"
            });

            // ASSERT

            Assert.AreNotEqual(bivak.Plaats.ID, plaats.ID); // is de plaats wel veranderd?
        }