public ActionResult ChangeUserRole(CompanyUsersVm model)
 {
     try
     {
         if (model.ActionToTake == "add")
         {
             UserManager.AddToRole(model.Id.ToString(), model.Role.Trim());
         }
         else if (model.ActionToTake == "remove")
         {
             UserManager.RemoveFromRole(model.Id.ToString(), model.Role.Trim());
         }
         Db.SaveChanges();
         return(Json(new JsonResponse()
         {
             IsSucess = true
         }, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json(new JsonResponse()
         {
             IsSucess = false, ErrorMessage = ex.Message
         }, JsonRequestBehavior.AllowGet));
     }
 }
        public string GetActionsUsers(CompanyUsersVm user)
        {
            StringBuilder sb = new StringBuilder();

            if (user.Status == "Active")
            {
                sb.AppendFormat(@"<a href='#' id='btnLock' class='btn btn-default btnLock' data-tooltip='tooltip' data-id='{0}' title='Lock'>
                             <i class='fa fa-lock' aria-hidden='true'></i>
                             </span>
                          </a>", user.Id.ToString());
            }
            else
            {
                sb.AppendFormat(@"<a href='#' id='btnUnLock' class='btn btn-default btnLock' data-tooltip='tooltip' data-id='{0}' title='Un-Lock'>
                             <i class='fa fa-unlock' aria-hidden='true'></i>
                             </span>
                          </a>", user.Id.ToString());
            }
            sb.AppendFormat(@"<a href='#' id='btnOpenChangePassword' name='btnOpenChangePassword' class='btn btn-default btnOpenChangePassword' title='Change Password'
                                       data-toggle = 'modal' data-target = '#myModal' data-id = '{0}' data-user = '******' ><i class='fa fa-key' aria-hidden='true'></i></a>
                        <a class='btnDelete' data-id={0} href='#' data-tooltip='tooltip' title='Delete'>
                        <span class='glyphicon glyphicon-trash'></span>
                        </a>", user.Id.ToString(), user.Name);
            return(sb.ToString());
        }
        public string GetRoles(CompanyUsersVm user)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat(@"<select class='roles' multiple='multiple' style='width:100%' id='{0}'>", user.Id);
            foreach (var item in user.Roles)
            {
                var selected = item.Selected ? "selected" : "";
                sb.AppendFormat(@"<option value = '{0}' {1} > {2} </option>", item.Value, selected, item.Text);
            }
            sb.AppendFormat(@"</select>");
            return(sb.ToString());
        }
Exemple #4
0
        public ActionResult SaveUser(CompanyUsersVm model)
        {
            try
            {
                var user = UserManager.FindById(model.Id.ToString());
                switch (model.Action)
                {
                case "lock":
                    if (user.Status == (int)UserStatus.Active)
                    {
                        user.Status            = (int)UserStatus.Locked;
                        user.LockoutEndDateUtc = new DateTime(9999, 12, 30);
                        bool a = UserManager.IsLockedOut(user.Id);
                    }
                    else if (user.Status == (int)UserStatus.Locked)
                    {
                        user.Status            = (int)UserStatus.Active;
                        user.LockoutEndDateUtc = null;
                        bool a = UserManager.IsLockedOut(user.Id);
                    }
                    break;

                case "type":
                    switch (user.UserType)
                    {
                    case (int)UserType.Admin:
                        user.UserType = (int)UserType.User;
                        break;

                    case (int)UserType.User:
                        user.UserType = (int)UserType.Admin;
                        break;
                    }
                    break;

                case "tests":
                    user.IsTestsCreatives = !user.IsTestsCreatives;
                    break;

                case "password":
                    if (!string.IsNullOrEmpty(model.Password))
                    {
                        string         resetToken           = UserManager.GeneratePasswordResetToken(user.Id);
                        IdentityResult passwordChangeResult = UserManager.ResetPassword(user.Id, resetToken, model.Password);
                        if (passwordChangeResult != IdentityResult.Success)
                        {
                            throw new AdsException(passwordChangeResult.Errors.FirstOrDefault());
                        }
                    }
                    break;

                case "delete":
                    UserManager.Delete(user);
                    break;
                }
                Db.SaveChanges();
                return(Json(new JsonResponse()
                {
                    IsSucess = true
                }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new JsonResponse()
                {
                    IsSucess = false, ErrorMessage = ex.Message
                },
                            JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult SaveUser(CompanyUsersVm model)
        {
            try
            {
                var user = UserManager.FindById(model.Id.ToString());
                switch (model.ActionToTake)
                {
                case "lock":
                    if (user.Status == (int)UserStatusEnum.Active)
                    {
                        user.Status            = (int)UserStatusEnum.Locked;
                        user.LockoutEndDateUtc = new DateTime(9999, 12, 30);
                        bool a = UserManager.IsLockedOut(user.Id);
                    }
                    else if (user.Status == (int)UserStatusEnum.Locked)
                    {
                        user.Status            = (int)UserStatusEnum.Active;
                        user.LockoutEndDateUtc = null;
                        bool a = UserManager.IsLockedOut(user.Id);
                    }
                    break;

                case "password":
                    if (!string.IsNullOrEmpty(model.Password))
                    {
                        string         resetToken           = UserManager.GeneratePasswordResetToken(user.Id);
                        IdentityResult passwordChangeResult = UserManager.ResetPassword(user.Id, resetToken, model.Password);
                        if (passwordChangeResult != IdentityResult.Success)
                        {
                            throw new Exception(passwordChangeResult.Errors.FirstOrDefault());
                        }
                    }
                    break;

                case "create":
                    var newUser = new WFPUser()
                    {
                        Id        = Guid.NewGuid().ToString(),
                        CreatedAt = DateTime.Now,
                        UserName  = model.Name.Trim(),
                        Email     = model.Name.Trim() + "@wfp.org",
                        FirstName = model.FirstName,
                        LastName  = model.LastName,
                    };
                    var result = UserManager.CreateAsync(newUser, model.Password);
                    if (result.Result != IdentityResult.Success)
                    {
                        throw new Exception("There is an error while creating user." + result.Result.Errors.FirstOrDefault());
                    }
                    break;

                case "delete":
                    UserManager.Delete(user);
                    break;
                }
                Db.SaveChanges();
                return(Json(new JsonResponse()
                {
                    IsSucess = true
                }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new JsonResponse()
                {
                    IsSucess = false, ErrorMessage = ex.Message
                },
                            JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult InitializeUsers([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            List <CompanyUsersVm> users = new List <CompanyUsersVm>();

            List <WFPUser>        usersList = UserManager.Users.ToList();
            List <SelectItemPair> roles     = RoleManager.Roles.Select(x => new SelectItemPair()
            {
                Text = x.Name, Value = x.Id
            }).ToList();

            foreach (var user in usersList)
            {
                var u = new CompanyUsersVm()
                {
                    Id        = Guid.Parse(user.Id),
                    Name      = user.UserName,
                    FirstName = user.FirstName,
                    LastName  = user.LastName,
                    Status    = ((UserStatusEnum)user.Status).ToString(),
                };

                UserManager.GetRoles(user.Id);

                List <SelectItemPair> rolesThisUser = new List <SelectItemPair>();
                foreach (var role in roles)
                {
                    SelectItemPair roleThisUser = new SelectItemPair()
                    {
                        Text = role.Text, Value = role.Value
                    };
                    if (user.Roles.Select(x => x.RoleId).Contains(role.Value))
                    {
                        roleThisUser.Selected = true;
                    }
                    rolesThisUser.Add(roleThisUser);
                }
                u.Roles = rolesThisUser;
                users.Add(u);
            }

            var totalCount = users.Count();

            #region Filtering
            // Apply filters for searching
            if (requestModel.Search.Value != string.Empty)
            {
                var value = requestModel.Search.Value.Trim();
                users = users.Where(p => p.Name.Contains(value)).ToList();
            }

            var filteredCount = users.Count();

            #endregion Filtering

            #region Sorting
            // Sorting
            var sortedColumns = requestModel.Columns.GetSortedColumns();
            var orderByString = String.Empty;

            if (sortedColumns.Count() > 0)
            {
                foreach (var column in sortedColumns)
                {
                    if (column.Data == "Name")
                    {
                        users = column.SortDirection.ToString() == "Ascendant" ?
                                users.OrderBy(x => x.Name).ToList() :
                                users.OrderByDescending(x => x.Name).ToList();
                    }

                    if (column.Data == "FirstName")
                    {
                        users = column.SortDirection.ToString() == "Ascendant" ?
                                users.OrderBy(x => x.FirstName).ToList() :
                                users.OrderByDescending(x => x.FirstName).ToList();
                    }

                    if (column.Data == "LastName")
                    {
                        users = column.SortDirection.ToString() == "Ascendant" ?
                                users.OrderBy(x => x.LastName).ToList() :
                                users.OrderByDescending(x => x.LastName).ToList();
                    }
                }
                orderByString = "Ordered";
            }

            if (orderByString == string.Empty)
            {
                users = users.OrderBy(x => x.Name).ToList();
            }
            #endregion Sorting

            // Paging
            if (requestModel.Length != -1)
            {
                users = users.Skip(requestModel.Start).Take(requestModel.Length).ToList();
            }

            var result = users.
                         ToList()
                         .Select(x => new
            {
                Id        = x.Id.ToString(),
                Name      = x.Name,
                FirstName = x.FirstName,
                LastName  = x.LastName,
                Status    = x.Status,
                Roles     = GetRoles(x),
                Actions   = GetActionsUsers(x),
            });

            return(Json(new DataTablesResponse
                            (requestModel.Draw, result, filteredCount, totalCount),
                        JsonRequestBehavior.AllowGet));
        }