/// <summary> /// Registreert een membership in de Chirocivi voor het gegeven <paramref name="lid"/> /// </summary> /// <param name="lid">Lid waarvoor membership geregistreerd moet worden</param> public void MembershipRegistreren(Lid lid) { var persoon = lid.GelieerdePersoon.Persoon; int werkJaar = lid.GroepsWerkJaar.WerkJaar; if (persoon.AdNummer != null) { var gedoe = new MembershipGedoe { Gratis = _ledenManager.GratisAansluiting(lid), MetLoonVerlies = _groepsWerkJarenManager.IsVerzekerd(lid, Verzekering.LoonVerlies), StamNummer = _ledenManager.StamNummer(lid) }; ServiceHelper.CallService <ISyncPersoonService>( svc => svc.MembershipBewaren(persoon.AdNummer.Value, werkJaar, gedoe)); } else { var gelieerdePersoon = lid.GelieerdePersoon; var details = MappingHelper.Map <GelieerdePersoon, PersoonDetails>(gelieerdePersoon); bool isVerzekerd = _groepsWerkJarenManager.IsVerzekerd(lid, Verzekering.LoonVerlies); var gedoe = new MembershipGedoe { Gratis = _ledenManager.GratisAansluiting(lid), MetLoonVerlies = isVerzekerd, StamNummer = _ledenManager.StamNummer(lid) }; ServiceHelper.CallService <ISyncPersoonService>( svc => svc.MembershipNieuwePersoonBewaren(details, werkJaar, gedoe)); } }
/// <summary> /// Zet de gegeven <paramref name="persoonsVerzekering"/> over naar Kipadmin. /// </summary> /// <param name="persoonsVerzekering">Over te zetten persoonsverzekering</param> /// <param name="gwj">Bepaalt werkJaar en groep die factuur zal krijgen</param> public void Bewaren(PersoonsVerzekering persoonsVerzekering, GroepsWerkJaar gwj) { Debug.Assert(persoonsVerzekering.Persoon.InSync); if (persoonsVerzekering.Persoon.AdNummer.HasValue) { bool gratis = persoonsVerzekering.Persoon.GelieerdePersoon.Any( gp => gp.Lid.Any(l => l.GroepsWerkJaar.ID == gwj.ID && _ledenManager.GratisAansluiting(l))); ServiceHelper.CallService <ISyncPersoonService>(svc => svc.LoonVerliesVerzekeren( persoonsVerzekering.Persoon.AdNummer.Value, gwj.Groep.Code, gwj.WerkJaar, gratis)); } else { // Verzekeren op basis van details. // Een verzekering loonverlies (de enige die we voorlopig ondersteunen) is // alleen mogelijk voor leden. Sinds gap 1.x ergens in het verleden, krijgen // probeerleden ook al een AD-nr. Dus mogen we ervanuit gaan dat het AD-nummer // al in aanvraag is. // Niet dat dat nog relevant is eigenlijk. var gelieerdePersoon = (from gp in persoonsVerzekering.Persoon.GelieerdePersoon where Equals(gp.Groep, gwj.Groep) select gp).Single(); bool gratis = gelieerdePersoon.Lid.Any(l => l.GroepsWerkJaar.ID == gwj.ID && _ledenManager.GratisAansluiting(l)); ServiceHelper.CallService <ISyncPersoonService>( svc => svc.LoonVerliesVerzekerenAdOnbekend(MappingHelper.Map <GelieerdePersoon, PersoonDetails>(gelieerdePersoon), gwj.Groep.Code, gwj.WerkJaar, gratis)); } }