Dev2.Core.Tests.DataListViewModelTests.CreateDataListItems C# (CSharp) Method

CreateDataListItems() private method

private CreateDataListItems ( IDataListViewModel viewModel, IEnumerable parts, bool isAdd ) : IEnumerable
viewModel IDataListViewModel
parts IEnumerable
isAdd bool
return IEnumerable
        IEnumerable<IDataListItemModel> CreateDataListItems(IDataListViewModel viewModel, IEnumerable<IDataListVerifyPart> parts, bool isAdd)
        {
            var results = new List<IDataListItemModel>();

            foreach(var part in parts)
            {
                IDataListItemModel item;
                if(part.IsScalar)
                {
                    item = DataListItemModelFactory.CreateDataListItemViewModel
                        (viewModel, part.Field, part.Description, null);

                    results.Add(item);
                }
                else if(string.IsNullOrEmpty(part.Field))
                {
                    AddRecordSetItem(viewModel, part, results);
                }
                else
                {
                    IDataListItemModel recset
                        = results.FirstOrDefault(c => c.IsRecordset && c.Name == part.Recordset) ?? viewModel.DataList.FirstOrDefault(c => c.IsRecordset && c.Name == part.Recordset);

                    if(recset == null && isAdd)
                    {
                        AddRecordSetItem(viewModel, part, results);
                    }

                    if(recset != null)
                    {
                        if(isAdd)
                        {
                            item = DataListItemModelFactory.CreateDataListItemViewModel(viewModel, part.Field, part.Description, recset);

                            recset.Children.Add(item);
                        }
                        else
                        {
                            IDataListItemModel removeItem = recset.Children.FirstOrDefault(c => c.Name == part.Field);
                            if(removeItem != null)
                            {
                                if(recset.Children.Count == 1)
                                {
                                    recset.Children[0].DisplayName = "";
                                    recset.Children[0].Description = "";
                                }
                                else
                                {
                                    recset.Children.Remove(removeItem);
                                }
                            }
                        }
                    }
                }
            }
            return results;
        }
DataListViewModelTests