/// <summary>
/// Merges the list of files in the folder with the data coming from the database.
/// </summary>
/// <param name="settings">The filters to apply to the data.</param>
private void MergePlaylist(SearchSettings settings)
{
VideoListItem ListItem;
MediaType ItemType;
foreach (LocalFileInfo item in files)
{
ItemType = EditVideoBusiness.GetFileType(item.FileName);
ListItem = playlist.Where(v => string.Equals(v.FileName, item.FileName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
if (ListItem != null)
{
ListItem.FileExists = true;
}
else
{
// Add file if it matches search settings.
if (!item.IsInDatabase && OrphanMatchesConditions(ItemType, item.FileName, settings))
{
// Add file to ListView.
playlist.Add(new VideoListItem()
{
MediaId = null,
MediaType = ItemType,
Title = item.FileName,
FileName = item.FileName,
FileExists = true,
IsInDatabase = false
});
}
}
}
// Apply FileExists search filter.
SearchConditionSetting Cond = settings.ConditionFilters.FirstOrDefault(f => f.Field == FieldConditionEnum.FileExists && f.Value != BoolConditionEnum.None);
if (Cond != null)
{
playlist.RemoveAll(v => v.FileExists == (Cond.Value == BoolConditionEnum.No));
}
// Apply IsInDatabase search filter.
if (settings.IsInDatabase == false)
{
playlist.RemoveAll(v => v.IsInDatabase);
}
}