Example #1
0
        public override CommandState QueryState(CommandContext context)
        {
            if (Settings.MissingKeys())
            {
                return(CommandState.Disabled);
            }

            Item ctxItem = DataWrapper?.ExtractItem(context);

            if (ctxItem == null || !MediaWrapper.IsMediaFile(ctxItem))
            {
                return(CommandState.Hidden);
            }

            var persons = PersonGroupService.GetAllPersonItems(ctxItem.Database.Name);

            if (persons == null || !persons.Any())
            {
                return(CommandState.Hidden);
            }

            var searchResult = SearchService.GetSearchResult(ctxItem.ID.ToString(), ctxItem.Language.Name, ctxItem.Database.Name);

            if (searchResult == null)
            {
                return(CommandState.Hidden);
            }

            var faceIds      = searchResult.FacialAnalysis?.Select(a => a.FaceId).ToArray() ?? new Guid[0];
            var peopleDiffer = searchResult.People == null || searchResult.People.Length != faceIds.Length;

            return(peopleDiffer
                ? CommandState.Enabled
                : CommandState.Hidden);
        }
Example #2
0
        public override CommandState QueryState(CommandContext context)
        {
            if (Settings.MissingKeys())
            {
                return(CommandState.Disabled);
            }

            Item ctxItem = DataWrapper?.ExtractItem(context);

            if (ctxItem == null || !MediaWrapper.IsMediaFile(ctxItem))
            {
                return(CommandState.Hidden);
            }

            var hasPersons = PersonGroupService.GetAllPersonItems(ctxItem.Database.Name).Any();

            if (!hasPersons)
            {
                return(CommandState.Hidden);
            }

            var faces = SearchService
                        .GetImageAnalysis(ctxItem.ID.ToString(), ctxItem.Language.Name, ctxItem.Database.Name)
                        ?.FacialAnalysis;
            var hasOneFace = faces != null && faces.Length == 1;

            if (!hasOneFace)
            {
                return(CommandState.Hidden);
            }

            //show on images that have no face item pointing to them
            var links       = Globals.LinkDatabase.GetItemReferrers(ctxItem, false);
            var hasFaceLink = links
                              .Any(a => a.GetSourceItem().TemplateID.Guid == Settings.PersonFaceTemplateId.Guid);

            return(hasFaceLink
                ? CommandState.Hidden
                : CommandState.Enabled);
        }
Example #3
0
        public void PersonGroupService_GetAsync_ReturnsPersonGroups()
        {
            //Arrange
            var mockDbContextScopeFac = new Mock<IDbContextScopeFactory>();
            var mockDbContextScope = new Mock<IDbContextReadOnlyScope>();
            var mockEfDbContext = new Mock<EFDbContext>();
            mockDbContextScopeFac.Setup(x => x.CreateReadOnly(DbContextScopeOption.JoinExisting)).Returns(mockDbContextScope.Object);
            mockDbContextScope.Setup(x => x.DbContexts.Get<EFDbContext>()).Returns(mockEfDbContext.Object);

            var mockAppUserManager = new Mock<IAppUserManager>();
            var mockDbUserService = new Mock<DBUserService>(new object[] {mockDbContextScopeFac.Object, mockAppUserManager.Object,  true });
            var mockPersonService = new Mock<PersonService>(new object[] { mockDbContextScopeFac.Object, mockDbUserService.Object });

            var dbEntry1 = new PersonGroup { Id = "dummyEntryId1", PrsGroupName = "PersonGroup1", PrsGroupAltName = "PersonGroupAlt1", IsActive_bl = false  };
            var dbEntry2 = new PersonGroup { Id = "dummyEntryId2", PrsGroupName = "PersonGroup2", PrsGroupAltName = "PersonGroupAlt2", IsActive_bl = true  };
            var dbEntries = (new List<PersonGroup> { dbEntry1, dbEntry2 }).AsQueryable();

            var mockDbSet = new Mock<DbSet<PersonGroup>>();
            mockDbSet.As<IDbAsyncEnumerable<PersonGroup>>().Setup(m => m.GetAsyncEnumerator()).Returns(new MockDbAsyncEnumerator<PersonGroup>(dbEntries.GetEnumerator())); 
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Provider).Returns(new MockDbAsyncQueryProvider<PersonGroup>(dbEntries.Provider));
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Expression).Returns(dbEntries.Expression);
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.ElementType).Returns(dbEntries.ElementType);
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.GetEnumerator()).Returns(dbEntries.GetEnumerator());
            mockDbSet.Setup(x => x.Include(It.IsAny<string>())).Returns(mockDbSet.Object);
            
            mockEfDbContext.Setup(x => x.PersonGroups).Returns(mockDbSet.Object);

            var PersonGroupService = new PersonGroupService(mockDbContextScopeFac.Object, "dummyUserId");

            //Act
            var resultPersonGroups = PersonGroupService.GetAsync().Result;
            
            //Assert
            Assert.IsTrue(resultPersonGroups.Count == 1);
            Assert.IsTrue(resultPersonGroups[0].PrsGroupAltName.Contains("PersonGroupAlt2"));
        }
Example #4
0
        public void PersonGroupService_LookupAsync_ReturnsNoRecordsIfNotActive()
        {
            // Arrange
            var mockDbContextScopeFac = new Mock<IDbContextScopeFactory>();
            var mockDbContextScope = new Mock<IDbContextReadOnlyScope>();
            var mockEfDbContext = new Mock<EFDbContext>();
            mockDbContextScopeFac.Setup(x => x.CreateReadOnly(DbContextScopeOption.JoinExisting)).Returns(mockDbContextScope.Object);
            mockDbContextScope.Setup(x => x.DbContexts.Get<EFDbContext>()).Returns(mockEfDbContext.Object);

            var mockAppUserManager = new Mock<IAppUserManager>();
            var mockDbUserService = new Mock<DBUserService>(new object[] {mockDbContextScopeFac.Object, mockAppUserManager.Object,  true });
            var mockPersonService = new Mock<PersonService>(new object[] { mockDbContextScopeFac.Object, mockDbUserService.Object });

            var groupManager1 = new Person { Id = "dummyUserId1", FirstName = "Firs1", LastName = "Last1" };

            var dbEntry1 = new PersonGroup { Id = "dummyId1", PrsGroupName = "PersonGroup1", PrsGroupAltName = "PersonGroupAlt1", IsActive_bl = true,
                GroupManagers = new List<Person>{groupManager1} };
            var dbEntry2 = new PersonGroup { Id = "dummyId2", PrsGroupName = "PersonGroup2", PrsGroupAltName = "PersonGroupAlt2", IsActive_bl = false,
                GroupManagers = new List<Person>{groupManager1} };
            var dbEntry3 = new PersonGroup { Id = "dummyId3", PrsGroupName = "PersonGroup3", PrsGroupAltName = "PersonGroupAlt3", IsActive_bl = true,
                GroupManagers = new List<Person>{groupManager1} };

            var dbEntries = (new List<PersonGroup> { dbEntry1, dbEntry2, dbEntry3 }).AsQueryable();

            var mockDbSet = new Mock<DbSet<PersonGroup>>();
            mockDbSet.As<IDbAsyncEnumerable<PersonGroup>>().Setup(m => m.GetAsyncEnumerator()).Returns(new MockDbAsyncEnumerator<PersonGroup>(dbEntries.GetEnumerator()));
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Provider).Returns(new MockDbAsyncQueryProvider<PersonGroup>(dbEntries.Provider));
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.Expression).Returns(dbEntries.Expression);
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.ElementType).Returns(dbEntries.ElementType);
            mockDbSet.As<IQueryable<PersonGroup>>().Setup(m => m.GetEnumerator()).Returns(dbEntries.GetEnumerator());
            mockEfDbContext.Setup(x => x.PersonGroups).Returns(mockDbSet.Object);

            var PersonGroupService = new PersonGroupService(mockDbContextScopeFac.Object, groupManager1.Id);

            //Act
            var returnedPersonGroups = PersonGroupService.LookupAsync("website2", true).Result;

            //Assert
            Assert.IsTrue(returnedPersonGroups.Count == 0);
        }
Example #5
0
 //Constructors---------------------------------------------------------------------------------------------------------//
 public PersonGroupSrvController(PersonGroupService personGroupService)
 {
     this.personGroupService = personGroupService;
 }