Example #1
0
        public void AddImageToUser(ImageDescriptionDTO image, string userId)
        {
            if (image == null)
            {
                throw new ArgumentNullException("Параметр image не может быть null");
            }
            Mapper.CreateMap <ImageDescriptionDTO, ImageDescription>();
            var img  = Mapper.Map <ImageDescriptionDTO, ImageDescription>(image);
            var user = repository.Get(userId);

            if (user == null)
            {
                throw new ArgumentException("Нет такого пользователя в базе данных");
            }
            user.UserImages.Add(img);
            repository.Save();
        }
Example #2
0
        /// <summary>
        /// Сохраняет картинку пользователя на сервер как в оригинальном виде так и в ресайзинге.
        /// Заносит сведения в базу данных
        /// </summary>
        /// <returns>
        /// Возвращает true если операция сохранения картинки на сервер и инфо в базу данных.
        /// В ином случае возвращаем false.
        /// </returns>
        public bool SaveImage(ref ImageDescriptionDTO image, Stream imageStream, string saveOriginalPath,
                              string saveResizedPath)
        {
            int imageLength  = 800;
            int avatarLength = 150;
            int usedLength   = image.IsAvatar ? avatarLength : imageLength;

            FileInfo fileInfo = new FileInfo(image.FileName);

            Guid   guid       = Guid.NewGuid();
            string stringGuid = guid.ToString();
            string extension  = fileInfo.Extension.ToLower();
            string saveName   = image.IsAvatar ? (image.OwnerId + extension) : (stringGuid + extension);
            string originalImageDestinationPathWithName = Path.Combine(saveOriginalPath, saveName);
            string resizedImageDestinationPathWithName  = Path.Combine(saveResizedPath, saveName);

            image.Id            = guid;
            image.FileExtention = extension;
            image.FileStoreName = saveName;
            image.UploadDate    = DateTime.Now;

            // При ошибке выдаем результат false
            try
            {
                using (var originalImage = Image.FromStream(imageStream))
                {
                    originalImage.Save(originalImageDestinationPathWithName);
                    WebImage resizedImage = new WebImage(imageStream);
                    // Делаем ресайзинг только если картинка больше необходимой
                    // по ширине или высоте
                    if (resizedImage.Width > usedLength || resizedImage.Height > usedLength)
                    {
                        resizedImage.Resize(usedLength, usedLength, true, true);
                    }
                    resizedImage.Save(resizedImageDestinationPathWithName);
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Example #3
0
        protected virtual bool TrySaveImage(Stream stream)
        {
            ImageDescriptionDTO image = new ImageDescriptionDTO()
            {
                FileName    = FileName,
                Name        = Name,
                Description = Description,
                IsAvatar    = IsAvatar,
                OwnerId     = User.Identity.GetUserId()
            };
            bool result = userService.SaveImage(ref image, stream, SaveOriginalPath, SaveResizedPath);

            if (result == false)
            {
                return(false);
            }
            // В ином случае мы добавляем записи в базу данных
            if (image.IsAvatar)
            {
                imageService.DeleteOldAvatar(image.OwnerId);
            }
            userService.AddImageToUser(image, image.OwnerId);
            return(true);
        }
Example #4
0
 protected virtual ImageViewModel MapImageResult(ImageDescriptionDTO image)
 {
     Mapper.CreateMap <ImageDescriptionDTO, ImageViewModel>();
     return(Mapper.Map <ImageDescriptionDTO, ImageViewModel>(image));
 }