public async Task <Item> Get(long Id) { Item Item = await DataContext.Item.Where(x => x.Id == Id).AsNoTracking().Select(x => new Item() { Id = x.Id, ProductId = x.ProductId, Code = x.Code, Name = x.Name, ScanCode = x.ScanCode, SalePrice = x.SalePrice, RetailPrice = x.RetailPrice, Used = x.Used, Product = x.Product == null ? null : new Product { Id = x.Product.Id, Code = x.Product.Code, Name = x.Product.Name, Description = x.Product.Description, ScanCode = x.Product.ScanCode, ProductTypeId = x.Product.ProductTypeId, BrandId = x.Product.BrandId, UnitOfMeasureId = x.Product.UnitOfMeasureId, UnitOfMeasureGroupingId = x.Product.UnitOfMeasureGroupingId, SalePrice = x.Product.SalePrice, RetailPrice = x.Product.RetailPrice, TaxTypeId = x.Product.TaxTypeId, StatusId = x.Product.StatusId, ProductType = x.Product.ProductType == null ? null : new ProductType { Id = x.Product.ProductType.Id, Code = x.Product.ProductType.Code, Name = x.Product.ProductType.Name, Description = x.Product.ProductType.Description, StatusId = x.Product.ProductType.StatusId, UpdatedAt = x.Product.ProductType.UpdatedAt, }, Category = x.Product.Category == null ? null : new Category { Id = x.Product.Category.Id, Code = x.Product.Category.Code, Name = x.Product.Category.Name, Path = x.Product.Category.Path, ParentId = x.Product.Category.ParentId, StatusId = x.Product.Category.StatusId, Level = x.Product.Category.Level }, TaxType = x.Product.TaxType == null ? null : new TaxType { Id = x.Product.TaxType.Id, Code = x.Product.TaxType.Code, StatusId = x.Product.TaxType.StatusId, Name = x.Product.TaxType.Name, Percentage = x.Product.TaxType.Percentage, }, UnitOfMeasure = x.Product.UnitOfMeasure == null ? null : new UnitOfMeasure { Id = x.Product.UnitOfMeasure.Id, Code = x.Product.UnitOfMeasure.Code, Name = x.Product.UnitOfMeasure.Name, Description = x.Product.UnitOfMeasure.Description, StatusId = x.Product.UnitOfMeasure.StatusId, }, UnitOfMeasureGrouping = x.Product.UnitOfMeasureGrouping == null ? null : new UnitOfMeasureGrouping { Id = x.Product.UnitOfMeasureGrouping.Id, Code = x.Product.UnitOfMeasureGrouping.Code, Name = x.Product.UnitOfMeasureGrouping.Name, Description = x.Product.UnitOfMeasureGrouping.Description, StatusId = x.Product.UnitOfMeasureGrouping.StatusId, UnitOfMeasureId = x.Product.UnitOfMeasureGrouping.UnitOfMeasureId, }, Brand = x.Product.Brand == null ? null : new Brand { Id = x.Product.Brand.Id, Code = x.Product.Brand.Code, Name = x.Product.Brand.Name, }, }, }).FirstOrDefaultAsync(); if (Item == null) { return(null); } Item.Product.ProductProductGroupingMappings = await DataContext.ProductProductGroupingMapping.Where(x => x.ProductId == Item.ProductId).Select(x => new ProductProductGroupingMapping { ProductId = x.ProductId, ProductGroupingId = x.ProductGroupingId, ProductGrouping = x.ProductGrouping == null ? null : new ProductGrouping { Id = x.ProductGrouping.Id, Code = x.ProductGrouping.Code, Name = x.ProductGrouping.Name, } }).ToListAsync(); if (Item.Product.UnitOfMeasureGroupingId.HasValue) { List <UnitOfMeasureGroupingContent> UnitOfMeasureGroupingContents = await DataContext.UnitOfMeasureGroupingContent .Where(x => x.UnitOfMeasureGroupingId == Item.Product.UnitOfMeasureGroupingId.Value) .Select(x => new UnitOfMeasureGroupingContent { Id = x.Id, Factor = x.Factor, UnitOfMeasureId = x.UnitOfMeasureId, UnitOfMeasure = x.UnitOfMeasure == null ? null : new UnitOfMeasure { Id = x.UnitOfMeasure.Id, Code = x.UnitOfMeasure.Code, Name = x.UnitOfMeasure.Name, }, }).ToListAsync(); Item.Product.UnitOfMeasureGrouping.UnitOfMeasureGroupingContents = UnitOfMeasureGroupingContents; } Item.ItemImageMappings = await DataContext.ItemImageMapping .Where(x => x.ItemId == Item.Id) .Select(x => new ItemImageMapping { ItemId = x.ItemId, ImageId = x.ImageId, Image = new Image { Id = x.Image.Id, Name = x.Image.Name, Url = x.Image.Url, ThumbnailUrl = x.Image.ThumbnailUrl, }, }).ToListAsync(); if (Item.ItemImageMappings.Count == 0) { var ProductImageMappingDAOs = await DataContext.ProductImageMapping.Include(x => x.Image).Where(x => x.ProductId == Item.ProductId).ToListAsync(); foreach (ProductImageMappingDAO ProductImageMappingDAO in ProductImageMappingDAOs) { ItemImageMapping ItemImageMapping = new ItemImageMapping { ImageId = ProductImageMappingDAO.ImageId, ItemId = Item.Id, Image = ProductImageMappingDAO.Image == null ? null : new Image { Id = ProductImageMappingDAO.Image.Id, Name = ProductImageMappingDAO.Image.Name, Url = ProductImageMappingDAO.Image.Url, ThumbnailUrl = ProductImageMappingDAO.Image.ThumbnailUrl, } }; Item.ItemImageMappings.Add(ItemImageMapping); } } return(Item); }
public DirectSalesOrder_ItemImageMappingDTO(ItemImageMapping ItemImageMapping) { this.ItemId = ItemImageMapping.ItemId; this.ImageId = ItemImageMapping.ImageId; this.Image = ItemImageMapping.Image == null ? null : new DirectSalesOrder_ImageDTO(ItemImageMapping.Image); }
private async Task <List <Item> > DynamicSelect(IQueryable <ItemDAO> query, ItemFilter filter) { List <Item> Items = await query.Select(q => new Item() { Id = filter.Selects.Contains(ItemSelect.Id) ? q.Id : default(long), ProductId = filter.Selects.Contains(ItemSelect.ProductId) ? q.ProductId : default(long), Code = filter.Selects.Contains(ItemSelect.Code) ? q.Code : default(string), Name = filter.Selects.Contains(ItemSelect.Name) ? q.Name : default(string), ScanCode = filter.Selects.Contains(ItemSelect.ScanCode) ? q.ScanCode : default(string), SalePrice = filter.Selects.Contains(ItemSelect.SalePrice) ? q.SalePrice : default(decimal?), RetailPrice = filter.Selects.Contains(ItemSelect.RetailPrice) ? q.RetailPrice : default(decimal?), StatusId = filter.Selects.Contains(ItemSelect.Status) ? q.StatusId : default(long), Product = filter.Selects.Contains(ItemSelect.Product) && q.Product != null ? new Product { Id = q.Product.Id, Code = q.Product.Code, Name = q.Product.Name, Description = q.Product.Description, ScanCode = q.Product.ScanCode, ProductTypeId = q.Product.ProductTypeId, BrandId = q.Product.BrandId, UnitOfMeasureId = q.Product.UnitOfMeasureId, UnitOfMeasureGroupingId = q.Product.UnitOfMeasureGroupingId, SalePrice = q.Product.SalePrice, RetailPrice = q.Product.RetailPrice, TaxTypeId = q.Product.TaxTypeId, StatusId = q.Product.StatusId, Category = new Category { Id = q.Product.Category.Id, Code = q.Product.Category.Code, Name = q.Product.Category.Name, Path = q.Product.Category.Path, ParentId = q.Product.Category.ParentId, StatusId = q.Product.Category.StatusId, Level = q.Product.Category.Level }, ProductType = new ProductType { Id = q.Product.ProductType.Id, Code = q.Product.ProductType.Code, Name = q.Product.ProductType.Name, Description = q.Product.ProductType.Description, StatusId = q.Product.ProductType.StatusId, UpdatedAt = q.Product.ProductType.UpdatedAt, }, TaxType = new TaxType { Id = q.Product.TaxType.Id, Code = q.Product.TaxType.Code, Name = q.Product.TaxType.Name, Percentage = q.Product.TaxType.Percentage, StatusId = q.Product.TaxType.StatusId, }, UnitOfMeasure = new UnitOfMeasure { Id = q.Product.UnitOfMeasure.Id, Code = q.Product.UnitOfMeasure.Code, Name = q.Product.UnitOfMeasure.Name, }, UnitOfMeasureGrouping = new UnitOfMeasureGrouping { Id = q.Product.UnitOfMeasureGrouping.Id, Code = q.Product.UnitOfMeasureGrouping.Code, Name = q.Product.UnitOfMeasureGrouping.Name }, ProductProductGroupingMappings = q.Product.ProductProductGroupingMappings != null ? q.Product.ProductProductGroupingMappings.Select(p => new ProductProductGroupingMapping { ProductId = p.ProductId, ProductGroupingId = p.ProductGroupingId, ProductGrouping = new ProductGrouping { Id = p.ProductGrouping.Id, Code = p.ProductGrouping.Code, Name = p.ProductGrouping.Name, ParentId = p.ProductGrouping.ParentId, Path = p.ProductGrouping.Path, Description = p.ProductGrouping.Description, }, }).ToList() : null, } : null, Status = filter.Selects.Contains(ItemSelect.Status) && q.Status == null ? null : new Status { Id = q.Status.Id, Code = q.Status.Code, Name = q.Status.Name, }, Used = q.Used, }).ToListAsync(); var Ids = Items.Select(x => x.Id).ToList(); var ProductIds = Items.Select(x => x.ProductId).ToList(); var ProductImageMappings = DataContext.ProductImageMapping.Include(x => x.Image).Where(x => ProductIds.Contains(x.ProductId)).ToList(); var ItemImageMappings = DataContext.ItemImageMapping.Include(x => x.Image).Where(x => Ids.Contains(x.ItemId)).ToList(); foreach (var Item in Items) { Item.ItemImageMappings = new List <ItemImageMapping>(); var ItemImageMappingDAO = ItemImageMappings.Where(x => x.ItemId == Item.Id).FirstOrDefault(); if (ItemImageMappingDAO != null) { ItemImageMapping ItemImageMapping = new ItemImageMapping { ImageId = ItemImageMappingDAO.ImageId, ItemId = ItemImageMappingDAO.ItemId, Image = ItemImageMappingDAO.Image == null ? null : new Image { Id = ItemImageMappingDAO.Image.Id, Name = ItemImageMappingDAO.Image.Name, Url = ItemImageMappingDAO.Image.Url, ThumbnailUrl = ItemImageMappingDAO.Image.ThumbnailUrl } }; Item.ItemImageMappings.Add(ItemImageMapping); } if (Item.ItemImageMappings.Count == 0) { var ProductImageMappingDAO = ProductImageMappings.Where(x => x.ProductId == Item.ProductId).FirstOrDefault(); if (ProductImageMappingDAO != null) { ItemImageMapping ItemImageMapping = new ItemImageMapping { ImageId = ProductImageMappingDAO.ImageId, ItemId = Item.Id, Image = ProductImageMappingDAO.Image == null ? null : new Image { Id = ProductImageMappingDAO.Image.Id, Name = ProductImageMappingDAO.Image.Name, Url = ProductImageMappingDAO.Image.Url, ThumbnailUrl = ProductImageMappingDAO.Image.ThumbnailUrl } }; Item.ItemImageMappings.Add(ItemImageMapping); } } } return(Items); }