public RelationFormModel(int sourceId, int targetId, RelationRule relation) { SourceId = sourceId; TargetId = targetId; Title = relation.Title; Description = relation.Description; Color = relation.Color; ArrowStyle = relation.ArrowStyle; }
/// <summary> /// /// </summary> /// <param name="currentMember"></param> /// <param name="center1"></param> /// <param name="center2"></param> /// <param name="rule"></param> /// <param name="message"></param> /// <returns></returns> public virtual bool ValidateCardinality(Member currentMember, Center center1, Center center2, RelationRule rule, out string message) { message = ""; if (center1.Id <= 0 && center2.Id <= 0) { return(true); } if (rule.Cardinality == (int)Cardinalities.Peer2Peer) { if (currentMember != null && currentMember.Id != 0) { if ((center1.Id > 0 && GetMemberships(center1.Id, (RelationTypes)rule.RelationTypeId, false, false).Any(p => p.MemberId != currentMember.Id)) || (center2.Id > 0 && GetMemberships(center2.Id, (RelationTypes)rule.RelationTypeId, false, false).Any(p => p.MemberId != currentMember.Id))) { message = "1:1 relationships cannot have more than 1 endpoints on neither of entities."; return(false); } } else { if ((center1.Id > 0 && GetMemberships(center1.Id, (RelationTypes)rule.RelationTypeId, false, false).Any()) || (center2.Id > 0 && GetMemberships(center2.Id, (RelationTypes)rule.RelationTypeId, false, false).Any())) { message = "1:1 relationships cannot have more than 1 endpoints on neither of entities."; return(false); } } } else if (rule.Cardinality == (int)Cardinalities.One2Many) { if (currentMember != null && currentMember.Id != 0) { if ((center2.Id > 0 && GetSelfMemberships(center2, (RelationTypes)rule.RelationTypeId, false).Any(p => p.Id != currentMember.Id && p.CenterId2 == center2.Id))) { message = "1:N relationships cannot have more than 1 endpoints on the second entity."; return(false); } } else { if ((center2.Id > 0 && GetSelfMemberships(center2, (RelationTypes)rule.RelationTypeId).Any(p => p.CenterId2 == center2.Id))) { message = "1:N relationships cannot have more than 1 endpoints on the second entity."; return(false); } } } return(true); }