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;
}