private async Task HandleRoleChange(bool isUserCurrentlyAdmin, User oldUser, UserBookingViewModel newUser)
        {
            if (isUserCurrentlyAdmin != newUser.IsAdmin)
            {
                if (newUser.IsAdmin)
                {
                    await _userManager.RemoveFromRoleAsync(oldUser.AspNetUserId, UserConsts.USER_ROLE);

                    await _userManager.AddToRoleAsync(oldUser.AspNetUserId, UserConsts.ADMIN_ROLE);
                }
                else
                {
                    await _userManager.RemoveFromRoleAsync(oldUser.AspNetUserId, UserConsts.ADMIN_ROLE);

                    await _userManager.AddToRoleAsync(oldUser.AspNetUserId, UserConsts.USER_ROLE);
                }
            }
        }
        public async Task <ActionResult> Edit(UserBookingViewModel usrBookingViewModel)
        {
            if (ModelState.IsValid)
            {
                var user = _accountService.Get(usrBookingViewModel.UserId);
                var isUserCurrentlyAdmin = await _userManager.IsInRoleAsync(user.AspNetUserId, UserConsts.ADMIN_ROLE);
                await HandleRoleChange(isUserCurrentlyAdmin, user, usrBookingViewModel);

                var aspNetUser = await _userManager.FindByIdAsync(usrBookingViewModel.AspNetUserId);

                if (aspNetUser.PhoneNumber != usrBookingViewModel.PhoneNumber)
                {
                    aspNetUser.PhoneNumber = usrBookingViewModel.PhoneNumber;
                    await _userManager.UpdateAsync(aspNetUser);
                }

                var result2 = await _accountService.UpdateAsync(Mapper.Map <UserBookingViewModel, User>(usrBookingViewModel));

                return(RedirectToAction("Index"));
            }
            return(View(usrBookingViewModel));
        }