/// <summary> /// Get list data using jquery datatable /// </summary> /// <param name="request">Jquery datatable request</param> /// <param name="userID">User identifier</param> /// <returns><string, object></returns> public Dictionary <string, object> List(CustomDataTableRequestHelper request, Guid userID) { Dictionary <string, object> _return = new Dictionary <string, object>(); try { //Declare response data to json object DataTableResponse <UserModel> _itemResponse = new DataTableResponse <UserModel>(); //List of data List <UserModel> _list = new List <UserModel>(); using (var _context = new TDHEntities()) { var _lData = _context.PROC_SYS_USER_List(this.SessionID, userID).ToList(); _itemResponse.draw = request.draw; _itemResponse.recordsTotal = _lData.Count; //Search if (request.search != null && !string.IsNullOrWhiteSpace(request.search.Value)) { string searchValue = request.search.Value.ToLower(); _lData = _lData.Where(m => m.user_name.ToLower().Contains(searchValue) || m.full_name.ToLower().Contains(searchValue) || m.role_name.ToLower().Contains(searchValue) || m.last_login.ToString().ToLower().Contains(searchValue)).ToList(); } //Add to list foreach (var item in _lData) { _list.Add(new UserModel() { ID = (Guid)item.id, Locked = item.locked, FullName = item.full_name, UserName = item.user_name, LastLoginString = item.last_login, RoleName = item.role_name }); } _itemResponse.recordsFiltered = _list.Count; IOrderedEnumerable <UserModel> _sortList = null; if (request.order != null) { foreach (var col in request.order) { switch (col.ColumnName) { case "FullName": _sortList = _sortList == null?_list.Sort(col.Dir, m => m.FullName) : _sortList.Sort(col.Dir, m => m.FullName); break; case "UserName": _sortList = _sortList == null?_list.Sort(col.Dir, m => m.UserName) : _sortList.Sort(col.Dir, m => m.UserName); break; case "LastLoginString": _sortList = _sortList == null?_list.Sort(col.Dir, m => m.LastLoginString) : _sortList.Sort(col.Dir, m => m.LastLoginString); break; case "RoleName": _sortList = _sortList == null?_list.Sort(col.Dir, m => m.RoleName) : _sortList.Sort(col.Dir, m => m.RoleName); break; } } _itemResponse.data = _sortList.Skip(request.start).Take(request.length).ToList(); } else { _itemResponse.data = _list.Skip(request.start).Take(request.length).ToList(); } _return.Add(DatatableCommonSetting.Response.DATA, _itemResponse); } _return.Add(DatatableCommonSetting.Response.STATUS, ResponseStatusCodeHelper.OK); } catch (Exception ex) { throw new ServiceException(FILE_NAME, MethodInfo.GetCurrentMethod().Name, userID, ex); } return(_return); }