public async Task <DeleteStationImageModel> DeleteBlob(DeleteStationImageModel model) { var deleteStationImageModel = new DeleteStationImageModel(); if (!String.IsNullOrEmpty(model.FileName)) { var container = BlobHelper.GetBlobContainer(); var blob = container.GetBlockBlobReference(model.FileName); bool deleted = false; string errorMessage = string.Empty; using (RiverWatchEntities _db = new RiverWatchEntities()) { var sameImageUrls = _db.StationImages .Where(si => si.FileUrl.Equals(model.FileUrl)) .ToList(); //if there is only one file, then delete it from the blob storage. if (sameImageUrls.Count() == 1) { await blob.DeleteIfExistsAsync(); } var stationImageToDelete = _db.StationImages.Find(model.ID); _db.StationImages.Remove(stationImageToDelete); _db.SaveChanges(); deleted = true; } if (!deleted) { errorMessage = "Image could not be deleted. Contact an Administrator if this problem continues."; } deleteStationImageModel = new DeleteStationImageModel() { ID = model.ID, FileName = model.FileName, FileUrl = model.FileUrl, Deleted = deleted, ErrorMessage = errorMessage }; return(deleteStationImageModel); } // Otherwise deleteStationImageModel = new DeleteStationImageModel() { ID = model.ID, FileName = model.FileName, Deleted = false, ErrorMessage = "Image could not be found. Contact an Administrator if this problem continues." }; return(deleteStationImageModel); }
public async Task <IHttpActionResult> DeleteStationImage(DeleteStationImageModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } bool validated = false; HttpRequestMessage request = ControllerContext.Request; // this seems to be same as request ValidateCredentials VC = new ValidateCredentials(); validated = VC.checkCreds(request); if (!validated) { return(Unauthorized()); } if (model.ID <= 0) { return(BadRequest()); } // Call service to perform delete, then check result to return as content var deleteStationImageModel = await _service.DeleteBlob(model); if (deleteStationImageModel != null) { if (deleteStationImageModel.Deleted) { return(Ok(deleteStationImageModel)); } else { return(BadRequest(deleteStationImageModel.ErrorMessage)); } } // Otherwise return(BadRequest()); } catch (Exception ex) { HandleErrors(ex, "StationImageController_DeleteStationImage", "", ""); return(InternalServerError(ex)); } }