public async Task <IActionResult> DeleteUser(string id)
        {
            var user = await Usermanager.FindByIdAsync(id);

            if (user == null)
            {
                ViewBag.ErrorMessage = $"User with Id = {id} cannot be found";
                return(View("NotFound"));
            }
            else
            {
                if (await Usermanager.IsInRoleAsync(user, "Admin") || await Usermanager.IsInRoleAsync(user, "Employee"))
                {
                    var claims = await Usermanager.GetClaimsAsync(user);

                    var claimResult = await Usermanager.RemoveClaimsAsync(user, claims);

                    if (!claimResult.Succeeded)
                    {
                        ModelState.AddModelError("", "Cannot remove user existing claims");
                        return(View("ListUsers"));
                    }
                    var roles = await Usermanager.GetRolesAsync(user);

                    var RolesResult = await Usermanager.RemoveFromRolesAsync(user, roles);

                    if (!RolesResult.Succeeded)
                    {
                        ModelState.AddModelError("", "Cannot remove user existing roles");
                        return(View("ListUsers"));
                    }

                    user.isactive = false;
                    var result1 = await Usermanager.UpdateAsync(user);

                    if (result1.Succeeded)
                    {
                        return(RedirectToAction("ListUsers"));
                    }
                    foreach (var error in result1.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                    return(View("ListUsers"));
                }
                var result = await Usermanager.DeleteAsync(user);

                if (result.Succeeded)
                {
                    return(RedirectToAction("ListUsers"));
                }

                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("", error.Description);
                }

                return(View("ListUsers"));
            }
        }
        public async Task <IActionResult> EditUser(EditUserViewModel model)
        {
            var user = await Usermanager.FindByIdAsync(model.Id);

            if (User.IsInRole("Admin") || User.IsInRole("Super Admin"))
            {
                var LoginUser = await Usermanager.GetUserAsync(User);

                if (!User.HasClaim("Edit User", "true") && LoginUser.Id != model.Id)
                {
                    return(Forbid());
                }
            }
            if (user == null)
            {
                ViewBag.ErrorMessage = $"User with Id = {model.Id} cannot be found";
                return(View("NotFound"));
            }
            else
            {
                user.Email        = model.Email;
                user.FullName     = model.FullName;
                user.PhoneNumber  = model.PhoneNumber;
                user.StreetAdress = model.StreetAdress;
                user.store_id     = model.store_id;
                user.City         = model.cityId;
                if (model.Photo != null)
                {
                    if (model.Existingphotopath != null)
                    {
                        string filepath = Path.Combine(hostingEnvironment.WebRootPath, "Image", model.Existingphotopath);
                        System.IO.File.Delete(filepath);
                    }
                    user.Photopath = util.ProcessPhotoproperty(model.Photo);
                }
                var result = await Usermanager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    if (User.IsInRole("Admin") || User.IsInRole("Super Admin") || User.IsInRole("Employee"))
                    {
                        return(RedirectToAction("GetUserById", new { id = user.Id }));
                    }
                    else
                    {
                        return(RedirectToAction("~/Views/Home/Profile.cshtml"));
                    }
                }

                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("", error.Description);
                }

                return(View(model));
            }
        }