public ShoppingCommandFactory(IEntityFactory entityFactory, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory specificationFactory, IShoppingRepositoryByIdSpecificationFactory byIdSpecificationFactory)
 {
     this.entityFactory            = entityFactory;
     this.shoppingRepository       = shoppingRepository;
     this.specificationFactory     = specificationFactory;
     this.byIdSpecificationFactory = byIdSpecificationFactory;
 }
 public ShoppingCartCommandFactory(IProductQueryRepository productRepository, IProductQueryRepositorySpecificationFactory productQueryRepositorySpecificationFactory, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingQueryRepositorySpecificationFactory)
 {
     this.productRepository = productRepository;
     this.productQueryRepositorySpecificationFactory = productQueryRepositorySpecificationFactory;
     this.shoppingRepository = shoppingRepository;
     this.shoppingQueryRepositorySpecificationFactory = shoppingQueryRepositorySpecificationFactory;
 }
示例#3
0
        public Startup(IHostingEnvironment env)
        {
            _billRepository            = new BillRepository();
            _shoppingRepository        = new ShoppingRepository();
            _peopleRepository          = new PeopleRepository();
            _toDoRepository            = new ToDoRepository();
            _householdRepository       = new HouseholdRepository();
            _discordService            = new DiscordService(new HttpClient());
            _userService               = new UserService(new UserCache(), _peopleRepository);
            _inviteLinkService         = new InviteLinkService();
            _googleTokenAuthentication = new GoogleTokenAuthentication(new HttpClient());
            _recurringBillWorker       = new RecurringBillWorker(_billRepository);

            var builder = new ConfigurationBuilder()
                          .SetBasePath(env.ContentRootPath)
                          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                          .AddEnvironmentVariables();

            if (env.IsDevelopment())
            {
                builder.AddApplicationInsightsSettings(developerMode: true);
            }

            var discordWorker           = new DiscordMessageListener(_billRepository, _shoppingRepository, _peopleRepository, _discordService);
            var backgroundDiscordWorker = new Task(() => discordWorker.StartWorker());

            backgroundDiscordWorker.Start();

            Configuration = builder.Build();
        }
示例#4
0
 public ShoppingService(ILogger <ShoppingService> logger, IShoppingRepository shoppingRepository, IProductSorter productSorter, ITrolleyTotalCalculator trolleyTotalCalculator)
 {
     _logger                 = logger ?? throw new System.ArgumentNullException(nameof(logger));
     _shoppingRepository     = shoppingRepository ?? throw new System.ArgumentNullException(nameof(shoppingRepository));
     _productSorter          = productSorter ?? throw new System.ArgumentNullException(nameof(productSorter));
     _trolleyTotalCalculator = trolleyTotalCalculator ?? throw new System.ArgumentNullException(nameof(trolleyTotalCalculator));
 }
 public ProductDetailCommandFactory(IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingRepositorySpecFactory, IProductQueryRepository repository, IProductQueryByIdRepositorySpecificationFactory factory)
 {
     this.shoppingRepository            = shoppingRepository;
     this.shoppingRepositorySpecFactory = shoppingRepositorySpecFactory;
     this.repository = repository;
     this.factory    = factory;
 }
示例#6
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);
        }
 public ProductCatalogQuery(IProductQueryRepository repository, IProductQueryRepositorySpecificationFactory specFactory, IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory shoppingRepositorySpecFactory)
 {
     this.repository                    = repository;
     this.specFactory                   = specFactory;
     this.shoppingRepository            = shoppingRepository;
     this.shoppingRepositorySpecFactory = shoppingRepositorySpecFactory;
 }
 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;
 }
 public PurchaseController(ILogger <PurchaseController> logger,
                           IMapper mapper,
                           IShoppingRepository shoppingRepository)
 {
     _logger       = logger;
     _mapper       = mapper;
     _shoppingRepo = shoppingRepository;
 }
示例#10
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 DiscordMessageListener(IBillRepository billRepository, IShoppingRepository shoppingRepository, IPeopleRepository peopleRepository, IDiscordService discordService)
 {
     _discordService  = discordService;
     _discordCommands = new Dictionary <string, IDiscordCommand>
     {
         { "bills", new ListBillCommand(discordService, billRepository, peopleRepository) },
         { "shopping", new ListShoppingCommand(discordService, shoppingRepository, peopleRepository) }
     };
 }
示例#12
0
 public HouseholdController(IBillRepository billRepository, IShoppingRepository shoppingRepository, IPeopleRepository peopleRepository, IToDoRepository toDoRepository,
                            IHouseholdRepository householdRepository, IUserService userService, IInviteLinkService inviteLinkService)
 {
     _userService        = userService;
     _inviteLinkService  = inviteLinkService;
     _billRepository     = billRepository;
     _shoppingRepository = shoppingRepository;
     _peopleRepository   = peopleRepository;
     _toDoRepository     = toDoRepository;
     _houseRepository    = householdRepository;
 }
示例#13
0
        public ShoppingsTests()
        {
            _settings = new DatabaseSettings
            {
                ConnectionString       = "mongodb://*****:*****@localhost:27017/admin",
                DatabaseName           = "ShoppingListDb",
                ProductsCollectionName = "Products"
            };

            _repository = new ShoppingRepository(_settings);
            _service    = new ShoppingService(_repository);
            _controller = new ShoppingsController(_service);
        }
示例#14
0
 public CartController(ILogger <CartController> logger,
                       IProductsRepository productsRepo,
                       IUsersRepository usersRepo,
                       IShoppingRepository shoppingRepo,
                       IMapper mapper,
                       EmailSender emailSender)
 {
     _logger       = logger;
     _productsRepo = productsRepo;
     _usersRepo    = usersRepo;
     _shoppingRepo = shoppingRepo;
     _mapper       = mapper;
     _emailSender  = emailSender;
 }
示例#15
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);
        }
示例#16
0
        public ProductsController(IShoppingRepository repo, IMapper mapper,
                                  IOptions <CloudinarySettings> cloudinaryConfig)
        {
            _repo             = repo;
            _mapper           = mapper;
            _cloudinaryConfig = cloudinaryConfig;

            Account acc = new Account(
                _cloudinaryConfig.Value.CloudName,
                _cloudinaryConfig.Value.ApiKey,
                _cloudinaryConfig.Value.ApiSecret
                );

            _cloudinary = new Cloudinary(acc);
        }
 public AccountController(SignInManager <UserEntity> signInMgr,
                          UserManager <UserEntity> userMgr,
                          IUsersRepository usersRepo,
                          IMapper mapper,
                          ILogger <AccountController> logger,
                          EmailSender emailSender,
                          IProductsRepository productsRepo,
                          IShoppingRepository shoppingRepo)
 {
     _signInMgr    = signInMgr;
     _userMgr      = userMgr;
     _usersRepo    = usersRepo;
     _mapper       = mapper;
     _logger       = logger;
     _emailSender  = emailSender;
     _shoppingRepo = shoppingRepo;
 }
示例#18
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);
            });
        }
 public MerchantsController(IShoppingRepository repository, IMapper mapper)
 {
     _mapper     = mapper;
     _repository = repository;
 }
示例#20
0
 public ManufacturersController(IShoppingRepository repo, IMapper mapper)
 {
     _mapper = mapper;
     _repo   = repo;
 }
示例#21
0
 public InitializeShoppingCommand(IShoppingRepository shoppingRepository, IShoppingQueryRepositorySpecificationFactory specificationFactory, IEntityFactory entityFactory)
 {
     this.shoppingRepository   = shoppingRepository;
     this.specificationFactory = specificationFactory;
     this.entityFactory        = entityFactory;
 }
示例#22
0
 public ShoppingService(IShoppingRepository shoppingRepository)
 {
     ShoppingRepository = shoppingRepository;
 }
示例#23
0
 public ListShoppingCommand(IDiscordService discordService, IShoppingRepository shoppingRepository, IPeopleRepository peopleRepository)
 {
     _discordService     = discordService;
     _shoppingRepository = shoppingRepository;
     _peopleRepository   = peopleRepository;
 }
示例#24
0
 public CategoryController(IShoppingRepository shoppingRepository, ICategoryRepository categoryRepository) : base(shoppingRepository, categoryRepository)
 {
 }
示例#25
0
 /// <summary>
 /// initialises
 /// </summary>
 /// <param name="rep"></param>
 /// <param name="UserManager"></param>
 public HomeController(IShoppingRepository rep, UserManager <StoreUser> UserManager, ILogger <HomeController> logger)
 {
     this.rep         = rep;
     this.UserManager = UserManager;
     this.Logger      = logger;
 }
示例#26
0
 public UserController(IShoppingRepository repository, IMapper mapper)
 {
     _mapper     = mapper;
     _repository = repository;
 }
示例#27
0
 /// <summary>
 /// ProductController
 /// </summary>
 /// <param name="rep"></param>
 /// <param name="log"></param>
 public ProductController(IShoppingRepository rep, ILogger <ProductController> log)
 {
     Rep = rep;
     Log = log;
 }
示例#28
0
 public AppController(IShoppingRepository repository, IMailService mailService)
 {
     this.repository  = repository;
     this.mailService = mailService;
 }
 public ProductsController(IShoppingRepository repository, IMapper mapper)
 {
     _mapper     = mapper;
     _repository = repository;
 }
示例#30
0
 public OrdersController(IShoppingRepository repository, ILogger <OrdersController> logger, IMapper mapper)
 {
     this.repository = repository;
     this.logger     = logger;
     this.mapper     = mapper;
 }