public async Task <int> Count(DirectSalesOrderContentFilter filter) { IQueryable <DirectSalesOrderContentDAO> DirectSalesOrderContents = DataContext.DirectSalesOrderContent.AsNoTracking(); DirectSalesOrderContents = DynamicFilter(DirectSalesOrderContents, filter); return(await DirectSalesOrderContents.CountAsync()); }
public async Task <List <DirectSalesOrderContent> > List(DirectSalesOrderContentFilter filter) { if (filter == null) { return(new List <DirectSalesOrderContent>()); } IQueryable <DirectSalesOrderContentDAO> DirectSalesOrderContentDAOs = DataContext.DirectSalesOrderContent.AsNoTracking(); DirectSalesOrderContentDAOs = DynamicFilter(DirectSalesOrderContentDAOs, filter); DirectSalesOrderContentDAOs = DynamicOrder(DirectSalesOrderContentDAOs, filter); List <DirectSalesOrderContent> DirectSalesOrderContents = await DynamicSelect(DirectSalesOrderContentDAOs, filter); return(DirectSalesOrderContents); }
private async Task <List <DirectSalesOrderContent> > DynamicSelect(IQueryable <DirectSalesOrderContentDAO> query, DirectSalesOrderContentFilter filter) { List <DirectSalesOrderContent> DirectSalesOrderContents = await query.Select(q => new DirectSalesOrderContent() { Id = filter.Selects.Contains(DirectSalesOrderContentSelect.Id) ? q.Id : default(long), DirectSalesOrderId = filter.Selects.Contains(DirectSalesOrderContentSelect.DirectSalesOrder) ? q.DirectSalesOrderId : default(long), ItemId = filter.Selects.Contains(DirectSalesOrderContentSelect.Item) ? q.ItemId : default(long), UnitOfMeasureId = filter.Selects.Contains(DirectSalesOrderContentSelect.UnitOfMeasure) ? q.UnitOfMeasureId : default(long), Quantity = filter.Selects.Contains(DirectSalesOrderContentSelect.Quantity) ? q.Quantity : default(long), PrimaryUnitOfMeasureId = filter.Selects.Contains(DirectSalesOrderContentSelect.PrimaryUnitOfMeasure) ? q.PrimaryUnitOfMeasureId : default(long), RequestedQuantity = filter.Selects.Contains(DirectSalesOrderContentSelect.RequestedQuantity) ? q.RequestedQuantity : default(long), PrimaryPrice = filter.Selects.Contains(DirectSalesOrderContentSelect.PrimaryPrice) ? q.PrimaryPrice : default(decimal), SalePrice = filter.Selects.Contains(DirectSalesOrderContentSelect.SalePrice) ? q.SalePrice : default(decimal), EditedPriceStatusId = filter.Selects.Contains(DirectSalesOrderContentSelect.EditedPriceStatus) ? q.EditedPriceStatusId : default(long), DiscountPercentage = filter.Selects.Contains(DirectSalesOrderContentSelect.DiscountPercentage) ? q.DiscountPercentage : default(decimal?), DiscountAmount = filter.Selects.Contains(DirectSalesOrderContentSelect.DiscountAmount) ? q.DiscountAmount : default(decimal?), GeneralDiscountPercentage = filter.Selects.Contains(DirectSalesOrderContentSelect.GeneralDiscountPercentage) ? q.GeneralDiscountPercentage : default(decimal?), GeneralDiscountAmount = filter.Selects.Contains(DirectSalesOrderContentSelect.GeneralDiscountAmount) ? q.GeneralDiscountAmount : default(decimal?), TaxPercentage = filter.Selects.Contains(DirectSalesOrderContentSelect.TaxPercentage) ? q.TaxPercentage : default(decimal?), TaxAmount = filter.Selects.Contains(DirectSalesOrderContentSelect.TaxAmount) ? q.TaxAmount : default(decimal?), Amount = filter.Selects.Contains(DirectSalesOrderContentSelect.Amount) ? q.Amount : default(decimal), Factor = filter.Selects.Contains(DirectSalesOrderContentSelect.Factor) ? q.Factor : default(long?), DirectSalesOrder = filter.Selects.Contains(DirectSalesOrderContentSelect.DirectSalesOrder) && q.DirectSalesOrder != null ? new DirectSalesOrder { Id = q.DirectSalesOrder.Id, Code = q.DirectSalesOrder.Code, OrganizationId = q.DirectSalesOrder.OrganizationId, BuyerStoreId = q.DirectSalesOrder.BuyerStoreId, PhoneNumber = q.DirectSalesOrder.PhoneNumber, StoreAddress = q.DirectSalesOrder.StoreAddress, DeliveryAddress = q.DirectSalesOrder.DeliveryAddress, SaleEmployeeId = q.DirectSalesOrder.SaleEmployeeId, CreatorId = q.DirectSalesOrder.CreatorId, OrderDate = q.DirectSalesOrder.OrderDate, DeliveryDate = q.DirectSalesOrder.DeliveryDate, RequestStateId = q.DirectSalesOrder.RequestStateId, EditedPriceStatusId = q.DirectSalesOrder.EditedPriceStatusId, Note = q.DirectSalesOrder.Note, SubTotal = q.DirectSalesOrder.SubTotal, GeneralDiscountPercentage = q.DirectSalesOrder.GeneralDiscountPercentage, GeneralDiscountAmount = q.DirectSalesOrder.GeneralDiscountAmount, TotalTaxAmount = q.DirectSalesOrder.TotalTaxAmount, TotalAfterTax = q.DirectSalesOrder.TotalAfterTax, PromotionCode = q.DirectSalesOrder.PromotionCode, PromotionValue = q.DirectSalesOrder.PromotionValue, Total = q.DirectSalesOrder.Total, RowId = q.DirectSalesOrder.RowId, } : null, EditedPriceStatus = filter.Selects.Contains(DirectSalesOrderContentSelect.EditedPriceStatus) && q.EditedPriceStatus != null ? new EditedPriceStatus { Id = q.EditedPriceStatus.Id, Code = q.EditedPriceStatus.Code, Name = q.EditedPriceStatus.Name, } : null, Item = filter.Selects.Contains(DirectSalesOrderContentSelect.Item) && q.Item != null ? new Item { Id = q.Item.Id, ProductId = q.Item.ProductId, Code = q.Item.Code, Name = q.Item.Name, ScanCode = q.Item.ScanCode, SalePrice = q.Item.SalePrice, RetailPrice = q.Item.RetailPrice, StatusId = q.Item.StatusId, Used = q.Item.Used, RowId = q.Item.RowId, } : null, PrimaryUnitOfMeasure = filter.Selects.Contains(DirectSalesOrderContentSelect.PrimaryUnitOfMeasure) && q.PrimaryUnitOfMeasure != null ? new UnitOfMeasure { Id = q.PrimaryUnitOfMeasure.Id, Code = q.PrimaryUnitOfMeasure.Code, Name = q.PrimaryUnitOfMeasure.Name, Description = q.PrimaryUnitOfMeasure.Description, StatusId = q.PrimaryUnitOfMeasure.StatusId, Used = q.PrimaryUnitOfMeasure.Used, RowId = q.PrimaryUnitOfMeasure.RowId, } : null, UnitOfMeasure = filter.Selects.Contains(DirectSalesOrderContentSelect.UnitOfMeasure) && q.UnitOfMeasure != null ? new UnitOfMeasure { Id = q.UnitOfMeasure.Id, Code = q.UnitOfMeasure.Code, Name = q.UnitOfMeasure.Name, Description = q.UnitOfMeasure.Description, StatusId = q.UnitOfMeasure.StatusId, Used = q.UnitOfMeasure.Used, RowId = q.UnitOfMeasure.RowId, } : null, }).ToListAsync(); return(DirectSalesOrderContents); }
private IQueryable <DirectSalesOrderContentDAO> DynamicFilter(IQueryable <DirectSalesOrderContentDAO> query, DirectSalesOrderContentFilter filter) { if (filter == null) { return(query.Where(q => false)); } if (filter.Id != null && filter.Id.HasValue) { query = query.Where(q => q.Id, filter.Id); } if (filter.DirectSalesOrderId != null && filter.DirectSalesOrderId.HasValue) { query = query.Where(q => q.DirectSalesOrderId, filter.DirectSalesOrderId); } if (filter.ItemId != null && filter.ItemId.HasValue) { query = query.Where(q => q.ItemId, filter.ItemId); } if (filter.UnitOfMeasureId != null && filter.UnitOfMeasureId.HasValue) { query = query.Where(q => q.UnitOfMeasureId, filter.UnitOfMeasureId); } if (filter.Quantity != null && filter.Quantity.HasValue) { query = query.Where(q => q.Quantity, filter.Quantity); } if (filter.PrimaryUnitOfMeasureId != null && filter.PrimaryUnitOfMeasureId.HasValue) { query = query.Where(q => q.PrimaryUnitOfMeasureId, filter.PrimaryUnitOfMeasureId); } if (filter.RequestedQuantity != null && filter.RequestedQuantity.HasValue) { query = query.Where(q => q.RequestedQuantity, filter.RequestedQuantity); } if (filter.PrimaryPrice != null && filter.PrimaryPrice.HasValue) { query = query.Where(q => q.PrimaryPrice, filter.PrimaryPrice); } if (filter.SalePrice != null && filter.SalePrice.HasValue) { query = query.Where(q => q.SalePrice, filter.SalePrice); } if (filter.EditedPriceStatusId != null && filter.EditedPriceStatusId.HasValue) { query = query.Where(q => q.EditedPriceStatusId, filter.EditedPriceStatusId); } if (filter.DiscountPercentage != null && filter.DiscountPercentage.HasValue) { query = query.Where(q => q.DiscountPercentage.HasValue).Where(q => q.DiscountPercentage, filter.DiscountPercentage); } if (filter.DiscountAmount != null && filter.DiscountAmount.HasValue) { query = query.Where(q => q.DiscountAmount.HasValue).Where(q => q.DiscountAmount, filter.DiscountAmount); } if (filter.GeneralDiscountPercentage != null && filter.GeneralDiscountPercentage.HasValue) { query = query.Where(q => q.GeneralDiscountPercentage.HasValue).Where(q => q.GeneralDiscountPercentage, filter.GeneralDiscountPercentage); } if (filter.GeneralDiscountAmount != null && filter.GeneralDiscountAmount.HasValue) { query = query.Where(q => q.GeneralDiscountAmount.HasValue).Where(q => q.GeneralDiscountAmount, filter.GeneralDiscountAmount); } if (filter.TaxPercentage != null && filter.TaxPercentage.HasValue) { query = query.Where(q => q.TaxPercentage.HasValue).Where(q => q.TaxPercentage, filter.TaxPercentage); } if (filter.TaxAmount != null && filter.TaxAmount.HasValue) { query = query.Where(q => q.TaxAmount.HasValue).Where(q => q.TaxAmount, filter.TaxAmount); } if (filter.Amount != null && filter.Amount.HasValue) { query = query.Where(q => q.Amount, filter.Amount); } query = OrFilter(query, filter); return(query); }
private IQueryable <DirectSalesOrderContentDAO> DynamicOrder(IQueryable <DirectSalesOrderContentDAO> query, DirectSalesOrderContentFilter filter) { switch (filter.OrderType) { case OrderType.ASC: switch (filter.OrderBy) { case DirectSalesOrderContentOrder.Id: query = query.OrderBy(q => q.Id); break; case DirectSalesOrderContentOrder.DirectSalesOrder: query = query.OrderBy(q => q.DirectSalesOrderId); break; case DirectSalesOrderContentOrder.Item: query = query.OrderBy(q => q.ItemId); break; case DirectSalesOrderContentOrder.UnitOfMeasure: query = query.OrderBy(q => q.UnitOfMeasureId); break; case DirectSalesOrderContentOrder.Quantity: query = query.OrderBy(q => q.Quantity); break; case DirectSalesOrderContentOrder.PrimaryUnitOfMeasure: query = query.OrderBy(q => q.PrimaryUnitOfMeasureId); break; case DirectSalesOrderContentOrder.RequestedQuantity: query = query.OrderBy(q => q.RequestedQuantity); break; case DirectSalesOrderContentOrder.PrimaryPrice: query = query.OrderBy(q => q.PrimaryPrice); break; case DirectSalesOrderContentOrder.SalePrice: query = query.OrderBy(q => q.SalePrice); break; case DirectSalesOrderContentOrder.EditedPriceStatus: query = query.OrderBy(q => q.EditedPriceStatusId); break; case DirectSalesOrderContentOrder.DiscountPercentage: query = query.OrderBy(q => q.DiscountPercentage); break; case DirectSalesOrderContentOrder.DiscountAmount: query = query.OrderBy(q => q.DiscountAmount); break; case DirectSalesOrderContentOrder.GeneralDiscountPercentage: query = query.OrderBy(q => q.GeneralDiscountPercentage); break; case DirectSalesOrderContentOrder.GeneralDiscountAmount: query = query.OrderBy(q => q.GeneralDiscountAmount); break; case DirectSalesOrderContentOrder.TaxPercentage: query = query.OrderBy(q => q.TaxPercentage); break; case DirectSalesOrderContentOrder.TaxAmount: query = query.OrderBy(q => q.TaxAmount); break; case DirectSalesOrderContentOrder.Amount: query = query.OrderBy(q => q.Amount); break; } break; case OrderType.DESC: switch (filter.OrderBy) { case DirectSalesOrderContentOrder.Id: query = query.OrderByDescending(q => q.Id); break; case DirectSalesOrderContentOrder.DirectSalesOrder: query = query.OrderByDescending(q => q.DirectSalesOrderId); break; case DirectSalesOrderContentOrder.Item: query = query.OrderByDescending(q => q.ItemId); break; case DirectSalesOrderContentOrder.UnitOfMeasure: query = query.OrderByDescending(q => q.UnitOfMeasureId); break; case DirectSalesOrderContentOrder.Quantity: query = query.OrderByDescending(q => q.Quantity); break; case DirectSalesOrderContentOrder.PrimaryUnitOfMeasure: query = query.OrderByDescending(q => q.PrimaryUnitOfMeasureId); break; case DirectSalesOrderContentOrder.RequestedQuantity: query = query.OrderByDescending(q => q.RequestedQuantity); break; case DirectSalesOrderContentOrder.PrimaryPrice: query = query.OrderByDescending(q => q.PrimaryPrice); break; case DirectSalesOrderContentOrder.SalePrice: query = query.OrderByDescending(q => q.SalePrice); break; case DirectSalesOrderContentOrder.EditedPriceStatus: query = query.OrderByDescending(q => q.EditedPriceStatusId); break; case DirectSalesOrderContentOrder.DiscountPercentage: query = query.OrderByDescending(q => q.DiscountPercentage); break; case DirectSalesOrderContentOrder.DiscountAmount: query = query.OrderByDescending(q => q.DiscountAmount); break; case DirectSalesOrderContentOrder.GeneralDiscountPercentage: query = query.OrderByDescending(q => q.GeneralDiscountPercentage); break; case DirectSalesOrderContentOrder.GeneralDiscountAmount: query = query.OrderByDescending(q => q.GeneralDiscountAmount); break; case DirectSalesOrderContentOrder.TaxPercentage: query = query.OrderByDescending(q => q.TaxPercentage); break; case DirectSalesOrderContentOrder.TaxAmount: query = query.OrderByDescending(q => q.TaxAmount); break; case DirectSalesOrderContentOrder.Amount: query = query.OrderByDescending(q => q.Amount); break; } break; } query = query.Skip(filter.Skip).Take(filter.Take); return(query); }
private IQueryable <DirectSalesOrderContentDAO> OrFilter(IQueryable <DirectSalesOrderContentDAO> query, DirectSalesOrderContentFilter filter) { if (filter.OrFilter == null || filter.OrFilter.Count == 0) { return(query); } IQueryable <DirectSalesOrderContentDAO> initQuery = query.Where(q => false); foreach (DirectSalesOrderContentFilter DirectSalesOrderContentFilter in filter.OrFilter) { IQueryable <DirectSalesOrderContentDAO> queryable = query; if (DirectSalesOrderContentFilter.Id != null && DirectSalesOrderContentFilter.Id.HasValue) { queryable = queryable.Where(q => q.Id, DirectSalesOrderContentFilter.Id); } if (DirectSalesOrderContentFilter.DirectSalesOrderId != null && DirectSalesOrderContentFilter.DirectSalesOrderId.HasValue) { queryable = queryable.Where(q => q.DirectSalesOrderId, DirectSalesOrderContentFilter.DirectSalesOrderId); } if (DirectSalesOrderContentFilter.ItemId != null && DirectSalesOrderContentFilter.ItemId.HasValue) { queryable = queryable.Where(q => q.ItemId, DirectSalesOrderContentFilter.ItemId); } if (DirectSalesOrderContentFilter.UnitOfMeasureId != null && DirectSalesOrderContentFilter.UnitOfMeasureId.HasValue) { queryable = queryable.Where(q => q.UnitOfMeasureId, DirectSalesOrderContentFilter.UnitOfMeasureId); } if (DirectSalesOrderContentFilter.Quantity != null && DirectSalesOrderContentFilter.Quantity.HasValue) { queryable = queryable.Where(q => q.Quantity, DirectSalesOrderContentFilter.Quantity); } if (DirectSalesOrderContentFilter.PrimaryUnitOfMeasureId != null && DirectSalesOrderContentFilter.PrimaryUnitOfMeasureId.HasValue) { queryable = queryable.Where(q => q.PrimaryUnitOfMeasureId, DirectSalesOrderContentFilter.PrimaryUnitOfMeasureId); } if (DirectSalesOrderContentFilter.RequestedQuantity != null && DirectSalesOrderContentFilter.RequestedQuantity.HasValue) { queryable = queryable.Where(q => q.RequestedQuantity, DirectSalesOrderContentFilter.RequestedQuantity); } if (DirectSalesOrderContentFilter.PrimaryPrice != null && DirectSalesOrderContentFilter.PrimaryPrice.HasValue) { queryable = queryable.Where(q => q.PrimaryPrice, DirectSalesOrderContentFilter.PrimaryPrice); } if (DirectSalesOrderContentFilter.SalePrice != null && DirectSalesOrderContentFilter.SalePrice.HasValue) { queryable = queryable.Where(q => q.SalePrice, DirectSalesOrderContentFilter.SalePrice); } if (DirectSalesOrderContentFilter.EditedPriceStatusId != null && DirectSalesOrderContentFilter.EditedPriceStatusId.HasValue) { queryable = queryable.Where(q => q.EditedPriceStatusId, DirectSalesOrderContentFilter.EditedPriceStatusId); } if (DirectSalesOrderContentFilter.DiscountPercentage != null && DirectSalesOrderContentFilter.DiscountPercentage.HasValue) { queryable = queryable.Where(q => q.DiscountPercentage.HasValue).Where(q => q.DiscountPercentage, DirectSalesOrderContentFilter.DiscountPercentage); } if (DirectSalesOrderContentFilter.DiscountAmount != null && DirectSalesOrderContentFilter.DiscountAmount.HasValue) { queryable = queryable.Where(q => q.DiscountAmount.HasValue).Where(q => q.DiscountAmount, DirectSalesOrderContentFilter.DiscountAmount); } if (DirectSalesOrderContentFilter.GeneralDiscountPercentage != null && DirectSalesOrderContentFilter.GeneralDiscountPercentage.HasValue) { queryable = queryable.Where(q => q.GeneralDiscountPercentage.HasValue).Where(q => q.GeneralDiscountPercentage, DirectSalesOrderContentFilter.GeneralDiscountPercentage); } if (DirectSalesOrderContentFilter.GeneralDiscountAmount != null && DirectSalesOrderContentFilter.GeneralDiscountAmount.HasValue) { queryable = queryable.Where(q => q.GeneralDiscountAmount.HasValue).Where(q => q.GeneralDiscountAmount, DirectSalesOrderContentFilter.GeneralDiscountAmount); } if (DirectSalesOrderContentFilter.TaxPercentage != null && DirectSalesOrderContentFilter.TaxPercentage.HasValue) { queryable = queryable.Where(q => q.TaxPercentage.HasValue).Where(q => q.TaxPercentage, DirectSalesOrderContentFilter.TaxPercentage); } if (DirectSalesOrderContentFilter.TaxAmount != null && DirectSalesOrderContentFilter.TaxAmount.HasValue) { queryable = queryable.Where(q => q.TaxAmount.HasValue).Where(q => q.TaxAmount, DirectSalesOrderContentFilter.TaxAmount); } if (DirectSalesOrderContentFilter.Amount != null && DirectSalesOrderContentFilter.Amount.HasValue) { queryable = queryable.Where(q => q.Amount, DirectSalesOrderContentFilter.Amount); } initQuery = initQuery.Union(queryable); } return(initQuery); }