Ejemplo n.º 1
0
        private IEnumerable <UserLogin> SortUserData(GetAuditUserLoginsRequest request, IDictionary <string, SortOrder> sortingDictionary, out int TotalRecords)
        {
            var data = DataContext.UserLogins.Include(x => x.AuditUsers).Include(x => x.User).AsQueryable();

            if (!string.IsNullOrEmpty(request.Search) && !string.IsNullOrWhiteSpace(request.Search))
            {
                data = data.Where(x => x.User.Username.Contains(request.Search) || x.HostName.Contains(request.Search) || x.IpAddress.Contains(request.Search));
            }
            if (request.StartDate != null)
            {
                data = data.Where(x => DbFunctions.TruncateTime(x.LastLogin) >= request.StartDate.Date);
            }
            if (request.EndDate != null)
            {
                data = data.Where(x => DbFunctions.TruncateTime(x.LastLogin) <= request.EndDate.Date);
            }

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

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

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

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

                default:
                    data = data.OrderByDescending(x => x.LastLogin);
                    break;
                }
            }

            TotalRecords = data.Count();
            return(data);
        }
Ejemplo n.º 2
0
        public AuditUserLoginsResponse GetUserLogins(GetAuditUserLoginsRequest request)
        {
            int totalRecord = 0;
            var data        = SortUserData(request, request.SortingDictionary, out totalRecord);

            if (request.Take != -1)
            {
                data = data.Skip(request.Skip).Take(request.Take);
            }
            return(new AuditUserLoginsResponse
            {
                UserLogins = data.ToList().MapTo <AuditUserLoginsResponse.UserLogin>(),
                TotalRecords = totalRecord
            });
        }