Пример #1
0
        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));
            }
        }