public SearchResult <PurchaserSearchItem> PurchaserSearch(PurchaserSearchArgs args) { return(GetPurchaserResultFromDatabase(args)); }
public SearchResult <PurchaserSearchItem> GetPurchaserResultFromDatabase(PurchaserSearchArgs args) { // claimStatus: // All = 0 // Unclaimed = 1 // Claimed = 2 // Claimedby = 3 // orderStatus: // NotSpecified = 0 // Unordered = 1 // Ordered = 2 var query = DataSession.Query <Ordering.PurchaserSearch>(); var statusIds = args.GetStatusIds(); if (statusIds != null && statusIds.Length > 0) { query = query.Where(x => statusIds.Contains(x.StatusID)); } int totalRecords = query.Count(); if (args.StartDate.HasValue) { query = query.Where(x => x.CreatedDate >= args.StartDate.Value); } if (args.EndDate.HasValue) { query = query.Where(x => x.CreatedDate < args.EndDate.Value); } switch (args.ClaimStatus) { case PurchaserClaimStatus.Unclaimed: query = query.Where(x => !x.PurchaserID.HasValue); break; case PurchaserClaimStatus.Claimed: query = query.Where(x => x.PurchaserID.HasValue); break; case PurchaserClaimStatus.ClaimedBy: query = query.Where(x => x.PurchaserID == args.PurchaserClientID); break; } switch (args.OrderStatus) { case PurchaserOrderStatus.Unordered: query = query.Where(x => (x.RealPO == null || x.RealPO == "")); break; case PurchaserOrderStatus.Ordered: query = query.Where(x => (x.RealPO != null && x.RealPO != "")); break; } if (args.PurchaserClientID > 0 && args.ClaimStatus == PurchaserClaimStatus.All) { query = query.Where(x => x.PurchaserID == args.PurchaserClientID); } if (args.CreatorClientID > 0) { query = query.Where(x => x.ClientID == args.CreatorClientID); } if (args.POID > 0) { query = query.Where(x => x.POID == args.POID); } if (!string.IsNullOrEmpty(args.RealPO)) { query = query.Where(x => x.RealPO.Contains(args.RealPO)); } int recordsFiltered = query.Count(); if (args.Length > 0) { query = query.Skip(args.Start).Take(args.Length); } else { query = query.Skip(args.Start); } var data = query.Select(x => new PurchaserSearchItem() { POID = x.POID, StatusID = x.StatusID, CreatedDate = x.CreatedDate, ClientID = x.ClientID, DisplayName = x.DisplayName, PurchaserID = x.PurchaserID, PurchaserName = x.PurchaserDisplayName, TotalPrice = x.Total, RealPO = x.RealPO }).ToArray(); var result = new SearchResult <PurchaserSearchItem>() { Draw = args.Draw, RecordsFiltered = 0, RecordsTotal = 0, Data = data }; return(result); }