public void Can_Perform_Add_On_RelationTypeRepository() { // Arrange var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); using (var repository = CreateRepository(unitOfWork)) { // Act var relateMemberToContent = new RelationType(new Guid(Constants.ObjectTypes.Member), new Guid(Constants.ObjectTypes.Document), "relateMemberToContent") {IsBidirectional = true, Name = "Relate Member to Content"}; repository.AddOrUpdate(relateMemberToContent); unitOfWork.Commit(); // Assert Assert.That(relateMemberToContent.HasIdentity, Is.True); Assert.That(repository.Exists(relateMemberToContent.Id), Is.True); } }
public void Can_Perform_Add_On_RelationTypeRepository() { // Arrange var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); var repository = new RelationTypeRepository(unitOfWork); // Act var relateMemberToContent = new RelationType(new Guid("39eb0f98-b348-42a1-8662-e7eb18487560"), new Guid("C66BA18E-EAF3-4CFF-8A22-41B16D66A972"), "relateMemberToContent") {IsBidirectional = true, Name = "Relate Member to Content"}; repository.AddOrUpdate(relateMemberToContent); unitOfWork.Commit(); // Assert Assert.That(relateMemberToContent.HasIdentity, Is.True); Assert.That(repository.Exists(relateMemberToContent.Id), Is.True); }
/// <summary> /// Creates the RelationType needed in Umbraco to store Media-Content relations /// </summary> private void CreateRelationType() { // RelationService IRelationService rs = ApplicationContext.Current.Services.RelationService; // Create new RelationType var relationType = new RelationType(Constants.RelationTypeDocument, Constants.RelationTypeMedia, Constants.RelationTypeAlias, Constants.RelationTypeName); relationType.IsBidirectional = true; rs.Save(relationType); LogHelper.Info<MediaContentUsage>(String.Format("Created RelationType '{0}' with alias '{1}'", Constants.RelationTypeName, Constants.RelationTypeAlias)); }
public Relation(int parentId, int childId, RelationType relationType) { _parentId = parentId; _childId = childId; _relationType = relationType; }
public void CreateTestData() { var relateContent = new RelationType(new Guid("C66BA18E-EAF3-4CFF-8A22-41B16D66A972"), new Guid("C66BA18E-EAF3-4CFF-8A22-41B16D66A972"), "relateContentOnCopy"){IsBidirectional = true, Name = "Relate Content on Copy"}; var relateContentType = new RelationType(new Guid("A2CB7800-F571-4787-9638-BC48539A0EFB"), new Guid("A2CB7800-F571-4787-9638-BC48539A0EFB"), "relateContentTypeOnCopy") { IsBidirectional = true, Name = "Relate ContentType on Copy" }; var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); var repository = new RelationTypeRepository(unitOfWork); repository.AddOrUpdate(relateContent);//Id 2 repository.AddOrUpdate(relateContentType);//Id 3 unitOfWork.Commit(); }
public void CreateTestData() { var relateContent = new RelationType(new Guid(Constants.ObjectTypes.Document), new Guid("C66BA18E-EAF3-4CFF-8A22-41B16D66A972"), "relateContentOnCopy") { IsBidirectional = true, Name = "Relate Content on Copy" }; var relateContentType = new RelationType(new Guid(Constants.ObjectTypes.DocumentType), new Guid("A2CB7800-F571-4787-9638-BC48539A0EFB"), "relateContentTypeOnCopy") { IsBidirectional = true, Name = "Relate ContentType on Copy" }; var provider = new PetaPocoUnitOfWorkProvider(); var unitOfWork = provider.GetUnitOfWork(); var relationTypeRepository = new RelationTypeRepository(unitOfWork); var relationRepository = new RelationRepository(unitOfWork, NullCacheProvider.Current, relationTypeRepository); relationTypeRepository.AddOrUpdate(relateContent); relationTypeRepository.AddOrUpdate(relateContentType); unitOfWork.Commit(); //Create and Save ContentType "umbTextpage" -> 1045 ContentType contentType = MockedContentTypes.CreateSimpleContentType("umbTextpage", "Textpage"); ServiceContext.ContentTypeService.Save(contentType); //Create and Save Content "Homepage" based on "umbTextpage" -> 1046 Content textpage = MockedContent.CreateSimpleContent(contentType); ServiceContext.ContentService.Save(textpage, 0); //Create and Save Content "Text Page 1" based on "umbTextpage" -> 1047 Content subpage = MockedContent.CreateSimpleContent(contentType, "Text Page 1", textpage.Id); ServiceContext.ContentService.Save(subpage, 0); //Create and Save Content "Text Page 1" based on "umbTextpage" -> 1048 Content subpage2 = MockedContent.CreateSimpleContent(contentType, "Text Page 2", textpage.Id); ServiceContext.ContentService.Save(subpage2, 0); var relation = new Relation(textpage.Id, subpage.Id, relateContent) { Comment = string.Empty }; var relation2 = new Relation(textpage.Id, subpage2.Id, relateContent) { Comment = string.Empty }; relationRepository.AddOrUpdate(relation); relationRepository.AddOrUpdate(relation2); unitOfWork.Commit(); }
/// <summary> /// Gets all <see cref="Relation"/> objects by their <see cref="RelationType"/> /// </summary> /// <param name="relationType"><see cref="RelationType"/> to retrieve Relations for</param> /// <returns>An enumerable list of <see cref="Relation"/> objects</returns> public IEnumerable<Relation> GetAllRelationsByRelationType(RelationType relationType) { return GetAllRelationsByRelationType(relationType.Id); }
/// <summary> /// Deletes all <see cref="Relation"/> objects based on the passed in <see cref="RelationType"/> /// </summary> /// <param name="relationType"><see cref="RelationType"/> to Delete Relations for</param> public void DeleteRelationsOfType(RelationType relationType) { var uow = _uowProvider.GetUnitOfWork(); using (var repository = _repositoryFactory.CreateRelationRepository(uow)) { var query = new Query<Relation>().Where(x => x.RelationTypeId == relationType.Id); var list = repository.GetByQuery(query).ToList(); foreach (var relation in list) { repository.Delete(relation); } uow.Commit(); } }
/// <summary> /// Deletes a <see cref="RelationType"/> /// </summary> /// <param name="relationType">RelationType to Delete</param> public void Delete(RelationType relationType) { var uow = _uowProvider.GetUnitOfWork(); using (var repository = _repositoryFactory.CreateRelationTypeRepository(uow)) { repository.Delete(relationType); uow.Commit(); } }
/// <summary> /// Checks whether any relations exists for the passed in <see cref="RelationType"/>. /// </summary> /// <param name="relationType"><see cref="RelationType"/> to check for relations</param> /// <returns>Returns <c>True</c> if any relations exists for the given <see cref="RelationType"/>, otherwise <c>False</c></returns> public bool HasRelations(RelationType relationType) { using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) { var query = new Query<Relation>().Where(x => x.RelationTypeId == relationType.Id); return repository.GetByQuery(query).Any(); } }
/// <summary> /// Relates two objects that are based on the <see cref="IUmbracoEntity"/> interface. /// </summary> /// <param name="parent">Parent entity</param> /// <param name="child">Child entity</param> /// <param name="relationType">The type of relation to create</param> /// <returns>The created <see cref="Relation"/></returns> public Relation Relate(IUmbracoEntity parent, IUmbracoEntity child, RelationType relationType) { //Ensure that the RelationType has an indentity before using it to relate two entities if(relationType.HasIdentity == false) Save(relationType); var relation = new Relation(parent.Id, child.Id, relationType); var uow = _uowProvider.GetUnitOfWork(); using (var repository = _repositoryFactory.CreateRelationRepository(uow)) { repository.AddOrUpdate(relation); uow.Commit(); return relation; } }