Ejemplo n.º 1
0
        private IEnumerable <AuditUser> GetAuditUserData(GetAuditUsersRequest request, IDictionary <string, SortOrder> sortingDictionary, out int TotalRecords)
        {
            var data = DataContext.AuditUsers.AsQueryable();

            if (request.LoginId.HasValue && request.LoginId != default(int))
            {
                data = data.Where(x => x.UserLogin.Id == request.LoginId);
            }
            if (!string.IsNullOrEmpty(request.Search) && !string.IsNullOrWhiteSpace(request.Search))
            {
                data = data.Where(x => x.Url.Contains(request.Search) || x.ActionName.Contains(request.Search) || x.ControllerName.Contains(request.Search) || x.UserLogin.User.Username.Contains(request.Search));
            }
            //if (request.StartDate != null)
            //{
            //    data = data.Where(x => x.TimeAccessed >= request.StartDate);
            //}
            //if (request.EndDate != null)
            //{
            //    data = data.Where(x => x.TimeAccessed <= request.EndDate);
            //}

            //data = data.GroupBy(x => x.UserLogin.Id).Select(y => y.OrderByDescending(x => x.TimeAccessed).FirstOrDefault())
            //    .OrderByDescending(x => x.TimeAccessed).Include(x => x.UserLogin).Include(x => x.UserLogin.User);

            foreach (var sortOrder in sortingDictionary)
            {
                switch (sortOrder.Key)
                {
                case "User":
                    data = sortOrder.Value == SortOrder.Ascending
                            ? data.OrderByDescending(x => x.TimeAccessed).ThenBy(x => x.UserLogin.User.Username)
                            : data.OrderByDescending(x => x.TimeAccessed).ThenByDescending(x => x.UserLogin.User.Username);
                    break;

                case "ActionName":
                    data = sortOrder.Value == SortOrder.Ascending
                            ? data.OrderByDescending(x => x.TimeAccessed).ThenBy(x => x.ActionName)
                            : data.OrderByDescending(x => x.TimeAccessed).ThenByDescending(x => x.ActionName);
                    break;

                case "Controller":
                    data = sortOrder.Value == SortOrder.Ascending
                            ? data.OrderByDescending(x => x.TimeAccessed).ThenBy(x => x.ControllerName)
                            : data.OrderByDescending(x => x.TimeAccessed).ThenByDescending(x => x.ControllerName);
                    break;

                default:
                    data = data.OrderByDescending(x => x.TimeAccessed);
                    break;
                }
            }
            TotalRecords = data.Count();
            return(data);
        }
Ejemplo n.º 2
0
        public AuditUsersResponse GetAuditUsers(GetAuditUsersRequest request)
        {
            int totalRecords;
            var data = GetAuditUserData(request, request.SortingDictionary, out totalRecords);

            if (request.Take != -1)
            {
                data = data.Skip(request.Skip).Take(request.Take);
            }
            return(new AuditUsersResponse
            {
                TotalRecords = totalRecords,
                AuditUsers = data.ToList().MapTo <AuditUsersResponse.AuditUser>()
            });
        }