public async Task CreateAvatarAsync(AvatarDto avatarDto) { using (var transaction = _photoSNDbContext.Database.BeginTransaction()) { try { var currentAvatar = await _photoSNDbContext.Avatars .FirstOrDefaultAsync(a => (a.UserId == avatarDto.UserId && a.IsCurrent == true)); if (currentAvatar != null) { currentAvatar.IsCurrent = false; } var newAvatar = _mapper.Map <Avatar>(avatarDto); newAvatar.IsCurrent = true; await _photoSNDbContext.Avatars.AddAsync(newAvatar); await _photoSNDbContext.SaveChangesAsync(); await transaction.CommitAsync(); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <Response> SetAvatar(AvatarDto avatarDto) { var user = await GetUser(); user.AvatarUrl = avatarDto.ImageUrl; await _userManager.UpdateAsync(user); return(new Response().WithSuccess()); }
private AvatarDto[] LoadAvatars() { AvatarDto[] avatars = new AvatarDto[9]; for (int i = 0; i < 9; i++) { AvatarDto avatar = new AvatarDto { Id = i, Url = "https://randomuser.me/api/portraits/lego/" + i + ".jpg" }; avatars[i] = avatar; } return(avatars); }
public async Task DeleteAvatarAsync(AvatarDto avatarDto) { using (var transaction = _photoSNDbContext.Database.BeginTransaction()) { try { var avatar = await _photoSNDbContext.Avatars .FirstOrDefaultAsync(a => (a.UserId == avatarDto.UserId && a.ImageId == avatarDto.ImageId)); if (avatar == null) { throw new ArgumentException("Avatar not found."); } if (avatar.IsCurrent == true) { var avatars = _photoSNDbContext.Avatars .Where(a => a.UserId == avatarDto.UserId) .ToList(); if (avatars.Count != 1) { if (avatars.Last().IsCurrent != true) { avatars.Last().IsCurrent = true; } else { avatars[avatars.Count - 2].IsCurrent = true; } } } _photoSNDbContext.Avatars.Remove(avatar); await _photoSNDbContext.SaveChangesAsync(); await transaction.CommitAsync(); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } if (!ManageAvatarViewModel.AvatarImage.ContentType.Contains("image")) { ModelState.AddModelError("FileType", "File type should be image."); } if (!ModelState.IsValid) { await LoadAsync(user); return(Page()); } var guid = Guid.NewGuid(); await _imageHelper.SaveAvatarAsync(ManageAvatarViewModel.AvatarImage, guid); var createImageDto = new CreateImageDto { Guid = guid, UserId = user.Id, MimeType = ManageAvatarViewModel.AvatarImage.ContentType }; var newImageId = await _photoSNRepository.CreateImageAsync(createImageDto); var createAvatarDto = new AvatarDto { UserId = user.Id, ImageId = newImageId }; await _photoSNRepository.CreateAvatarAsync(createAvatarDto); await _signInManager.RefreshSignInAsync(user); StatusMessage = "Your profile picture has been updated"; return(RedirectToPage()); }
public async Task ChangeCurrentAvatarAsync(AvatarDto avatarDto) { using (var transaction = _photoSNDbContext.Database.BeginTransaction()) { try { var avatar = await _photoSNDbContext.Avatars .FirstOrDefaultAsync(a => (a.UserId == avatarDto.UserId && a.ImageId == avatarDto.ImageId)); if (avatar == null) { throw new ArgumentException("Avatar not found."); } if (avatar.IsCurrent) { throw new InvalidOperationException("Avatar is already current."); } var currentAvatar = await _photoSNDbContext.Avatars .FirstOrDefaultAsync(a => (a.UserId == avatarDto.UserId && a.IsCurrent == true)); if (avatar != null) { currentAvatar.IsCurrent = false; } avatar.IsCurrent = true; await _photoSNDbContext.SaveChangesAsync(); await transaction.CommitAsync(); } catch (Exception e) { transaction.Rollback(); throw e; } } }
public async Task <IActionResult> SetAvatar(AvatarDto avatarDto) { return(this.GenerateResponse(await _userService.SetAvatar(avatarDto))); }