public async Task <ActionResult <Image> > DeleteImage(int id)
        {
            var completed = await imagesService.DeleteImage(id);

            if (!completed)
            {
                return(NotFound());
            }
            else
            {
                await cashService.RemoveCashResponseAsync(CashUtilities.GenerateKeyCashKeyFromRequest(this.Request));

                return(Ok());
            }
        }
        public async Task <IActionResult> PutImage(int id, Image image)
        {
            if (id != image.Id)
            {
                return(BadRequest());
            }

            var completed = await imagesService.PutImage(id, image.ToModel(isUpdate: true));

            if (!completed)
            {
                return(NotFound());
            }
            else
            {
                await cashService.RemoveCashResponseAsync(CashUtilities.GenerateKeyCashKeyFromRequest(this.Request));

                return(Ok());
            }
        }
        public async Task <ActionResult <Image> > GetproductImages(int productId)
        {
            var cashedImages = await cashService.GetCashCollectionResponseAsync(CashUtilities.GenerateKeyCashKeyFromRequest(this.Request));

            if (cashedImages != null)
            {
                return(Ok(cashedImages));
            }

            var images = await imagesService.GetproductImages(productId);

            if (images == null)
            {
                return(NotFound());
            }

            await cashService.CashResponseAsync(
                CashUtilities.GenerateKeyCashKeyFromRequest(this.Request),
                images.Select(x => Image.ToViewModel(x)),
                timeTolive);

            return(Ok(images.Select(x => Image.ToViewModel(x))));
        }
        public async Task <ActionResult <Image> > GetImage(int id)
        {
            var cashedImage = await cashService.GetCashResponseAsync(CashUtilities.GenerateKeyCashKeyFromRequest(this.Request));

            if (cashedImage != null)
            {
                return(Ok(cashedImage));
            }

            var image = await imagesService.GetImage(id);

            if (image == null)
            {
                return(NotFound());
            }

            await cashService.CashResponseAsync(
                CashUtilities.GenerateKeyCashKeyFromRequest(this.Request),
                Image.ToViewModel(image),
                timeTolive);

            return(Ok(Image.ToViewModel(image)));
        }