public Offer( String productCode, DateTime policyFrom, DateTime policyTo, PolicyHolder policyHolder, Price price) { Id = null; Number = Guid.NewGuid().ToString(); ProductCode = productCode; PolicyValidityPeriod = ValidityPeriod.Between(policyFrom, policyTo); PolicyHolder = policyHolder; covers = price.CoverPrices.Select(c => new Cover(c.Key, c.Value)).ToList(); Status = OfferStatus.New; CreateionDate = SysTime.CurrentTime; TotalPrice = price.CoverPrices.Sum(c => c.Value); }
public virtual PolicyVersion EndOn(DateTime endDate) { var endedCovers = this.covers.Select(c => c.EndOn(endDate)).ToList(); var termVersion = new PolicyVersion { Policy = this.Policy, VersionNumber = this.Policy.NextVersionNumber(), PolicyHolder = new PolicyHolder(PolicyHolder.FirstName, PolicyHolder.LastName, PolicyHolder.Pesel), CoverPeriod = CoverPeriod.EndOn(endDate), VersionValidityPeriod = ValidityPeriod.Between(endDate.AddDays(1), VersionValidityPeriod.ValidTo), covers = endedCovers, TotalPremiumAmount = endedCovers.Sum(c => c.Premium) }; return(termVersion); }