// PATCH tables/Car/48D68C86-6EA6-4C25-AA33-223FC9A27959 /// <summary> /// Patches the cars. /// </summary> /// <param name="id">The identifier.</param> /// <param name="patch">The patch.</param> /// <returns>Task<Car>.</returns> public async Task <Car> PatchCar(string id, Delta <Car> patch) { var item = patch.GetEntity(); if (!_context.Exist <Car>(id)) { throw new ArgumentException("The customer not exist."); } if (string.IsNullOrEmpty(item.Name)) { throw new ArgumentException("Your data is not correct."); } BlobItem blobItem = null; var urlToDelete = item.Url; string storageAccountName = string.Empty; string storageAccountKey = string.Empty; // the ImageName helps to know that a new image will be uploaded // this way, the last image will be delete and a new one will be created // the url is not reuse to avoid issue when apps has images in cache if (item.BlobItem != null && !string.IsNullOrEmpty(item.BlobItem.ImageName)) { if (!(Services.Settings.TryGetValue("STORAGE_ACCOUNT_NAME", out storageAccountName) | Services.Settings.TryGetValue("STORAGE_ACCOUNT_ACCESS_KEY", out storageAccountKey))) { throw new NullReferenceException(Message); } blobItem = await BlobItemManager.DefineAsync("CarPhoto", storageAccountName, storageAccountKey); blobItem.ImageName = item.BlobItem.ImageName; item.Url = blobItem.ImageUrl; } var current = await UpdateAsync(id, patch); if (string.IsNullOrEmpty(urlToDelete)) { BlobItemManager.DeleteAsync(urlToDelete, storageAccountName, storageAccountKey); } current.BlobItem = blobItem; return(current); }
// POST tables/Car /// <summary> /// Posts the cars. /// </summary> /// <param name="item">The item.</param> /// <returns>Task<IHttpActionResult>.</returns> public async Task <IHttpActionResult> PostCar(Car item) { // In this case is considered a imagem will be uploaded, each time a car is created if (string.IsNullOrEmpty(item.Name)) { return(BadRequest("Your data is not correct.")); } string storageAccountName; string storageAccountKey; // Try to get the Azure storage account token from app settings. if (!(Services.Settings.TryGetValue("STORAGE_ACCOUNT_NAME", out storageAccountName) | Services.Settings.TryGetValue("STORAGE_ACCOUNT_ACCESS_KEY", out storageAccountKey))) { throw new NullReferenceException(Message); } var blobItem = await BlobItemManager.DefineAsync("CarPhoto", storageAccountName, storageAccountKey); item.Url = blobItem.ImageUrl; var current = await InsertAsync(item); current.BlobItem = blobItem; return(CreatedAtRoute("Tables", new { id = current.Id }, current)); }