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() }))); }
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() } }); }
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)); }
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)) } }); }
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), })); }
internal static Expression <Func <Customer, CompanyHeaderReturn> > SelectCompanyHeader() { var header = CompanyProjectors.SelectHeader(); return(c => header.Invoke(c.Company)); }