Пример #1
0
 public SearchResult <PurchaserSearchItem> PurchaserSearch(PurchaserSearchArgs args)
 {
     return(GetPurchaserResultFromDatabase(args));
 }
Пример #2
0
        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);
        }