Esempio n. 1
0
        /// <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);
        }