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);
        }
Example #2
0
        public async Task Save(Draft draft, string body)
        {
            draft.Uri.Check(nameof(draft.Uri));
            draft.Picture.Check(nameof(draft.Title));
            draft.Paragraphs.CheckIfNull(nameof(draft.Paragraphs));
            draft.Title.CheckIfNull(nameof(draft.Title));
            draft.User.CheckIfNull(nameof(draft.User));
            body.CheckIfNull(nameof(body));

            var content = new Content
            {
                Id   = draft.Id,
                Body = body
            };

            await _draftRepository.Save(draft);

            await _contentRepository.Save(content);
        }