protected static IQueryable<Member> MemberSort(IProviderMemberFilter filter, IQueryable<Member> query) { // Sort grid data. Sord is sort order, Sidx is the index to sort on if (filter.Sord == "desc") { // Sort by date if we don't know what this was query = query.OrderByDescending(aMember => aMember.SystemCreateDate); } else if (filter.Sord == "asc") { // Sort by date if we don't know what this was query = query.OrderBy(aMember => aMember.SystemCreateDate); } return query; }
public static List<ProviderMember> Load(IProviderMemberFilter filter) { int m = (filter.Page - 1); if (m < 0) m = 0; int skip = filter.Rows * m; IQueryable<Member> query = DbCtx.Instance.Members; query = MemberFilter(filter, query); query = MemberSort(filter, query); return query.Skip(skip) .Take(filter.Rows) .ToList() .ConvertAll(_converterEntityToProvider); }
protected static IQueryable<Member> MemberFilter(IProviderMemberFilter filter, IQueryable<Member> query) { int userNameType = (int)ProviderAlternateMemberId.AlternateType.UserName; int emailType = (int)ProviderAlternateMemberId.AlternateType.Email; int openIdType = (int)ProviderAlternateMemberId.AlternateType.OpenId; return query.Where(aMember => ((filter.Id == null || aMember.Id == filter.Id) && (filter.UserName == null || aMember.AlternateMemberIds .Where(altId => altId.AlternateType == userNameType && altId.AlternateId.Contains(filter.UserName)) .Count() > 0) && (filter.Email == null || aMember.AlternateMemberIds .Where(altId => altId.AlternateType == emailType && altId.AlternateId.Contains(filter.Email) && (filter.IsValidEmail == null || altId.IsValidated == filter.IsValidEmail)) .Count() > 0) && (filter.HasPassword == null || (aMember.Password != null) == filter.HasPassword) && (filter.HasOpenId == null || (aMember.AlternateMemberIds .Where(altId => altId.AlternateType == openIdType) .Count() > 0) == filter.HasOpenId) && (filter.IsSuperAdmin == null || aMember.IsSuperAdmin == filter.IsSuperAdmin) && (filter.IsMasterAdmin == null || aMember.IsMasterAdmin == filter.IsMasterAdmin) && (filter.IsMemberAdmin == null || aMember.IsUserAdmin == filter.IsMemberAdmin) && (filter.IsCategoryAdmin == null || aMember.IsCategoryAdmin == filter.IsCategoryAdmin) && (filter.IsArticleAdmin == null || aMember.IsArticleAdmin == filter.IsArticleAdmin) && (filter.IsActive == null || ((aMember.AlternateMemberIds .Where(altId => altId.AlternateType == openIdType) .Count() > 0) || (aMember.Password != null && (aMember.AlternateMemberIds .Where(altId => altId.IsValidated == true && (altId.AlternateType == emailType || altId.AlternateType == userNameType)) .Count() > 0)) ) == filter.IsActive) && (filter.IsBanned == null || aMember.IsBanned == filter.IsBanned) && (filter.IsSuperAdmin == null || aMember.IsSuperAdmin == filter.IsSuperAdmin)) ); }
public static int Count(IProviderMemberFilter filter) { IQueryable<Member> query = DbCtx.Instance.Members; query = MemberFilter(filter, query); return query.Count(); }