Ejemplo n.º 1
0
        private List <char[]> ProcessEnumerableDataProperty(IEdiSubDataRecordEnumerableSettings settings, CultureInfo cultureInfo)
        {
            var dataRecordEnumerable = settings.PropertyInfo.GetValue(settings.DataRecord) as System.Collections.IEnumerable;

            if (dataRecordEnumerable != null)
            {
                (var minIndex, var maxIndex) = GetRowIndexRange(settings.DataProperty, -1, -1);

                var dataRecordSettings = new EdiDataRecordSettings
                {
                    DataProperty  = settings.DataProperty,
                    MaxLineLength = settings.MaxLineLength,
                    MaxLineCount  = settings.MaxLineCount,
                    CultureInfo   = cultureInfo
                };

                foreach (var subItem in dataRecordEnumerable)
                {
                    dataRecordSettings.DataRecord = subItem;
                    var enumerableResult = ProcessDataRecord(dataRecordSettings);

                    if (settings.DataProperty.IsSameDataRecord)
                    {
                        settings.TargetDataRows = CombineDataRows(settings.TargetDataRows, enumerableResult).ToList();
                    }
                    else if (settings.DataProperty.CanRepeatEDI)
                    {
                        var resultSet = new EnumerableResultSet
                        {
                            TargetDataRows = settings.TargetDataRows,
                            ResultdataRows = enumerableResult,
                            MinLineIndex   = minIndex,
                            MaxLineIndex   = maxIndex,
                            MaxLineLength  = settings.MaxLineLength
                        };
                        AddEnumerableResultToDataRows(resultSet);
                    }
                    else
                    {
                        settings.SubDataRows.Add(enumerableResult);
                    }
                }
            }

            return(settings.TargetDataRows);
        }
Ejemplo n.º 2
0
        private List <char[]> AddEnumerableResultToDataRows(EnumerableResultSet enumerableResultSet)
        {
            var arrayResult = enumerableResultSet.ResultdataRows.ToArray();

            while (enumerableResultSet.TargetDataRows.Count < enumerableResultSet.MinLineIndex)
            {
                enumerableResultSet.TargetDataRows.Add(InitialiseDataRow(enumerableResultSet.MaxLineLength));
            }

            for (var index = enumerableResultSet.MinLineIndex; index <= enumerableResultSet.MaxLineIndex; index++)
            {
                if (arrayResult.Length > index)
                {
                    enumerableResultSet.TargetDataRows.Add(arrayResult[index]);
                }
                else
                {
                    enumerableResultSet.TargetDataRows.Add(InitialiseDataRow(enumerableResultSet.MaxLineLength));
                }
            }

            return(enumerableResultSet.TargetDataRows);
        }