Exemplo n.º 1
0
        public int LoonVerliesVerzekeren(int lidId)
        {
            PersoonsVerzekering persoonsVerzekering;
            var lid = _ledenRepo.ByID(lidId);

            Gav.Check(lid);

            if (lid.GroepsWerkJaar.Groep.StopDatum != null && lid.GroepsWerkJaar.Groep.StopDatum < DateTime.Now)
            {
                throw FaultExceptionHelper.FoutNummer(FoutNummer.GroepInactief, Resources.GroepInactief);
            }

            var verzekeringstype = (from g in _verzekerRepo.Select() where g.ID == (int)Verzekering.LoonVerlies select g).First();

            try
            {
                persoonsVerzekering = _verzekeringenMgr.Verzekeren(lid, verzekeringstype, DateTime.Today,
                                                                   _groepsWerkJarenMgr.EindDatum(lid.GroepsWerkJaar));
            }
            catch (FoutNummerException ex)
            {
                throw FaultExceptionHelper.FoutNummer(ex.FoutNummer, ex.Message);
            }
            catch (BlokkerendeObjectenException <PersoonsVerzekering> )
            {
                // TODO: beter faultcontract. (VerzekeringsInfo?)
                throw FaultExceptionHelper.BestaatAl("Verzekering");
            }

#if KIPDORP
            using (var tx = new TransactionScope())
            {
#endif
            _verzekeringenSync.Bewaren(persoonsVerzekering, lid.GroepsWerkJaar);
            _ledenRepo.SaveChanges();
#if KIPDORP
            tx.Complete();
        }
#endif
            return(lid.GelieerdePersoon.ID);
        }