public DraftId Choose(string offerIdString, string tenantIdString, DateTime from, DateTime to) { var offerId = OfferId.From(offerIdString); var offer = _offerRepository.Get(offerId); var tenantId = TenantId.From(tenantIdString); var period = Period.From(from, to); var discount = _discountService.CalculateDiscount(tenantIdString, offerIdString, from, to); var draftFactory = new DraftFactory(discount, new DefaultDraftNumberGenerator()); var draft = offer.Choose(tenantId, period, draftFactory); _draftRepository.Save(draft); return(draft.Id); }