/// <summary> /// This method is only used by unit tests /// </summary> /// <param name="batchFileText"></param> /// <returns></returns> public static IList <IndividualResponseType> ParseBatch(LineWrapper[] dataLines, Dictionary <string, Type> typeMap) { var startRecord = dataLines.First().ToWrapper(typeMap) as StartRecordType; var endRecord = dataLines.Last().ToWrapper(typeMap) as EndRecordType; dataLines = dataLines.Skip(1).Take(dataLines.Length - 2).ToArray(); var groupedWrapers = dataLines .GroupBy(w => w.PNR) .ToList(); var ret = groupedWrapers .Select(individualWrappersGrouping => { var individual = new IndividualResponseType(); var individualLines = individualWrappersGrouping .Select(il => il.ToPersonRecordWrapper(Constants.DataObjectMap, individual) as Wrapper) .Where(w => w != null) .ToList(); individual.FillPropertiesFromWrappers(individualLines, startRecord, endRecord); return(individual); }) .ToList(); return(ret); }
public static IndividualResponseType ToIndividualResponseType(Extract extract, IQueryable <ExtractItem> extractItems, Dictionary <string, Type> typeMap) { var individualResponse = new IndividualResponseType(); var personWrappers = extractItems .Select(item => Wrapper.Create(item.DataTypeCode, item.Contents, typeMap)) .ToArray(); // TODO: (Reverse relation) Add reversible relationship support after finding a good indexing solution individualResponse.FillPropertiesFromWrappers(personWrappers, extract.StartWrapper, extract.EndWrapper); individualResponse.SourceObject = extract.ExtractId; return(individualResponse); }