public async Task <ActionResult> Edit(int?id)
        {
            if (id.HasValue)
            {
                try
                {
                    var userFound = _userRepo.Get(id.Value);
                    var rolesList = UserIdentityManager.GetRoles();

                    await Task.WhenAll(userFound, rolesList);

                    if (userFound.Result == null)
                    {
                        return(HttpNotFound());
                    }

                    if (rolesList.Result == null)
                    {
                        return(HttpNotFound());
                    }

                    model.InputModel = userFound.Result;
                    model.rolesList  = rolesList.Result;
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError
                        (string.Empty, ex.Message);
                }
                return(View(model));
            }

            return(HttpNotFound());
        }
        public async Task <ActionResult> Register()
        {
            var model = new RegisterViewModel
            {
                rolesList       = await UserIdentityManager.GetRoles(),
                registeringUser = new OperatingUser()
            };

            return(View(model));
        }
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var currentLoggedInUserId = User.Identity.GetUserId();
                model.registeringUser.RegistrationDate = DateTime.Now;
                model.registeringUser.UpdatedDate      = DateTime.Now;
                var user = new ApplicationUser
                {
                    UserName       = model.Email,
                    Email          = model.Email,
                    registeredUser = model.registeringUser
                };


                if (currentLoggedInUserId != null)
                {
                    var userRegistrationResult = await UserIdentityManager.
                                                 CreateIdnetityUser(user, model.Password, currentLoggedInUserId);

                    if (userRegistrationResult.All(res => res.Succeeded))
                    {
                        return(RedirectToAction("Index", "UserOperations"));
                    }
                    AddErrors(userRegistrationResult);
                }
            }

            //Assigning models porperties before redirecting to the registration form
            model = new RegisterViewModel
            {
                registeringUser = model.registeringUser,
                rolesList       = await UserIdentityManager.GetRoles()
            };
            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public async Task <ActionResult> Edit(OperatingUser inputModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var currentLoggedUserId = User.Identity.GetUserId();

                    var currentLoggedUserRes = await UserIdentityManager.GetUserById
                                                   (currentLoggedUserId);


                    var userMappedRes = inputModel;
                    userMappedRes.UserUpdatorId = currentLoggedUserRes.registeredUser.ID;
                    userMappedRes.UpdatedDate   = DateTime.Now;

                    var identityUser = await UserIdentityManager
                                       .GetUserFromModelId(userMappedRes.ID);

                    if (identityUser != null)
                    {
                        var result = await UserIdentityManager.Changerole
                                         (identityUser, userMappedRes.RoleID);

                        userMappedRes.IsActive = true;

                        if (userMappedRes.RoleID != RoleNames.AGENT)
                        {
                            userMappedRes.IsVerified = true;
                        }



                        var res = await _userRepo.Update(userMappedRes);

                        if (res > 0)
                        {
                            return(RedirectToAction("Details",
                                                    new { id = userMappedRes.ID }));
                        }
                        else
                        {
                            model.InputModel = inputModel;
                            model.rolesList  = await UserIdentityManager.GetRoles();

                            return(View("Edit", model));
                        }
                    }
                }
                catch (Exception ex)
                {
                    model.InputModel = inputModel;
                    model.rolesList  = await UserIdentityManager.GetRoles();

                    ModelState.AddModelError(string.Empty, ex.Message);

                    return(View("Edit", model));
                }
            }
            model.InputModel = inputModel;
            model.rolesList  = await UserIdentityManager.GetRoles();

            return(View("Edit", model));
        }