public async Task <IActionResult> UserPhoto(UserPhotoViewModel userPhotoViewModel) { // -------- image file validations if (!ModelState.IsValid) { return(View(userPhotoViewModel)); } var ext = Path.GetExtension(userPhotoViewModel.UserImageFile.FileName); if (!ext.Equals(".jpg") && !ext.Equals(".png") && !ext.Equals(".jpeg") && !ext.Equals(".bmp")) { ModelState.TryAddModelError("", "The Image File only accepts files with the following extensions: .jpg, .png, .jpeg, .bmp"); return(View(userPhotoViewModel)); } // save image to root/image var rootPath = _hostEnvironment.WebRootPath; var fileName = Path.GetFileNameWithoutExtension(userPhotoViewModel.UserImageFile.FileName); var extension = Path.GetExtension(userPhotoViewModel.UserImageFile.FileName); var userPhotoName = fileName + DateTime.Now.ToString("yymmddssfff") + extension; string path = Path.Combine(rootPath, "image", userPhotoName); using (var fileStream = new FileStream(path, FileMode.Create)) { await userPhotoViewModel.UserImageFile.CopyToAsync(fileStream); } var currentUser = await _userManager.GetUserAsync(User); // ------- delete previous image from root/image if exists var previousImage = currentUser.UserImagePath; if (!string.IsNullOrEmpty(previousImage)) { if (System.IO.File.Exists(previousImage)) { System.IO.File.Delete(previousImage); } } // ------- save image path in database // var currentUser = await _userManager.GetUserAsync(User); currentUser.UserImagePath = path; await _userManager.UpdateAsync(currentUser); // UserImage userImage = new UserImage(); // userImage.ImageFileName = userImageViewModel.ImageName; // await _context.AddAsync(userImage); // await _context.SaveChangesAsync(); return(Redirect("https://localhost:5003/User/Change_Settings")); }
/// <summary> /// Updates the user photo. /// </summary> /// <param name="userPhoto">The user photo.</param> /// <returns></returns> public Response <UserPhotoViewModel> UpdateUserPhoto(UserPhotoViewModel userPhoto, bool isMyProfile) { var route = isMyProfile ? "UpdateMyProfilePhoto" : "UpdateUserPhoto"; string apiUrl = baseRoute + route; var response = communicationManager.Put <UserPhotoModel, Response <UserPhotoModel> >(userPhoto.ToModel(), apiUrl); return(response.ToViewModel()); }
public ActionResult UserPage() { var user = accountService.GetUserByUserName(HttpContext.User.Identity.Name).ToMvcUser(); var paging = photoService.GetPhotosPaging(user.Id, photoPageSize, 1).ToMvcPhotosPaging(); var mainPage = new UserPhotoViewModel { User = user, Photos = paging }; return(View(mainPage)); }
public virtual ActionResult Photo(IIntranetUser user, string profilePageUrl = null, string cssModificator = null, int photoWidth = 60) { var result = new UserPhotoViewModel { PhotoUrl = user.Photo, AltText = user.DisplayedName, ProfileUrl = profilePageUrl ?? string.Empty, CssModificator = cssModificator ?? string.Empty, PhotoWidth = photoWidth }; return(PartialView(UserPhotoViewPath, result)); }
public ActionResult DeletePhoto(int photoId) { var user = accountService.GetUserByUserName(User.Identity.Name)?.ToMvcUser(); photoService.Delete(photoId); var paging = photoService.GetPhotosPaging(user.Id, photoPageSize, 1).ToMvcPhotosPaging(); var userPage = new UserPhotoViewModel { User = user, Photos = paging }; return(View("UserPage", userPage)); }
public ActionResult PagingPhotos(int userId, int page = 1) { var user = accountService.GetByUserId(userId)?.ToMvcUser(); var paging = photoService.GetPhotosPaging(user.Id, photoPageSize, page).ToMvcPhotosPaging(); if (Request.IsAjaxRequest()) { return(PartialView("_Photos", paging)); } var mainPage = new UserPhotoViewModel { User = user, Photos = paging }; return(View("UserPage", mainPage)); }
public void AddUserPhoto_Failed() { // Arrange var userPhoto = new UserPhotoViewModel { UserID = -1, IsPrimary = true, PhotoID = 1, ForceRollback = true }; // Act var response = controller.AddUserPhoto(userPhoto, isMyProfile); // Assert Assert.IsTrue(response != null, "Response can't be null"); Assert.IsTrue(response.ResultCode != 0, "User photo is created for invalid data."); }
public void AddUserPhoto_Success() { // Arrange var userPhoto = new UserPhotoViewModel { UserID = 1, IsPrimary = true, PhotoID = 1, ForceRollback = true }; // Act var response = controller.AddUserPhoto(userPhoto, isMyProfile); // Assert Assert.IsTrue(response != null, "Response can't be null"); Assert.IsTrue(response.ResultCode == 0, "User photo could not be created."); }
public ActionResult ShowUser(int userId) { var user = accountService.GetByUserId(userId)?.ToMvcUser(); if (user == null) { return(HttpNotFound()); } var paging = photoService.GetPhotosPaging(user.Id, photoPageSize, 1).ToMvcPhotosPaging(); var mainPage = new UserPhotoViewModel { User = user, Photos = paging }; return(View("UserPage", mainPage)); }
public void UpdateUserPhoto_Failed() { // Arrange var userPhoto = new UserPhotoViewModel { UserPhotoID = -1, UserID = -1, IsPrimary = false, PhotoID = 1, ForceRollback = true }; // Act var response = controller.UpdateUserPhoto(userPhoto, isMyProfile); // Assert Assert.IsTrue(response != null, "Response can't be null"); Assert.IsTrue(response.RowAffected == 0, "User photo is updated for invalid data."); }
/// <summary> /// To the model. /// </summary> /// <param name="model">The model.</param> /// <returns></returns> public static UserPhotoModel ToModel(this UserPhotoViewModel model) { if (model == null) { return(null); } var entity = new UserPhotoModel { UserPhotoID = model.UserPhotoID, UserID = model.UserID, PhotoID = model.PhotoID, PhotoBLOB = model.PhotoBLOB, ThumbnailBLOB = model.ThumbnailBLOB, IsPrimary = model.IsPrimary, ModifiedOn = model.ModifiedOn, ForceRollback = model.ForceRollback }; return(entity); }
/// <summary> /// To the view model. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public static UserPhotoViewModel ToViewModel(this UserPhotoModel entity) { if (entity == null) { return(null); } var model = new UserPhotoViewModel { UserPhotoID = entity.UserPhotoID, UserID = entity.UserID, PhotoID = entity.PhotoID, PhotoBLOB = entity.PhotoBLOB, ThumbnailBLOB = entity.ThumbnailBLOB, IsPrimary = entity.IsPrimary, ModifiedOn = entity.ModifiedOn, ForceRollback = entity.ForceRollback }; return(model); }
public async Task <IHttpActionResult> ChangeImage(UserPhotoViewModel viewProfile) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userName = User.Identity.GetUserName(); var u = await GetApplicationUser(userName); if (u == null) { ModelState.AddModelError("", "You Need To Login"); return(BadRequest(ModelState)); } var imagePath = "none"; if (viewProfile.Picture.ToLower() == "none") { var result = _repo.UpdateUserImage(u.Id, null); } else { imagePath = ImageSaver.SaveImage(viewProfile.Picture); var result = _repo.UpdateUserImage(u.Id, imagePath); } return(Ok(imagePath)); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(BadRequest(ModelState)); } }
public async Task <IActionResult> Photo(UserPhotoViewModel userPhotoViewModel) { if (!ModelState.IsValid) { ModelState.AddModelError("", "there is no image or your image is not in correct format"); return(View()); } if (userPhotoViewModel.UserImageFile.Length > (1048576 * 2)) { ModelState.AddModelError("", "please Add an image which less than 2MB"); return(View()); } // find correct End Point from IdentityServer var identityServerClient1 = _httpClientFactory.CreateClient(); var discoveryDocument = await identityServerClient1.GetDiscoveryDocumentAsync("https://localhost:5005/"); if (discoveryDocument.IsError) { return(BadRequest()); } // var tokenResponse = await identityServerClient.RequestClientCredentialsTokenAsync( // new ClientCredentialsTokenRequest // { // Address = discoveryDocument.TokenEndpoint, // ClientId = "ClientId_MVC", // ClientSecret = "ClientSecret_MVC", // // Scope = "MovieApi" // }); // get access token var accessToken = await HttpContext.GetTokenAsync("access_token"); var idToken = await HttpContext.GetTokenAsync("id_token"); // call IdentityServer with access token to get Current logged in User Email var identityServerClient2 = _httpClientFactory.CreateClient(); identityServerClient2.SetBearerToken(accessToken); var response = await identityServerClient2.GetAsync(discoveryDocument.UserInfoEndpoint); if (!response.IsSuccessStatusCode) { return(Unauthorized()); } var content = await response.Content.ReadAsStringAsync(); var contentDictionary = JsonConvert.DeserializeObject <Dictionary <string, string> >(content); contentDictionary.TryGetValue("email", out string Email); // Call the identityServer to post user select image file try { var identityServerClient3 = _httpClientFactory.CreateClient(); // var requestContent = new MultipartFormDataContent(); byte[] ImageBytes; using (var br = new BinaryReader(userPhotoViewModel.UserImageFile.OpenReadStream())) { ImageBytes = br.ReadBytes((int)userPhotoViewModel.UserImageFile.OpenReadStream().Length); using (var requestContent = new MultipartFormDataContent()) { requestContent.Add(new StreamContent(new MemoryStream(ImageBytes)), "UserPhoto", userPhotoViewModel.UserImageFile.FileName); identityServerClient3.SetBearerToken(accessToken); var result = identityServerClient3.PostAsync("https://localhost:5005/Auth/UserPhoto", requestContent).Result; return(StatusCode((int)result.StatusCode)); //201 Created the request has been fulfilled. } } } catch (Exception e) { return(BadRequest()); // 400 is bad request } }
public Response <UserPhotoViewModel> UpdateUserPhoto(UserPhotoViewModel userPhoto, bool isMyProfile) { return(_userPhotoRepository.UpdateUserPhoto(userPhoto, isMyProfile)); }