public async Task <IActionResult> AddNewPicture(Guid id) { ApplicationUser applicationUser = await _userManager.GetUserAsync(HttpContext.User); Guid currentUserId = new Guid(applicationUser.Id); if (!await _repository.ContainsUserAsync(currentUserId)) { return(RedirectToAction("MakeNewProfile", "Main")); } Album album = await _repository.GetAlbumAsync(id); if (album == null) { return(View("~/Views/Shared/InvalidAttempt.cshtml")); } else if (album.UserId != currentUserId) { return(View("~/Views/Shared/InvalidAttempt.cshtml")); } AddNewPictureVM addNewPictureVM = new AddNewPictureVM { AlbumId = id }; return(View(addNewPictureVM)); }
public async Task <IActionResult> AddNewPicture(AddNewPictureVM model) { var validImageTypes = new string[] { "image/gif", "image/jpeg", "image/pjpeg", "image/png" }; if (ModelState.IsValid) { if (!validImageTypes.Contains(model.Picture.ContentType)) { ModelState.AddModelError("CustomError", "Please choose either a GIF, JPG or PNG image."); model.Picture = null; return(View(model)); } else { ApplicationUser applicationUser = await _userManager.GetUserAsync(HttpContext.User); Guid currentUserId = new Guid(applicationUser.Id); if (!await _repository.ContainsUserAsync(currentUserId)) { return(RedirectToAction("MakeNewProfile", "Main")); } BinaryReader reader = new BinaryReader(model.Picture.OpenReadStream()); byte[] data = reader.ReadBytes((int)model.Picture.Length); Album album = await _repository.GetAlbumAsync(model.AlbumId); var uploader = new AzureStorageUtility(_storageAccountName, _storageAccountKey); Picture picture = await uploader.Upload(_storageContainerName, data); picture.UserId = currentUserId; picture.Description = model.Description; picture.Album = album; await _repository.AddPictureAsync(picture, currentUserId); return(RedirectToAction("Index", album.Id)); } } return(View(model)); }