Example #1
0
        internal static IEnumerable <Expression <Func <PackSchedule, ProductionPacketReturn> > > SplitSelectProductionPacket(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate, ILotKey batchKey = null)
        {
            var packScheduleKey          = SelectKey();
            var companyHeader            = CompanyProjectors.SelectHeader();
            var workType                 = WorkTypeProjectors.Select();
            var chileProduct             = ProductProjectors.SelectProduct();
            var productKeyName           = ProductProjectors.SelectProductKeyName();
            var productionBatchPredicate = batchKey != null?ProductionBatchPredicates.ByLotKey(batchKey) : b => true;

            return(ProductionBatchProjectors.SplitSelectProductionPacket(inventoryUnitOfWork, currentDate)
                   .Select(b => Projector <PackSchedule> .To(p => new ProductionPacketReturn
            {
                Batches = p.ProductionBatches.Where(a => productionBatchPredicate.Invoke(a)).Select(a => b.Invoke(a))
            }))
                   .ToAppendedList(Projector <PackSchedule> .To(p => new ProductionPacketReturn
            {
                PackScheduleKeyReturn = packScheduleKey.Invoke(p),
                PSNum = p.PSNum,
                DateCreated = p.DateCreated,
                SummaryOfWork = p.SummaryOfWork
            }),
                                   Projector <PackSchedule> .To(p => new ProductionPacketReturn
            {
                ChileProduct = chileProduct.Invoke(p.ChileProduct.Product),
                PackagingProduct = productKeyName.Invoke(p.PackagingProduct.Product)
            }),
                                   Projector <PackSchedule> .To(p => new ProductionPacketReturn
            {
                ProductionLineDescription = p.ProductionLineLocation.Description,
                WorkType = workType.Invoke(p.WorkType),
                Customer = new[] { p.Customer }.Where(c => c != null).Select(c => companyHeader.Invoke(c.Company)).FirstOrDefault()
            })));
        }
Example #2
0
        internal static IEnumerable <Expression <Func <InventoryPickOrderItem, InventoryPickOrderItemReturn> > > SplitSelect()
        {
            var key                   = SelectKey();
            var productKey            = ProductProjectors.SelectProductKey();
            var inventoryTreatmentKey = InventoryTreatmentProjectors.SelectInventoryTreatmentKey();
            var company               = CompanyProjectors.SelectHeader();

            return(new Projectors <InventoryPickOrderItem, InventoryPickOrderItemReturn>
            {
                i => new InventoryPickOrderItemReturn
                {
                    InventoryPickOrderItemKeyReturn = key.Invoke(i),
                    ProductKeyReturn = productKey.Invoke(i.Product),
                    ProductName = i.Product.Name,
                    ProductCode = i.Product.ProductCode,
                    TreatmentNameShort = i.InventoryTreatment.ShortName,
                    InventoryTreatmentKeyReturn = inventoryTreatmentKey.Invoke(i.InventoryTreatment),
                    Quantity = i.Quantity,
                    CustomerLotCode = i.CustomerLotCode,
                    CustomerProductCode = i.CustomerProductCode
                },
                i => new InventoryPickOrderItemReturn
                {
                    PackagingProductKeyReturn = productKey.Invoke(i.PackagingProduct.Product),
                    PackagingName = i.PackagingProduct.Product.Name,
                    PackagingWeight = i.PackagingProduct.Weight,
                    TotalWeight = i.PackagingProduct.Weight * i.Quantity
                },
                i => new InventoryPickOrderItemReturn
                {
                    Customer = new [] { i.Customer }.Where(c => c != null).Select(c => company.Invoke(c.Company)).FirstOrDefault()
                }
            });
        }
Example #3
0
        internal static Expression <Func <Customer, CustomerNotesReturn> > SelectNotes()
        {
            var note = CustomerNoteProjectors.Select();

            return(CompanyProjectors.SelectHeader().Merge(Projector <Customer> .To(c => new CustomerNotesReturn
            {
                CustomerNotes = c.Notes.Select(n => note.Invoke(n))
            }), c => c.Company));
        }
Example #4
0
        internal static IEnumerable <Expression <Func <SampleOrder, SampleOrderDetailReturn> > > SelectDetail()
        {
            var key      = SelectKey();
            var company  = CompanyProjectors.SelectHeader();
            var employee = EmployeeProjectors.SelectSummary();
            var item     = SampleOrderItemProjectors.Select();
            var journal  = SampleOrderJournalEntryProjectors.Select();

            return(new Projectors <SampleOrder, SampleOrderDetailReturn>
            {
                s => new SampleOrderDetailReturn
                {
                    DateDue = s.DateDue,
                    DateReceived = s.DateReceived,
                    DateCompleted = s.DateCompleted,
                    Status = s.Status,
                    Active = s.Active,
                    FOB = s.FOB,
                    ShipVia = s.ShipmentMethod,

                    RequestedByShippingLabel = s.Request,
                    ShipToCompany = s.ShipToCompany,
                    ShipToShippingLabel = s.ShipTo,

                    Comments = s.Comments,
                    NotesToPrint = s.PrintNotes,

                    SampleOrderKeyReturn = key.Invoke(s),
                },
                s => new SampleOrderDetailReturn
                {
                    RequestedByCompany = new [] { s.RequestCustomer }.Where(c => c != null).Select(c => company.Invoke(c.Company)).FirstOrDefault(),
                    Broker = new [] { s.Broker }.Where(c => c != null).Select(c => company.Invoke(c)).FirstOrDefault(),
                    CreatedByUser = employee.Invoke(s.Employee),
                },
                s => new SampleOrderDetailReturn
                {
                    Items = s.Items.Select(i => item.Invoke(i))
                },
                s => new SampleOrderDetailReturn
                {
                    JournalEntries = s.JournalEntries.Select(j => journal.Invoke(j))
                }
            });
        }
Example #5
0
        internal static Expression <Func <SampleOrder, SampleOrderSummaryReturn> > SelectSummary()
        {
            var key      = SelectKey();
            var company  = CompanyProjectors.SelectHeader();
            var employee = EmployeeProjectors.SelectSummary();

            return(Projector <SampleOrder> .To(s => new SampleOrderSummaryReturn
            {
                DateDue = s.DateDue,
                DateReceived = s.DateReceived,
                DateCompleted = s.DateCompleted,
                Status = s.Status,

                RequestedByCompany = new [] { s.RequestCustomer }.Where(c => c != null).Select(c => company.Invoke(c.Company)).FirstOrDefault(),
                Broker = new [] { s.Broker }.Where(c => c != null).Select(c => company.Invoke(c)).FirstOrDefault(),
                CreatedByUser = employee.Invoke(s.Employee),

                SampleOrderKeyReturn = key.Invoke(s),
            }));
        }
Example #6
0
        internal static Expression <Func <Customer, CompanyHeaderReturn> > SelectCompanyHeader()
        {
            var header = CompanyProjectors.SelectHeader();

            return(c => header.Invoke(c.Company));
        }