/// <summary>
        /// Index view to all the user to manage their profile
        /// </summary>
        /// <returns>View</returns>
        public IActionResult Index()
        {
            var user = _userSettingRepo.Read(User.Identity.Name);

            // When the user is not found redirect to a login page
            if (user == null)
            {
                return(LocalRedirect("/Identity/Account/Login"));
            }

            // Get all the news categories that the user does not have
            var subtracted = _newsCategoryRepo.ReadAll().Where(n => !n.UserSettingNewsCategories.Select(news => news.NewsCategory.Name).Contains(n.Name)).ToList();

            // Get all the news categories of the user
            var newsCatList = _newsCategoryRepo.Read(user.Id).UserSettingNewsCategories.ToList();

            // Instantiate a new profile manager view model
            var userVM = new ProfileManageVM {
                Username  = user.User.UserName,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Language  = user.Language,
                Country   = user.Country,
                SubtractedNewsCategoriesOptions = subtracted,
                UserSettingNewsCategories       = newsCatList
            };

            return(View(userVM));
        }
        public IActionResult Edit(ProfileManageVM profileVM)
        {
            // When the model state is valid
            if (ModelState.IsValid)
            {
                // Get the current user setting
                var currentUser = _userSettingRepo.Read(User.Identity.Name);
                // Get the user setting from the identity user found
                var userSetting = profileVM.GetInstance(currentUser);

                // Update the user's setting profile to what the user wants
                _userSettingRepo.Update(User.Identity.Name, userSetting, profileVM.NewsCategoryNames);
                return(RedirectToAction("Index"));
            }

            return(View(profileVM));
        }