/// <summary> /// /// </summary> /// <param name="shoppingQueryRepository"></param> /// <param name="shoppingQueryRepositorySpecificationFactory"></param> /// <param name="shoppingItemRepository"></param> /// <param name="shoppingItemByIdRepositorySpecificationFactory"></param> /// <param name="success"></param> /// <param name="error"></param> private void Persist(IShoppingRepository shoppingQueryRepository, IShoppingQueryRepositorySpecificationFactory shoppingQueryRepositorySpecificationFactory, IShoppingItemRepository shoppingItemRepository, IShoppingItemByIdRepositorySpecificationFactory shoppingItemByIdRepositorySpecificationFactory, Action <IProductAggregation> success, Action <Exception> error) { shoppingQueryRepository.Find(shoppingQueryRepositorySpecificationFactory.NewActiveShoppingSpec(), shoppings => { if (shoppings.Count == 0 || shoppings[0].IsFinished) { error.Invoke(new NoActiveShoppingException()); return; } var shopping = shoppings[0]; shoppingItemRepository.GetById(shoppingItemByIdRepositorySpecificationFactory.NewQuerySpec(shopping, Id), shoppingItem => { if (shoppingItem == ShoppingItemEntity.Empty) { shoppingItemRepository.Insert(new ShoppingItemEntity(shopping, this), id => { success.Invoke(this); }, err => { error(err); }); } else { shoppingItemRepository.Update(new ShoppingItemEntity(shopping, this), shoppingItemByIdRepositorySpecificationFactory.NewUpdateSpec(shopping, Id), id => { success.Invoke(this); }, err => { error(err); }); } }, err => { error(err); }); }, err => { error(err); }); }
public void UpdateShoppingItem(ShoppingItem shoppingItem) { repository.Update(shoppingItem); }