public ProductCatalogQuery(IProductQueryRepository repository, IProductQueryRepositorySpecificationFactory specFactory, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingRepositorySpecFactory)
 {
     this.repository                    = repository;
     this.specFactory                   = specFactory;
     this.shoppingRepository            = shoppingRepository;
     this.shoppingRepositorySpecFactory = shoppingRepositorySpecFactory;
 }
 public ShoppingCartCommandFactory(IProductQueryRepository productRepository, IProductQueryRepositorySpecificationFactory productQueryRepositorySpecificationFactory, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingQueryRepositorySpecificationFactory)
 {
     this.productRepository = productRepository;
     this.productQueryRepositorySpecificationFactory = productQueryRepositorySpecificationFactory;
     this.shoppingRepository = shoppingRepository;
     this.shoppingQueryRepositorySpecificationFactory = shoppingQueryRepositorySpecificationFactory;
 }
 public ShoppingCommandFactory(IEntityFactory entityFactory, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory specificationFactory, IShoppingRepositoryByIdSpecificationFactory byIdSpecificationFactory)
 {
     this.entityFactory            = entityFactory;
     this.shoppingRepository       = shoppingRepository;
     this.specificationFactory     = specificationFactory;
     this.byIdSpecificationFactory = byIdSpecificationFactory;
 }
 public ProductDetailCommandFactory(IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingRepositorySpecFactory, IProductQueryRepository repository, IProductQueryByIdRepositorySpecificationFactory factory)
 {
     this.shoppingRepository            = shoppingRepository;
     this.shoppingRepositorySpecFactory = shoppingRepositorySpecFactory;
     this.repository = repository;
     this.factory    = factory;
 }
Beispiel #5
0
        public void IncQuantity(IShoppingRepository shoppingQueryRepository, IShoppingQueryRepositorySpecificationFactory shoppingQueryRepositorySpecificationFactory, IShoppingItemRepository shoppingItemRepository, IShoppingItemByIdRepositorySpecificationFactory shoppingItemByIdRepositorySpecificationFactory, Action <IProductAggregation> success, Action <Exception> error)
        {
            ++Quantity;
            UpdateDiscount();

            Persist(shoppingQueryRepository, shoppingQueryRepositorySpecificationFactory, shoppingItemRepository, shoppingItemByIdRepositorySpecificationFactory, success, error);
        }
Beispiel #6
0
 public ProductDetailQuery(long id, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingRepositorySpecFactory, IProductQueryRepository repository, IProductQueryByIdRepositorySpecificationFactory factory)
 {
     this.id = id;
     this.shoppingRepository            = shoppingRepository;
     this.shoppingRepositorySpecFactory = shoppingRepositorySpecFactory;
     this.repository = repository;
     this.factory    = factory;
 }
 public DecProductQuantityService(IProductDetailCommandFactory commandFactory, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingRepositorySpecFactory, IShoppingItemRepository shoppingItemRepository, IShoppingItemByIdRepositorySpecificationFactory shoppingItemRepositorySpecFactory)
 {
     this.commandFactory                    = commandFactory;
     this.shoppingRepository                = shoppingRepository;
     this.shoppingRepositorySpecFactory     = shoppingRepositorySpecFactory;
     this.shoppingItemRepository            = shoppingItemRepository;
     this.shoppingItemRepositorySpecFactory = shoppingItemRepositorySpecFactory;
 }
Beispiel #8
0
        public void DecQuantity(IShoppingRepository shoppingQueryRepository, IShoppingQueryRepositorySpecificationFactory shoppingQueryRepositorySpecificationFactory, IShoppingItemRepository shoppingItemRepository, IShoppingItemByIdRepositorySpecificationFactory shoppingItemByIdRepositorySpecificationFactory, Action <IProductAggregation> success, Action <Exception> error)
        {
            --Quantity;
            if (Quantity < 0)
            {
                Quantity = 0;
                Discount = 0;
            }
            else
            {
                UpdateDiscount();
            }

            Persist(shoppingQueryRepository, shoppingQueryRepositorySpecificationFactory, shoppingItemRepository, shoppingItemByIdRepositorySpecificationFactory, success, error);
        }
Beispiel #9
0
        /// <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);
            });
        }
Beispiel #10
0
 public InitializeShoppingCommand(IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory specificationFactory, IEntityFactory entityFactory)
 {
     this.shoppingRepository   = shoppingRepository;
     this.specificationFactory = specificationFactory;
     this.entityFactory        = entityFactory;
 }
 public FinalizeShoppingCommand(IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory specificationFactory, IShoppingRepositoryByIdSpecificationFactory byIdSpecificationFactory)
 {
     this.shoppingRepository       = shoppingRepository;
     this.specificationFactory     = specificationFactory;
     this.byIdSpecificationFactory = byIdSpecificationFactory;
 }