/// <summary>
        /// Updates the product image.
        /// </summary>
        /// <param name="productID">The product identifier.</param>
        /// <param name="file">The image file.</param>
        /// <returns>The image id</returns>
        public async Task <string> UpdateProductImageAsync(Guid productID, IFormFile file)
        {
            string imageID = null;

            using (var fileStream = file.OpenReadStream())
                using (var ms = new MemoryStream())
                {
                    fileStream.CopyTo(ms);
                    imageID = DriveAPI.UploadImage(ms, file.FileName);
                }

            BsonDocument document = await this.Documents
                                    .Aggregate()
                                    .Match(p => p._Id == productID)
                                    .Project(Builders <Product> .Projection
                                             .Include("Characteristics.Image"))
                                    .FirstOrDefaultAsync();

            Product product = BsonSerializer.Deserialize <Product>(document);

            DriveAPI.DeleteFile(product.Characteristics["Image"]);
            product.Characteristics["Image"] = imageID;

            UpdateDefinition <Product> update = Builders <Product> .Update.Set("Characteristics.Image", product.Characteristics["Image"]);

            await this.Documents.UpdateOneAsync(p => p._Id == productID, update);

            return(imageID);
        }
示例#2
0
        static void Main(string[] args)
        {
            DriveAPI drive = new DriveAPI();
            var      list  = drive.files;

            string path = list[0].WebContentLink;

            Console.WriteLine(QRCodeUtil.getQRCode(path));
            Console.ReadKey();
        }
        /// <summary>
        /// Updates the product image.
        /// </summary>
        /// <param name="productID">The product identifier.</param>
        /// <param name="file">The image file.</param>
        /// <returns>The image identifier</returns>
        public async Task <string> UpdateProductImage(int productID, IFormFile file)
        {
            string imageID = null;

            using (var fileStream = file.OpenReadStream())
                using (var ms = new MemoryStream())
                {
                    fileStream.CopyTo(ms);
                    imageID = DriveAPI.UploadImage(ms, file.FileName);
                }

            ProductCharacteristic characteristic = await this.unitOfWork.Set <ProductCharacteristic>()
                                                   .Where(pc => pc.ProductID == productID && pc.Characteristic.Name == "Image")
                                                   .FirstOrDefaultAsync();

            DriveAPI.DeleteFile(characteristic.Value);
            characteristic.Value = imageID;

            await this.unitOfWork.SaveAsync();

            return(imageID);
        }