public ImportedRecord SetFilterData(ImportedRecord importedRecord, IDictionary <string, List <string> > filteringExpressions, IProjectParser parser) { if (importedRecord.IsDeleted.HasValue && importedRecord.IsDeleted.Value) { importedRecord.IsSuitable = false; return(importedRecord); } var importedRecordDb = m_importedProjectMetadataManager.GetImportedProjectMetadataByExternalId(importedRecord.ExternalId); importedRecord.IsNew = importedRecordDb?.Project == null; if (importedRecord.IsNew) { foreach (var item in parser.GetPairKeyValueList(importedRecord)) { filteringExpressions.TryGetValue(item.Key, out var filterExpressions); if (filterExpressions == null) { continue; } if (filterExpressions.Select(Regex.Escape).Select(expr => expr.Replace("%", ".*")) .Any(expr => Regex.IsMatch(item.Value, expr))) { importedRecord.IsSuitable = true; return(importedRecord); } } importedRecord.IsSuitable = false; } else { var importHistory = m_importHistoryManager.GetLastImportHistoryForImportedProjectMetadata(importedRecordDb.Id); if (!importedRecord.TimeStamp.HasValue || importHistory == null || importHistory.Date < importedRecord.TimeStamp.Value || !string.IsNullOrEmpty(importedRecord.FaultedMessage)) { importedRecord.ProjectId = importedRecordDb.Project.Id; importedRecord.ImportedProjectMetadataId = importedRecordDb.Id; importedRecord.IsSuitable = true; } else { importedRecord.IsSuitable = false; } } return(importedRecord); }