public async Task <IEnumerable <Product> > GetProductsByTagNames(IList <string> tagNames)
        {
            var spec = new ProductWithTagSpecification(tagNames);

            return(await GetAsync(spec));
        }
        public async Task <IEnumerable <Product> > GetProductsByName(string name)
        {
            var spec = new ProductWithTagSpecification(name);

            return(await GetAsync(spec));
        }
        public async Task <Product> GetProductById(int productId)
        {
            var spec = new ProductWithTagSpecification(productId);

            return((await GetAsync(spec)).FirstOrDefault());
        }
        public async Task <IEnumerable <Product> > GetProductListAsync()
        {
            var spec = new ProductWithTagSpecification();

            return(await GetAsync(spec));
        }