public RelationCriteria GetFromTitle(RelationBetweenEntries relation) { var sourceTitle = relation.SourceEntry.Title; var targetTitle = relation.TargetEntry.Title; var relationStrategy = relationCriterias.FirstOrDefault( s => s.Keywords != null && s.Keywords.Any(k => sourceTitle.ContainsCaseInsensitive(k))); if (relationStrategy != null) { return(relationStrategy); } relationStrategy = relationCriterias.FirstOrDefault( s => s.Keywords != null && s.Keywords.Any(k => targetTitle.ContainsCaseInsensitive(k))); return(relationStrategy); }
public bool IsRelationValid(RelationBetweenEntries relation) { var relationCriteria = RelationConfiguration.Instance.Get(relation); var relationStrategies = relationCriteria.Strategies.Select(s => RelationFactory.Instance.Get(s)).ToArray(); var isTargetParentStory = relation.TargetForSourceType == Data.Enumerations.RelationType.ParentStory; bool areEqual = true; foreach (var relationStrategy in relationStrategies) { areEqual &= !isTargetParentStory ? relationStrategy.AreRelated(relation.SourceEntry, relation.TargetEntry) : relationStrategy.AreRelated(relation.TargetEntry, relation.SourceEntry); } return(areEqual); }
private RelationBetweenEntries CreateRelation(IEntryInstance entry, IEntryInstance relatedEntry, RelationType relationType) { if (relationType != RelationType.ParentStory) { return(new RelationBetweenEntries(entry, relatedEntry, relationType)); } var entryAsRelatedSubItem = relatedEntry.Related.AllRelatedPositions.FirstOrDefault(e => e.MalId == entry.Id); if (entryAsRelatedSubItem == null) { return(new RelationBetweenEntries(entry, relatedEntry, relationType)); } var targetToSourceRelation = entryAsRelatedSubItem.RelationType; var relation = new RelationBetweenEntries(entry, relatedEntry, relationType, targetToSourceRelation); return(relation); }
public RelationCriteria Get(RelationBetweenEntries relation) { var relationStrategy = GetFromTitle(relation); if (relationStrategy != null) { return(relationStrategy); } relationStrategy = GetFromType(relation.TargetEntry.Type); if (relationStrategy != null) { return(relationStrategy); } var isTargetParentStory = relation.TargetForSourceType == RelationType.ParentStory; var relationType = !isTargetParentStory ? relation.TargetForSourceType : relation.SourceForTargetType; relationStrategy = GetFromRelation(relationType); if (relationStrategy != null) { return(relationStrategy); } return(relationCriterias.FirstOrDefault(s => s.Relations != null && s.Relations.Contains(RelationType.None))); }