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());
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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.");
        }
Exemplo n.º 9
0
        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.");
        }
Exemplo n.º 11
0
        /// <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);
        }
Exemplo n.º 12
0
        /// <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);
        }
Exemplo n.º 13
0
        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));
            }
        }
Exemplo n.º 14
0
        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));
 }