public async Task <PhotoDto> Handle(Command request, CancellationToken cancellationToken) { var photoUploadResult = _photoStorage.AddPhoto(request.File); var user = await _context.Users .Include(u => u.Photos) .SingleOrDefaultAsync(u => u.UserName == _userAccessor.GetCurrentUsername()); var photo = new Photo { Url = photoUploadResult.Url, Id = photoUploadResult.PublicId }; if (!user.Photos.Any(p => p.IsMain)) { photo.IsMain = true; } user.Photos.Add(photo); var success = await _context.SaveChangesAsync() > 0; if (success) { return(_mapper.Map <Photo, PhotoDto>(photo)); } throw new Exception("Problem saving changes"); }
public async Task <ActionResult <PhotoDto> > Add(int vehicleId, [FromForm] IFormFile file) { var vehicle = await _vehicleRepository.Details(vehicleId, includeRelated : false); if (vehicle == null) { return(NotFound()); } if (file == null) { return(BadRequest("Null file")); } if (file.Length == 0) { return(BadRequest("Empty file")); } if (file.Length > _photoSettings.MaxBytes) { return(BadRequest("Max file size exceeded")); } if (!_photoSettings.IsSupported(file.FileName)) { return(BadRequest("Invalid file type.")); } var photoUploadResult = await _photoStorage.AddPhoto(file); var photo = new Photo { Id = photoUploadResult.PublicId, Url = photoUploadResult.Url }; vehicle.Photos.Add(photo); await _unitOfWork.CompleteAsync(); return(Mapper.Map <Photo, PhotoDto>(photo)); }