Beispiel #1
0
        public async Task <IHttpActionResult> DeleteFile(string id, DateTime?expired = null)
        {
            try
            {
                await _log.LogVerbose(WebApiConfig.LogSourceFiles, $"DELETE:{id}, {expired}, Deleting file");

                var guid = await _filesRepo.DeleteFile(Models.File.ConvertToStoreId(id), expired);

                if (guid.HasValue)
                {
                    await _log.LogVerbose(WebApiConfig.LogSourceFiles, $"DELETE:{id}, {expired}, Deleting file success");

                    return(Ok(Models.File.ConvertFileId(guid.Value)));
                }
                return(NotFound());
            }
            catch (FormatException)
            {
                await _log.LogError(WebApiConfig.LogSourceFiles, $"DELETE:{id}, bad request");

                return(BadRequest());
            }
            catch (Exception ex)
            {
                await _log.LogError(WebApiConfig.LogSourceFiles, new Exception($"DELETE:{id}, Exception:{ex.Message}", ex));

                return(InternalServerError(ex));
            }
        }
Beispiel #2
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var user = await _context.Users.Include(x => x.Images).SingleOrDefaultAsync(x =>
                                                                                            x.UserName == _userAccessor.GetCurrentUsername());

                var image = user.Images.FirstOrDefault(x => x.Id == request.Id);

                if (image == null)
                {
                    throw new RestException(HttpStatusCode.NotFound, "Image not found");
                }

                if (image.IsMain)
                {
                    throw new RestException(HttpStatusCode.BadRequest, "You cannot delete your main image");
                }

                var result = _filesRepository.DeleteFile(image.FileName);

                if (result == null)
                {
                    throw new Exception("Problem deleting file");
                }

                user.Images.Remove(image);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem saving changes");
            }
Beispiel #3
0
        public async Task Delete(string filePath)
        {
            var physicalFilePath = PhysicalBasePath + filePath;

            File.Delete(physicalFilePath);
            await FilesRepository.DeleteFile(physicalFilePath);
        }
Beispiel #4
0
        public async Task DeleteFileAsync(Guid guid)
        {
            var file = await _filesRepository.GetFileAsync(guid);

            if (file != null)
            {
                _blobStorage.DeleteFile(file.Name);
                _filesRepository.DeleteFile(file);
            }
        }
Beispiel #5
0
        public async Task <IActionResult> OnPostAsync(int id)
        {
            Materials = await _db.Delete(id); //удаление записи

            if (Materials.ImagePath != null)
            {
                _fileRepository.DeleteFile(Materials.ImagePath, "Materials");            //удаление фото
            }
            TempData["SuccessMessage"] = $"Запись \"{Materials.Name}\" успешно удалена"; //сообщение пользователю
            return(RedirectToPage("./Index"));
        }
Beispiel #6
0
        public async Task <IActionResult> OnPostAsync(int id)
        {
            Gallery = await _db.Delete(id); //удаляем запись

            if (Gallery.ImagePath != null)
            {
                _filesRepository.DeleteFile(Gallery.ImagePath, "Gallery");                            //удаляем фото
            }
            TempData["SuccessMessage"] = $"Запись \"{Gallery.Name}\" успешно удалена";
            return(RedirectToPage("./Index"));
        }
Beispiel #7
0
        public async Task <IActionResult> OnPostAsync(int id)
        {
            if (Products.Profile.ImagesName != null)
            {
                _fileRepository.DeleteFile(Products.Profile.ImagesName, "Products"); //удаление фото
            }
            Products = await _db.Delete(id);                                         //удаление записи

            TempData["SuccessMessage"] = $"Запись \"{Products.Name}\" успешно удалена";
            return(RedirectToPage("./Index"));
        }
Beispiel #8
0
 public async Task <IActionResult> DeleteFile(string fileName, string path)
 {
     try
     {
         return(Ok(await _fileRepository.DeleteFile(fileName, path)));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
Beispiel #9
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //удаление старого фото и загрузка нового на сервер
            if (Photo != null)
            {
                if (!_filesRepository.CheckMIMEType(Photo)) //проверка типа файла
                {
                    TempData["MIMETypeError"] = "Разрешены только файлы с типом .jpg .jpeg .png .gif";
                    return(Page());
                }

                if (Gallery.ImagePath != null)
                {
                    _filesRepository.DeleteFile(Gallery.ImagePath, "Gallery");
                }

                Gallery.ImagePath = await _filesRepository.UploadFile(Photo, "Gallery"); //загрузка файл на сервер и запись имени файла
            }

            try
            {
                Gallery = await _db.Update(Gallery); //отправляем запрок к БД на изменение
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!_db.GalleryExists(Gallery.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            TempData["SuccessMessage"] = $"Запись \"{Gallery.Name}\" успешно обновлена";
            return(RedirectToPage("./Index"));
        }
        public async Task <ActionResult <DeleteFileResponse> > DeleteFile(string bucketName, string fileName)
        {
            var response = await _filesRepository.DeleteFile(bucketName, fileName);

            return(Ok(response));
        }
Beispiel #11
0
        public async Task <IActionResult> OnPostAsync(int id)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            //удаление старого фото и загрузка нового на сервер
            if (Photo != null)
            {
                if (!_fileRepository.CheckMIMEType(Photo)) //проверка типа файла
                {
                    TempData["MIMETypeError"] = "Разрешены только файлы с типом .jpg .jpeg .png .gif";
                    return(Page());
                }

                if (Products.Profile.ImagesName != null)
                {
                    _fileRepository.DeleteFile(Products.Profile.ImagesName, "Products"); //удаляем старый файл
                }

                Products.Profile.ImagesName = await _fileRepository.UploadFile(Photo, "Products"); //загрузка файл на сервер и запись имени файла
            }

            //загрузка галереи
            if (Gallery_img.Count != 0)
            {
                foreach (var item in Gallery_img) //проверка типа файла
                {
                    if (!_fileRepository.CheckMIMEType(item))
                    {
                        TempData["MIMETypeErrorGal"] = "Разрешены только файлы с типом .jpg .jpeg .png .gif";
                        return(Page());
                    }
                }
                foreach (var item in Products.Images) //удаление фото из ФС
                {
                    _fileRepository.DeleteFile(item.ImageName, "Products", "Gallery");
                }
                await _db.DeleteGallery(Products.Id); //удаляем записи из таблицы

                Products.Images.Clear();              //Очищаем лист с фото
                foreach (var item in Gallery_img)     //Добавление записей в модель
                {
                    string imageName = await _fileRepository.UploadFile(item, "Products", "Gallery");

                    ProductImages productImages = new ProductImages()
                    {
                        ProductsId = Products.Id,
                        ImageName  = imageName
                    };
                    Products.Images.Add(productImages);
                }
            }

            var productToUpdate = await _db.GetProduct(id);

            if (productToUpdate == null)
            {
                return(NotFound());
            }
            try
            {
                if (await TryUpdateModelAsync <Products>(productToUpdate, "Products"))
                {
                    await _db.Update(productToUpdate); //отпраляем запрос к БД на изменение
                }
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!_db.ProductsExists(Products.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            TempData["SuccessMessage"] = $"Запись \"{Products.Name}\" успешно обновлена";
            return(RedirectToPage("./Index"));
        }
Beispiel #12
0
        public async Task <ActionResult <FileDto> > DeleteFile(string userid, string fileid)
        {
            if (!ExternalIdPassedGuidValidation(userid))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Invalid {nameof(userid)}."));
            }

            if (!ExternalIdPassedGuidValidation(fileid))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Invalid {nameof(fileid)}."));
            }

            Files.Models.File file;
            try
            {
                file = await databaseRepository.GetFileAsync(fileid);
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, ex.Message));
            }

            if (databaseRepository.IsFileDefault(file))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, "The file can't be deleted."));
            }

            try
            {
                if (!await UserExists(userid))
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, "Unknown user external id."));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            if (!UserHaveAccessToFile(userid, file))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Access denied to file with external id: {fileid}."));
            }

            try
            {
                await mediator.Publish <FileDeletedMessage>(new FileDeletedMessage(fileid));

                System.IO.FileInfo fileInf = new System.IO.FileInfo(appEnvironment.WebRootPath + file.Path);
                if (fileInf.Exists)
                {
                    fileInf.Delete();
                }

                databaseRepository.DeleteFile(file);
                await databaseRepository.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            FileDto fileDto;

            try
            {
                fileDto = mapper.Map <FileDto>(file);
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            return(Ok(fileDto));
        }