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)); }
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)); }
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(); }
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()); } }
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);
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)); }