Пример #1
0
        public async Task <ImageDto> AddImage(ImagePostRequest request)
        {
            await ValidateImage(request);

            var extension = GetExtension(request.File.FileName);

            var image = _mapper.Map <Image>(request);

            image.Id   = Guid.NewGuid().ToString();
            image.Name = $"{image.Id}{extension}";
            image.NameForCompressed = $"{image.Id}_compressed{extension}";

            var pathFull = Path.Combine(_fileOptions.DirectoryPath,
                                        image.UserId, image.Name);
            var pathCompressed = Path.Combine(_fileOptions.DirectoryPath,
                                              image.UserId, image.NameForCompressed);

            await _imageProvider.AddImage(request.File.OpenReadStream(),
                                          pathFull);

            _imageProvider.OptimizeImage(pathFull,
                                         pathCompressed, _fileOptions.MaxQuality);

            _unitOfWork.ImageRepository.Add(image);
            await _unitOfWork.Commit();

            return(_mapper.Map <ImageDto>(image));
        }