Example #1
0
 public IActionResult EditUser(string userId)
 {
     var user = _dataAccess.GetUser(userId);
     var tenantId = user.GetTenantId();
     var viewModel = new EditUserViewModel()
     {
         UserId = userId,
         UserName = user.UserName,
         AssociatedSkills = user.AssociatedSkills,
         IsTenantAdmin = user.IsTenantAdmin(),
         Tenant = tenantId != null ? _dataAccess.GetTenant(tenantId.Value) : null
     };
     return View(viewModel).WithSkills(_dataAccess);
 }
Example #2
0
        public async Task<IActionResult> EditUser(EditUserViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return View(viewModel).WithSkills(_dataAccess);
            }

            //Skill associations
            var user = _dataAccess.GetUser(viewModel.UserId);
            user.AssociatedSkills.RemoveAll(usk => viewModel.AssociatedSkills == null || !viewModel.AssociatedSkills.Any(msk => msk.SkillId == usk.SkillId));
            if (viewModel.AssociatedSkills != null)
            {
                user.AssociatedSkills.AddRange(viewModel.AssociatedSkills.Where(msk => !user.AssociatedSkills.Any(usk => usk.SkillId == msk.SkillId)));
            }
            if (user.AssociatedSkills != null && user.AssociatedSkills.Count > 0)
            {
                user.AssociatedSkills.ForEach(usk => usk.UserId = user.Id);
            }
            await _dataAccess.UpdateUser(user);

            var tenantAdminClaim = new Claim(Security.ClaimTypes.UserType, "TenantAdmin");
            if (viewModel.IsTenantAdmin)
            {
                //add tenant admin claim
                var result = await _userManager.AddClaimAsync(user, tenantAdminClaim);
                if (result.Succeeded)
                {
                    var callbackUrl = Url.Action("Login", "Admin", new { Email = user.Email }, protocol: HttpContext.Request.Scheme);
                    await _emailSender.SendEmailAsync(user.Email, "Account Approval", "Your account has been approved by an administrator. Please <a href=" + callbackUrl + ">Click here to Log in</a>");
                }
                else
                {
                    return Redirect("Error");
                }
            }
            else if (user.IsTenantAdmin())
            {
                //remove tenant admin claim
                var result = await _userManager.RemoveClaimAsync(user, tenantAdminClaim);
                if (!result.Succeeded)
                {
                    return Redirect("Error");
                }
            }

            return RedirectToAction(nameof(Index));
        }