示例#1
0
        public async Task <PhotoDTO> AddPhotoAsync(PhotoAddDTO photoDTO, int userId)
        {
            if (photoDTO == null)
            {
                throw null;
            }

            var album = await _unit.Albums.GetByIdAsync(photoDTO.AlbumId);

            if (album == null)
            {
                throw new ValidationException("Album was not found");
            }

            if (album.UserId != userId)
            {
                throw new ValidationException("You don`t have permission to add photos to this album");
            }

            Photo photo = _mp.Map <Photo>(photoDTO);

            photo.Created = DateTime.Now;

            await _unit.Photos.AddAsync(photo);

            album.Updated = DateTime.Now;
            _unit.Albums.Update(album);

            await _unit.SaveAsync();

            return(_mp.Map <PhotoDTO>(photo));
        }
示例#2
0
        public async Task <ActionResult> PostPhoto(int id, [FromBody] PhotoAddDTO photoAddDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != photoAddDTO.AlbumId)
            {
                return(BadRequest());
            }

            PhotoDTO photoDTO;

            try
            {
                photoDTO = await _photoService.AddPhotoAsync(photoAddDTO, UserId);
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }

            return(Ok(photoDTO));
        }
示例#3
0
        public async Task AddPhotoAsync_Should_AddPhotoToUow()
        {
            var dto = new PhotoAddDTO {
                AlbumId = 1, Name = "name", Path = "path"
            };

            mockUow.Setup(uow => uow.Albums.GetByIdAsync(dto.AlbumId)).ReturnsAsync(new Album());
            mockUow.Setup(uow => uow.Photos.AddAsync(It.Is <Photo>(p => p.Name == dto.Name))).Verifiable();

            await service.AddPhotoAsync(dto);

            mockUow.Verify();
        }
示例#4
0
        public async Task <IActionResult> PostPhoto(string id, [FromForm] PhotoAddDTO photoModel)
        {
            if (id != User.FindFirst(JwtRegisteredClaimNames.Jti).Value)
            {
                return(Unauthorized());
            }

            var file         = photoModel.File;
            var uploadResult = new ImageUploadResult();

            if (file != null && file.Length > 0)
            {
                using (var stream = file.OpenReadStream())
                {
                    var uploadParams = new ImageUploadParams()
                    {
                        File           = new FileDescription(file.Name, stream),
                        Transformation = new Transformation().Width(500).Crop("fill").Gravity("face")
                    };
                    uploadResult = _cloudinary.Upload(uploadParams);
                }
            }
            photoModel.Url      = uploadResult.Uri.ToString();
            photoModel.PublicId = uploadResult.PublicId;
            var photo = _mapper.Map <Photo>(photoModel);
            var user  = await _context.Users.Include(p => p.Photos).FirstOrDefaultAsync(u => u.Id == id);

            if (!user.Photos.Any(p => p.IsMain))
            {
                photo.IsMain     = true;
                photo.IsApproved = true;
            }
            else
            {
                photo.IsMain = false;
            }
            user.Photos.Add(photo);
            if (await _context.SaveChangesAsync() > 0)
            {
                var addedPhoto = _mapper.Map <PhotoDetailsDTO>(photo);
                return(CreatedAtAction("GetPhoto", new { id = photo.Id }, addedPhoto));
            }
            else
            {
                return(BadRequest());
            }
        }
示例#5
0
        public async Task AddPhotoAsync_Should_UpdateAlbumInUow()
        {
            var photoDTO = new PhotoAddDTO {
                AlbumId = 1, Name = "name", Path = "path"
            };
            var album = new Album {
                UserId = 1, Name = "name", Description = "desc"
            };

            mockUow.Setup(uow => uow.Albums.GetByIdAsync(photoDTO.AlbumId)).ReturnsAsync(album);
            mockUow.Setup(uow => uow.Photos.AddAsync(It.IsAny <Photo>()));
            mockUow.Setup(uow => uow.Albums.Update(album)).Verifiable();

            await service.AddPhotoAsync(photoDTO);

            mockUow.Verify();
            album.Updated.Should().NotBe(default);
示例#6
0
        public async Task <PhotoDTO> AddPhotoAsync(PhotoAddDTO photoDTO)
        {
            var album = await unitOfWork.Albums.GetByIdAsync(photoDTO.AlbumId);

            helper.ThrowPhotoGalleryNotFoundExceptionIfModelIsNull(album);
            helper.ThrowPhotoGalleryNotAllowedExceptionIfDifferentId(album.UserId, photoDTO.UserId);

            var creationTime = DateTime.Now;

            var photo = mapper.Map <Photo>(photoDTO, opt => opt.Items["creationTime"] = creationTime);

            album.Updated = creationTime;

            await unitOfWork.Photos.AddAsync(photo);

            unitOfWork.Albums.Update(album);
            await unitOfWork.SaveAsync();

            return(mapper.Map <PhotoDTO>(photo));
        }