private static IReferenceRelation GetReferenceRelation(object newObject, IReference newReference) { if (newObject is ITaxon) { IUserContext userContext = CoreData.UserManager.GetCurrentUser(); ReferenceRelation newReferenceRelation = new ReferenceRelation() { RelatedObjectGuid = ((ITaxon)newObject).Guid, Type = CoreData.ReferenceManager.GetReferenceRelationType(userContext, ReferenceRelationTypeId.Source), Reference = null, ReferenceId = newReference.Id }; return(newReferenceRelation); } if (newObject is ITaxonName) { IUserContext userContext = CoreData.UserManager.GetCurrentUser(); ReferenceRelation newReferenceRelation = new ReferenceRelation() { RelatedObjectGuid = ((ITaxonName)newObject).Guid, Type = CoreData.ReferenceManager.GetReferenceRelationType(userContext, ReferenceRelationTypeId.Source), Reference = null, ReferenceId = newReference.Id }; return(newReferenceRelation); } return(null); }
public void CreateReferenceRelations() { IReferenceRelation referenceRelation; ITaxon taxon; ReferenceRelationList referenceRelations; referenceRelations = new ReferenceRelationList(); taxon = CoreData.TaxonManager.GetTaxon(GetUserContext(), TaxonId.Bear); referenceRelation = new ReferenceRelation(); referenceRelation.DataContext = new DataContext(GetUserContext()); referenceRelation.Reference = null; referenceRelation.ReferenceId = 100; referenceRelation.RelatedObjectGuid = taxon.Guid; referenceRelation.Type = CoreData.ReferenceManager.GetReferenceRelationType(GetUserContext(), ReferenceRelationTypeId.Source); referenceRelations.Add(referenceRelation); taxon = CoreData.TaxonManager.GetTaxon(GetUserContext(), TaxonId.Beaver); referenceRelation = new ReferenceRelation(); referenceRelation.DataContext = new DataContext(GetUserContext()); referenceRelation.Reference = null; referenceRelation.ReferenceId = 100; referenceRelation.RelatedObjectGuid = taxon.Guid; referenceRelation.Type = CoreData.ReferenceManager.GetReferenceRelationType(GetUserContext(), ReferenceRelationTypeId.Source); referenceRelations.Add(referenceRelation); using (ITransaction transaction = GetUserContext().StartTransaction()) { GetReferenceManager(true).CreateReferenceRelations(GetUserContext(), referenceRelations); } }
/// <summary> /// Convert a WebReferenceRelation instance /// to a IReferenceRelation instance. /// </summary> /// <param name="userContext"> /// Information about the user that makes this method call. /// </param> /// <param name="webReferenceRelation">A WebReferenceRelation object.</param> /// <returns>A IReferenceRelation instance.</returns> private IReferenceRelation GetReferenceRelation(IUserContext userContext, WebReferenceRelation webReferenceRelation) { IReferenceRelation referenceRelation; referenceRelation = new ReferenceRelation(); UpdateReferenceRelation(userContext, referenceRelation, webReferenceRelation); return(referenceRelation); }
public void CreateReferenceRelation() { IReferenceRelation referenceRelation; using (ITransaction transaction = GetUserContext().StartTransaction()) { referenceRelation = new ReferenceRelation(); referenceRelation.RelatedObjectGuid = "test:dyntaxa.se:1"; referenceRelation.Type = CoreData.ReferenceManager.GetReferenceRelationType(GetUserContext(), 1); referenceRelation.ReferenceId = 171; GetReferenceDataSource(true).CreateReferenceRelation(GetUserContext(), referenceRelation); Assert.IsNotNull(referenceRelation); Assert.IsTrue(referenceRelation.Id > 0); } }
/// <summary> /// Get dyntaxa reference relation /// </summary> /// <param name="taxonRevision"></param> /// <returns></returns> public static List <IReferenceRelation> GetDyntaxaRevisionReferenceRelation(ITaxonRevision taxonRevision) { var referencesToAdd = new List <IReferenceRelation>(); IUserContext userContext = CoreData.UserManager.GetCurrentUser(); ReferenceRelation newReferenceRelation = new ReferenceRelation() { RelatedObjectGuid = taxonRevision.Guid, Type = CoreData.ReferenceManager.GetReferenceRelationType(userContext, ReferenceRelationTypeId.Source), Reference = null, ReferenceId = DyntaxaReference }; referencesToAdd.Add(newReferenceRelation); return(referencesToAdd); }
/// <summary> /// Gets the reference relations that will be created. /// </summary> /// <param name="guid">The unique identifier.</param> /// <param name="newReferences">The new references.</param> /// <param name="applyMode">The apply mode.</param> /// <returns>A list with all reference relations that will be created.</returns> private ReferenceRelationList GetReferenceRelationsThatWillBeCreated(string guid, ReferenceViewModel[] newReferences, ReferenceApplyMode applyMode) { ReferenceRelationList referencesToAdd = new ReferenceRelationList(); IEnumerable <IReferenceRelation> existingReferenceRelations = CoreData.ReferenceManager.GetReferenceRelations(user, guid); if (applyMode == ReferenceApplyMode.ReplaceOnlySourceInUnderlyingTaxa) { existingReferenceRelations = existingReferenceRelations.Where(referenceRelation => referenceRelation.Type.Id == (int)ReferenceRelationTypeId.Source); } foreach (ReferenceViewModel newReference in newReferences) { // If the new reference isn't source and we are in Replace only source in underlying mode, don't add this reference. if (applyMode == ReferenceApplyMode.ReplaceOnlySourceInUnderlyingTaxa && newReference.UsageTypeId != (int)ReferenceRelationTypeId.Source) { continue; } bool referenceAlreadyExists = existingReferenceRelations.Any(existingReferenceRelation => newReference.Id == existingReferenceRelation.ReferenceId && newReference.UsageTypeId == existingReferenceRelation.Type.Id); if (!referenceAlreadyExists) { IReference reference = new ArtDatabanken.Data.Reference(); reference.Id = newReference.Id; ReferenceRelation newReferenceRelation = new ReferenceRelation() { RelatedObjectGuid = guid, Type = CoreData.ReferenceManager.GetReferenceRelationType(user, newReference.UsageTypeId), Reference = null, ReferenceId = newReference.Id }; referencesToAdd.Add(newReferenceRelation); } } return(referencesToAdd); }