protected override void ProcessFiles(ICollection <TransferControlFile> transferControlFiles) { TransferControlFile headerFile = null; TransferControlFile detailFile = null; TransferControlFile specialInstructionsFile = null; foreach (var file in transferControlFiles) { var filename = Path.GetFileName(file.FileLocation); if (filename == null) { throw new InvalidDataException("File location does not have a filename"); } switch (filename.Substring(0, 2).ToUpperInvariant()) { case ManhattanDataFileType.PickHeader: headerFile = file; break; case ManhattanDataFileType.PickDetail: detailFile = file; break; case ManhattanDataFileType.PickSpecialInstructions: specialInstructionsFile = file; break; } } if (headerFile == null || detailFile == null || specialInstructionsFile == null) { throw new InvalidDataException("File list does not contain a header, detail, and instruction file."); } var headers = _manhattanOrderRepository.GetManhattanPickTicketHeaders(headerFile.FileLocation); var details = _manhattanOrderRepository.GetManhattanPickTicketDetails(detailFile.FileLocation); var instructions = _manhattanOrderRepository.GetManhattanPickTicketInstructions(specialInstructionsFile.FileLocation); var orders = _manhattanOrderRepository.GetOrders(headers, details); _orderHistoryRepository.Save(orders.SelectMany(o => o.CreateHistories("Item picked from Aurora", "Aurora Pick Ticket Job"))); _auroraPickTicketRepository.InsertAuroraPickTicketHeader(headers); _auroraPickTicketRepository.InsertAuroraPickTicketDetail(details); _auroraPickTicketRepository.InsertAuroraPickTicketInstruction(instructions); _destinationRepository.SaveOrders(orders); }