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(); }
/// <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); }
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); }
protected virtual ImageViewModel MapImageResult(ImageDescriptionDTO image) { Mapper.CreateMap <ImageDescriptionDTO, ImageViewModel>(); return(Mapper.Map <ImageDescriptionDTO, ImageViewModel>(image)); }