예제 #1
0
        public void TestChannelApp()
        {
            var employer = CreateEmployer(1);
            var member1  = CreateMember(employer, 1);
            var member2  = CreateMember(employer, 2);
            var member3  = CreateMember(employer, 3);
            var member4  = CreateMember(employer, 4);

            var channelApp1 = _channelsQuery.GetChannelApp(_channelsQuery.GetChannel("Web").Id, "Web");
            var channelApp2 = _channelsQuery.GetChannelApp(_channelsQuery.GetChannel("API").Id, "iOS");

            _employerMemberViewsCommand.CheckCanAccessMember(channelApp1, employer, member1, MemberAccessReason.Unlock);
            _employerMemberViewsCommand.AccessMember(channelApp1, employer, member1, MemberAccessReason.Unlock);
            _employerMemberViewsCommand.CheckCanAccessMember(channelApp2, employer, member2, MemberAccessReason.Unlock);
            _employerMemberViewsCommand.AccessMember(channelApp2, employer, member2, MemberAccessReason.Unlock);

            var views = new ProfessionalViews {
                member1, member3
            };

            _employerMemberViewsCommand.AccessMembers(channelApp2, employer, views, MemberAccessReason.Unlock);

            _employerMemberViewsCommand.CheckCanAccessMember(channelApp1, employer, member4, MemberAccessReason.Unlock);
            _employerMemberViewsCommand.AccessMember(channelApp1, employer, member4, MemberAccessReason.Unlock);

            AssertMemberAccesses(employer.Id, member1.Id, channelApp1, channelApp2);
            AssertMemberAccesses(employer.Id, member2.Id, channelApp2);
            AssertMemberAccesses(employer.Id, member3.Id, channelApp2);
        }
예제 #2
0
        public void TestGetMemberViews()
        {
            var channel = _channelsQuery.GetChannel("Web");
            var app     = _channelsQuery.GetChannelApp(channel.Id, "Web");

            Assert.AreEqual(0, _employerMemberAccessReportsQuery.GetEmployerMemberViewingReport(channel, DayRange.Today).TotalViewings);

            // Make some viewings.

            var employer1 = _employersCommand.CreateTestEmployer(1, _organisationsCommand.CreateTestOrganisation(1));
            var employer2 = _employersCommand.CreateTestEmployer(2, _organisationsCommand.CreateTestOrganisation(2));
            var member1   = _membersCommand.CreateTestMember(1);
            var member2   = _membersCommand.CreateTestMember(2);
            var member3   = _membersCommand.CreateTestMember(3);

            _employerMemberViewsCommand.ViewMember(app, employer1, member1);
            Assert.AreEqual(1, _employerMemberAccessReportsQuery.GetEmployerMemberViewingReport(channel, DayRange.Today).TotalViewings);

            _employerMemberViewsCommand.ViewMember(app, employer1, member2);
            Assert.AreEqual(2, _employerMemberAccessReportsQuery.GetEmployerMemberViewingReport(channel, DayRange.Today).TotalViewings);

            _employerMemberViewsCommand.ViewMember(app, employer2, member1);
            Assert.AreEqual(3, _employerMemberAccessReportsQuery.GetEmployerMemberViewingReport(channel, DayRange.Today).TotalViewings);

            _employerMemberViewsCommand.ViewMember(app, employer2, member3);
            Assert.AreEqual(4, _employerMemberAccessReportsQuery.GetEmployerMemberViewingReport(channel, DayRange.Today).TotalViewings);
        }
예제 #3
0
        public void TestMemberViewsWithLinkMe()
        {
            // It used to be the case that we filtered out LinkMe employers from these reports but given the
            // changes in the company etc we will include them from now on because it makes things a whole lot
            // easier, and stats from LinkMe should not be significant now.

            var organisation = _organisationsCommand.CreateTestVerifiedOrganisation("LinkMe");
            var employer1    = _employersCommand.CreateTestEmployer(0, organisation);

            var employer2 = _employersCommand.CreateTestEmployer(2, _organisationsCommand.CreateTestOrganisation(2));
            var member1   = _membersCommand.CreateTestMember(1);
            var member2   = _membersCommand.CreateTestMember(2);
            var member3   = _membersCommand.CreateTestMember(3);

            // Make some viewings.

            var channel = _channelsQuery.GetChannel("Web");
            var app     = _channelsQuery.GetChannelApp(channel.Id, "Web");

            _employerMemberViewsCommand.ViewMember(app, employer1, member1);
            Assert.AreEqual(1, _dailyReportsQuery.GetDailyReport(DayRange.Today).MemberViewingReports["Web"].TotalViewings);

            _employerMemberViewsCommand.ViewMember(app, employer2, member1);
            Assert.AreEqual(2, _dailyReportsQuery.GetDailyReport(DayRange.Today).MemberViewingReports["Web"].TotalViewings);

            _employerMemberViewsCommand.ViewMember(app, employer1, member2);
            Assert.AreEqual(3, _dailyReportsQuery.GetDailyReport(DayRange.Today).MemberViewingReports["Web"].TotalViewings);

            _employerMemberViewsCommand.ViewMember(app, employer2, member3);
            Assert.AreEqual(4, _dailyReportsQuery.GetDailyReport(DayRange.Today).MemberViewingReports["Web"].TotalViewings);
        }
예제 #4
0
        public void TestAccess()
        {
            var member   = CreateMember(0);
            var employer = CreateEmployer(0);

            Assert.AreEqual(0, _employerViewsRepository.GetMemberViewings(employer.Id, member.Id).Count);

            LogIn(employer);
            AssertJsonSuccess(Candidate(member.Id));

            var viewings = _employerViewsRepository.GetMemberViewings(employer.Id, member.Id);

            Assert.AreEqual(1, viewings.Count);

            Assert.AreEqual(_channelsQuery.GetChannel("API").Id, viewings[0].ChannelId);
            Assert.AreEqual(_channelsQuery.GetChannelApp(_channelsQuery.GetChannel("API").Id, "iOS").Id, viewings[0].AppId);
        }
예제 #5
0
        public void TestChannelApp()
        {
            var member1  = CreateMember(1);
            var member2  = CreateMember(2);
            var member3  = CreateMember(3);
            var employer = CreateEmployer(1);

            var channelApp1 = _channelsQuery.GetChannelApp(_channelsQuery.GetChannel("Web").Id, "Web");
            var channelApp2 = _channelsQuery.GetChannelApp(_channelsQuery.GetChannel("API").Id, "iOS");

            _employerMemberViewsCommand.ViewMember(channelApp1, employer, member1);
            _employerMemberViewsCommand.ViewMember(channelApp2, employer, member1);
            _employerMemberViewsCommand.ViewMember(channelApp2, employer, member2);
            _employerMemberViewsCommand.ViewMember(channelApp2, employer, member3);

            AssertMemberViewings(employer.Id, member1.Id, channelApp1, channelApp2);
            AssertMemberViewings(employer.Id, member2.Id, channelApp2);
            AssertMemberViewings(employer.Id, member3.Id, channelApp2);
        }
예제 #6
0
        public void TestAccess()
        {
            var member   = CreateMember();
            var employer = CreateEmployer();

            Allocate(employer.Id, null);

            Assert.AreEqual(0, _employerViewsRepository.GetMemberAccesses(employer.Id, member.Id).Count);

            LogIn(employer);
            AssertJsonSuccess(PhoneNumbers(member.Id));

            var accesses = _employerViewsRepository.GetMemberAccesses(employer.Id, member.Id);

            Assert.AreEqual(1, accesses.Count);

            Assert.AreEqual(MemberAccessReason.PhoneNumberViewed, accesses[0].Reason);
            Assert.AreEqual(_channelsQuery.GetChannel("API").Id, accesses[0].ChannelId);
            Assert.AreEqual(_channelsQuery.GetChannelApp(_channelsQuery.GetChannel("API").Id, "iOS").Id, accesses[0].AppId);
        }
예제 #7
0
        DailyReport IDailyReportsQuery.GetDailyReport(DayRange day)
        {
            var week  = new DateTimeRange(day.Start.Value.AddDays(-7), day.End.Value);
            var month = new DateTimeRange(day.Start.Value.AddMonths(-1), day.End.Value);

            var web      = _channelsQuery.GetChannel("Web");
            var api      = _channelsQuery.GetChannel("API");
            var channels = new[] { web, api };

            var userTypes = new[] { UserType.Member, UserType.Employer, UserType.Administrator, UserType.Custodian };

            return(new DailyReport
            {
                Day = day,
                OpenJobAds = _jobAdReportsQuery.GetOpenJobAds(),
                ResumeSearchAlerts = _memberSearchReportsQuery.GetMemberSearchAlerts(),
                JobSearchAlerts = _jobAdSearchReportsQuery.GetJobAdSearchAlerts(),
                JobSearches = _jobAdSearchReportsQuery.GetJobAdSearches(day),
                InternalJobApplications = _jobAdReportsQuery.GetInternalApplications(day),
                ExternalJobApplications = _jobAdReportsQuery.GetExternalApplications(day),
                InvitationsSent = _networkingReportsQuery.GetInvitationsSent(day),
                InvitationsAccepted = _networkingReportsQuery.GetInvitationsAccepted(day),
                AcceptanceRateLast48Hours = (int)_networkingReportsQuery.Get48HourInvitationAcceptancePercent(),
                AcceptanceRatePreviousMonth = (int)_networkingReportsQuery.GetMonthlyInvitationAcceptancePercent(),

                MemberReport = new MemberReport
                {
                    Total = _accountReportsQuery.GetUsers(UserType.Member, day.End.Value),
                    Enabled = _accountReportsQuery.GetEnabledUsers(UserType.Member, day.End.Value),
                    Active = _accountReportsQuery.GetActiveUsers(UserType.Member, day.End.Value),
                    New = _accountReportsQuery.GetNewUsers(UserType.Member, day),
                },

                ResumeReport = new ResumeReport
                {
                    Total = _resumeReportsQuery.GetResumes(day.End.Value),
                    Searchable = _resumeReportsQuery.GetSearchableResumes(day.End.Value),
                    New = _resumeReportsQuery.GetNewResumes(day),
                    Uploaded = _resumeReportsQuery.GetUploadedResumes(day),
                    Reloaded = _resumeReportsQuery.GetReloadedResumes(day),
                    Edited = _resumeReportsQuery.GetEditedResumes(day),
                    Updated = _resumeReportsQuery.GetUpdatedResumes(day),
                },

                // Logins.

                DailyLogIns = (from u in userTypes select new { UserType = u, LogIns = _accountReportsQuery.GetLogIns(u, day) }).ToDictionary(x => x.UserType, x => x.LogIns),
                WeeklyLogIns = (from u in userTypes select new { UserType = u, LogIns = _accountReportsQuery.GetLogIns(u, week) }).ToDictionary(x => x.UserType, x => x.LogIns),
                MonthlyLogIns = (from u in userTypes select new { UserType = u, LogIns = _accountReportsQuery.GetLogIns(u, month) }).ToDictionary(x => x.UserType, x => x.LogIns),

                // Member search reports.

                MemberSearchReports = (from c in channels
                                       select new
                {
                    c.Name,
                    Report = new MemberSearchReport
                    {
                        TotalSearches = _memberSearchReportsQuery.GetMemberSearches(c, day),
                        FilterSearches = _memberSearchReportsQuery.GetFilterMemberSearches(c, day),
                        SavedSearches = _memberSearchReportsQuery.GetSavedMemberSearches(c, day),
                        AnonymousSearches = _memberSearchReportsQuery.GetAnonymousMemberSearches(c, day),
                    }
                }).ToDictionary(x => x.Name, x => x.Report),

                MemberViewingReports = (from c in channels
                                        select new
                {
                    c.Name,
                    Report = _employerMemberAccessReportsQuery.GetEmployerMemberViewingReport(c, day),
                }).ToDictionary(x => x.Name, x => x.Report),

                MemberAccessReports = (from c in channels
                                       select new
                {
                    c.Name,
                    Report = _employerMemberAccessReportsQuery.GetEmployerMemberAccessReport(c, day),
                }).ToDictionary(x => x.Name, x => x.Report),

                // Others.

                OrderReports = _orderReportsQuery.GetOrderReports(day),
                CommunciationReports = GetCommunicationReports(day),
                PromotionCodeReports = _registrationReportsQuery.GetPromotionCodeReports(day).ToDictionary(x => x.Key, x => x.Value),
                JobAdIntegrationReports = GetJobAdIntegrationReports(day),
            });
        }
예제 #8
0
        public void TestUnknownChannel()
        {
            const string channelName = "Unknown";

            Assert.IsNull(_channelsQuery.GetChannel(channelName));
        }
예제 #9
0
 private void InitialiseContext(ILocationQuery locationQuery, IChannelsQuery channelsQuery)
 {
     _eventSource.Raise(Event.Information, "InitialiseContext", "Initializing context...");
     ActivityContext.Current.Register(new SessionVerticalContext());
     ActivityContext.Current.Register(new SessionCommunityContext());
     ActivityContext.Current.Register(new HttpContextLocationContext(locationQuery.GetCountry("Australia")));
     ActivityContext.Current.Register(new ChannelContext(channelsQuery.GetChannelApp(channelsQuery.GetChannel("Web").Id, "Web")));
 }
예제 #10
0
 private static void InitialiseContext(IChannelsQuery channelsQuery)
 {
     ActivityContext.Current.Register(new ChannelContext(channelsQuery.GetChannelApp(channelsQuery.GetChannel("API").Id, "iOS")));
 }