예제 #1
0
        public ShopManager(
            IShopRepository repository,
            ILogger <ShopManager> logger,
            IHttpContextAccessor context,
            IOptions <ShopManagerOptions> optionsAccessor,
            IEnumerable <IShopValidator <Product> > prodValidators,
            IEnumerable <IShopValidator <Image> > imgValidators,
            IEnumerable <IShopValidator <Category> > catValidators,
            IEnumerable <IShopValidator <DescriptionGroup> > descGroupValidators,
            IEnumerable <IShopValidator <DescriptionGroupItem> > descGroupItemValidators,
            IEnumerable <IShopValidator <Description> > descValidators,
            IEnumerable <IShopValidator <Order> > orderValidators,
            IShopImageTransformer <Image> imgTransformer,
            OperationErrorDescriber errorDescriber = null)
        {
            _repository       = repository ?? throw new ArgumentNullException(nameof(repository));
            _logger           = logger ?? throw new ArgumentNullException(nameof(logger));
            ErrorDescriber    = errorDescriber ?? new OperationErrorDescriber();
            Options           = optionsAccessor.Value ?? new ShopManagerOptions();
            CancellationToken = context?.HttpContext?.RequestAborted ?? CancellationToken.None;

            //TODO create single validator class
            foreach (var validator in prodValidators)
            {
                ProductValidators.Add(validator);
            }

            foreach (var validator in imgValidators)
            {
                ImageValidators.Add(validator);
            }

            foreach (var validator in catValidators)
            {
                CategoryValidators.Add(validator);
            }

            foreach (var validator in descGroupValidators)
            {
                DescriptionGroupValidators.Add(validator);
            }

            foreach (var validator in descGroupItemValidators)
            {
                DescriptionGroupItemValidators.Add(validator);
            }

            foreach (var validator in descValidators)
            {
                DescriptionValidators.Add(validator);
            }

            foreach (var validator in orderValidators)
            {
                OrderValidators.Add(validator);
            }

            ImageTransformer = imgTransformer ??
                               new ShopImageTransformer(optionsAccessor);
        }
예제 #2
0
        public Category(string name)
        {
            CategoryValidators.ValidName(name);

            Name = name;
        }