Exemple #1
0
        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);
 }
Exemple #3
0
        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);
        }