public InvoiceAppService( ISubscriptionPaymentRepository subscriptionPaymentRepository, IInvoiceNumberGenerator invoiceNumberGenerator, EditionManager editionManager, IRepository <Invoice> invoiceRepository) { _subscriptionPaymentRepository = subscriptionPaymentRepository; _invoiceNumberGenerator = invoiceNumberGenerator; _editionManager = editionManager; _invoiceRepository = invoiceRepository; }
public Invoice Invoice(IInvoiceNumberGenerator generator, string vendorInvoiceNumber, DateTime date, decimal amount) { // These guards maintain business integrity of the PO. if (this.IsFullyInvoiced) { throw new Exception("The PO is fully invoiced."); } if (ContainsInvoice(vendorInvoiceNumber)) { throw new Exception("Duplicate invoice!"); } var invoiceNumber = generator.GenerateInvoiceNumber(this.VendorId, vendorInvoiceNumber, date); var invoice = new Invoice(invoiceNumber, vendorInvoiceNumber, date, amount); this.Invoices.Add(invoice); DomainEvents.Raise(new PurchaseOrderInvoicedEvent(this.Id, invoice.InvoiceNumber)); return(invoice); }
public DefaultInvoiceNumberGenerator_Tests() { _invoiceNumberGenerator = Resolve <IInvoiceNumberGenerator>(); _invoiceRepository = Resolve <IRepository <Invoice> >(); }
public InvoiceFactory(IDomainEventPublisher eventPublisher, IInvoiceNumberGenerator numberGenerator, IDependencyInjector dependencyInjector) { _eventPublisher = eventPublisher; _numberGenerator = numberGenerator; _dependencyInjector = dependencyInjector; }
public PurchaseOrderService(IPurchaseOrderRepository repository, IInvoiceNumberGenerator invoiceNumberGenerator) { this.repository = repository; this.invoiceNumberGenerator = invoiceNumberGenerator; }