void RequestProductDiscussionFor(Product product) { ApplicationServiceLifeCycle.Begin(); try { product.RequestDiscussion(RequestDiscussionIfAvailable()); this.productRepository.Save(product); ApplicationServiceLifeCycle.Success(); } catch (Exception ex) { ApplicationServiceLifeCycle.Fail(ex); } }
string NewProductWith(string tenantId, string productOwnerId, string name, string description, DiscussionAvailability discussionAvailability) { var tid = new TenantId(tenantId); var productId = default(ProductId); ApplicationServiceLifeCycle.Begin(); try { productId = this.productRepository.GetNextIdentity(); var productOwner = this.productOwnerRepository.Get(tid, productOwnerId); var product = new Product(tid, productId, productOwner.ProductOwnerId, name, description, discussionAvailability); this.productRepository.Save(product); ApplicationServiceLifeCycle.Success(); } catch (Exception ex) { ApplicationServiceLifeCycle.Fail(ex); } // TODO: handle null properly return productId.Id; }
void SendEmailForTimedOutProcess(Product product) { // TODO: implement }