private IEnumerable<InvoiceBaseWrapper> ToListInvoiceBaseWrappers(ICollection<Invoice> items) { if (items == null || items.Count == 0) return new List<InvoiceWrapper>(); var result = new List<InvoiceBaseWrapper>(); var contactIDs = items.Select(item => item.ContactID); contactIDs.ToList().AddRange(items.Select(item => item.ConsigneeID)); var contacts = DaoFactory.GetContactDao().GetContacts(contactIDs.Distinct().ToArray()) .ToDictionary(item => item.ID, ToContactBaseWithEmailWrapper); foreach (var invoice in items) { var invoiceWrapper = new InvoiceBaseWrapper(invoice); if (contacts.ContainsKey(invoice.ContactID)) { invoiceWrapper.Contact = contacts[invoice.ContactID]; } if (contacts.ContainsKey(invoice.ConsigneeID)) { invoiceWrapper.Consignee = contacts[invoice.ContactID]; } if (invoice.EntityID > 0) { invoiceWrapper.Entity = ToEntityWrapper(invoice.EntityType, invoice.EntityID); //Need to optimize } invoiceWrapper.Cost = invoice.GetInvoiceCost(); result.Add(invoiceWrapper); } return result; }
private InvoiceBaseWrapper ToInvoiceBaseWrapper(Invoice invoice) { var result = new InvoiceBaseWrapper(invoice); if (invoice.ContactID > 0) { result.Contact = ToContactBaseWithEmailWrapper(DaoFactory.GetContactDao().GetByID(invoice.ContactID)); } if (invoice.ConsigneeID > 0) { result.Consignee = ToContactBaseWithEmailWrapper(DaoFactory.GetContactDao().GetByID(invoice.ConsigneeID)); } if (invoice.EntityID > 0) { result.Entity = ToEntityWrapper(invoice.EntityType, invoice.EntityID); } result.Cost = invoice.GetInvoiceCost(); return result; }