public void Should_Success_Instanciate_NewShipmentDocumentPackingReceiptItemProduct_ViewModel()
        {
            var viewModel = new NewShipmentDocumentPackingReceiptItemProductViewModel()
            {
                ProductName = "ProductName",
                Quantity    = 1,
                QuantityUOM = "QuantityUOM",
                Total       = 100,
                UOMId       = 1,
                UOMUnit     = "UOMUnit",
            };

            Assert.NotNull(viewModel.ProductName);
            Assert.NotNull(viewModel.Quantity);
            Assert.NotNull(viewModel.QuantityUOM);
            Assert.NotNull(viewModel.Total);
            Assert.NotNull(viewModel.UOMId);
            Assert.NotNull(viewModel.UOMUnit);
        }
        public async Task <List <NewShipmentDocumentPackingReceiptItemProductViewModel> > GetProductNames(int shipmentDocumentId)
        {
            var shipmentDetails = _DetailDbSet.Where(s => s.ShipmentDocumentId == shipmentDocumentId).Select(d => d.Id);
            var shipmentItem    = _ItemDbSet.Include(d => d.PackingReceiptItems).Where(s => shipmentDetails.Contains(s.ShipmentDocumentDetailId));

            //var query = (from shipment in shipmentItem
            //             join shipmentPacking in _PackingReceiptItemDbSet
            //             on shipment.Id equals shipmentPacking.ShipmentDocumentItemId
            //             into shipmentData
            //             from shipmentPacking in shipmentData.DefaultIfEmpty()
            //             join packingReceipt in _PackingReceiptDbSet
            //             on shipment.PackingReceiptId equals packingReceipt.Id
            //             into result
            //             from packingReceipt in result.DefaultIfEmpty()
            //             select new NewShipmentDocumentPackingReceiptItemProductViewModel()
            //             {
            //                 Length = shipmentPacking.Length
            //             });
            List <NewShipmentDocumentPackingReceiptItemProductViewModel> result = new List <NewShipmentDocumentPackingReceiptItemProductViewModel>();

            foreach (var item in shipmentItem)
            {
                var packingReceiptData = await _PackingReceiptDbSet.FirstOrDefaultAsync(s => s.Id == item.PackingReceiptId);

                var data = new NewShipmentDocumentPackingReceiptItemProductViewModel
                {
                    Quantity    = item.PackingReceiptItems.Sum(s => s.Quantity),
                    Total       = item.PackingReceiptItems.Sum(s => s.Quantity) * item.PackingReceiptItems.Sum(s => s.Length),
                    QuantityUOM = packingReceiptData.PackingUom,
                    ProductName = string.Format("{0} / {1}", packingReceiptData.Construction, packingReceiptData.ColorName),
                };
                result.Add(data);
            }

            return(result);
        }