示例#1
0
 public ExperienceData(VisitsRepository visitsRepository, PersonalInfoRepository personalInfoRepository, OnsiteBehaviorRepository onsiteBehaviorRepository, ReferralRepository referralRepository, ITrackerService trackerService)
 {
     this.Visits         = visitsRepository.Get();
     this.PersonalInfo   = personalInfoRepository.Get();
     this.OnsiteBehavior = onsiteBehaviorRepository.Get();
     this.Referral       = referralRepository.Get();
     this.IsActive       = trackerService.IsActive;
 }
示例#2
0
        public ExperienceData(IContactProfileProvider contactProfileProvider, IProfileProvider profileProvider)
        {
            this.contactProfileProvider = contactProfileProvider;
            this.profileProvider        = profileProvider;

            Visits         = new VisitsRepository(contactProfileProvider).Get();
            PersonalInfo   = new PersonalInfoRepository(contactProfileProvider).Get();
            OnsiteBehavior = new OnsiteBehaviorRepository(profileProvider).Get();
            Referral       = new ReferralRepository().Get();
        }
示例#3
0
        public ActionResult Index()
        {
            var repo = new VisitsRepository(Properties.Settings.Default.ConStr);

            repo.AddVisit(Request.UserHostAddress);
            var vm = new HomePageViewModel
            {
                FiveMostFrequentIPs = repo.GetFiveMostFrequentIPs(),
                TodayCount          = repo.GetVisitCountForToday(),
                MostPopularIP       = repo.GetMostPopularIpAddress()
            };

            return(View(vm));
        }
        public RetrieveResponse <VisitsPerMonthLineChartResponse> VisitsPerMonthLineChart(IDbConnection connection)
        {
            var response = new VisitsPerMonthLineChartResponse();

            var visitTypes = new VisitTypesRepository().List(connection, new ListRequest()).Entities;

            //if (visitTypes.Any())
            //    response.Labels = visitTypes.Select(vt => vt.Name).ToList();
            for (int i = 0; i < 6; i++)
            {
                response.labels.Add(DateTime.Now.AddMonths(-i).ToString("MMMM"));
            }

            foreach (var visitTypesRow in visitTypes)
            {
                var dataset = new VisitsPerMonthLineChartResponse.Dataset();
                dataset.label           = visitTypesRow.Name;
                dataset.backgroundColor = visitTypesRow.BackgroundColor;
                dataset.borderColor     = visitTypesRow.BackgroundColor;

                var visitReq = new ListRequest();
                visitReq.ColumnSelection = ColumnSelection.KeyOnly;

                var visitFlds = VisitsRow.Fields;
                visitReq.IncludeColumns = new HashSet <string>
                {
                    visitFlds.StartDate.Name,
                    visitFlds.EndDate.Name,
                    visitFlds.VisitTypeId.Name
                };
                for (int i = 0; i < 6; i++)
                {
                    var firstDayOfMonth = new DateTime(DateTime.Now.AddMonths(-i).Year,
                                                       DateTime.Now.AddMonths(-i).Month, 1);
                    var lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1);

                    visitReq.Criteria = (new Criteria(visitFlds.StartDate.Name) >= firstDayOfMonth
                                         & new Criteria(visitFlds.EndDate.Name) <= lastDayOfMonth
                                         & new Criteria(visitFlds.VisitTypeId.Name) == visitTypesRow.VisitTypeId.Value);

                    var visits = new VisitsRepository().List(connection, visitReq);
                    dataset.data.Add(visits.TotalCount);
                }
                response.datasets.Add(dataset);
            }
            return(new RetrieveResponse <VisitsPerMonthLineChartResponse> {
                Entity = response
            });
        }
示例#5
0
        public IActionResult Index()
        {
            var repo = new VisitsRepository(_connectionString);
            var ip   = Request.HttpContext.Connection.RemoteIpAddress.ToString();

            if (ip == "::1")
            {
                ip = "127.0.0.1";
            }
            repo.AddVisit(ip);
            var vm = new HomePageViewModel
            {
                FiveMostFrequentIPs = repo.GetFiveMostFrequentIPs(),
                TodayCount          = repo.GetVisitCountForToday(),
                MostPopularIP       = repo.GetMostPopularIpAddress()
            };

            return(View(vm));
        }
示例#6
0
        public void Get_PageViews_ReturnReversedPages(ITracker tracker, [Frozen] IContactFacetsProvider contactProfileProvider, [Frozen] IPageViewRepository viewRepository, VisitsRepository visitsRepository)
        {
            //Arrange
            this.InitTracker(tracker);
            var pages = new List <ICurrentPageContext>
            {
                this.GeneratePage(path: "0"),
                this.GeneratePage(path: "1"),
                this.GeneratePage(path: "2")
            };

            tracker.Interaction.GetPages().Returns(pages);
            contactProfileProvider.Contact.Returns(x => tracker.Contact);
            viewRepository.Get(Arg.Any <ICurrentPageContext>()).Returns(x => new PageView()
            {
                Path = x.Arg <ICurrentPageContext>().Url.Path
            });

            using (new TrackerSwitcher(tracker))
            {
                //Act
                var visits = visitsRepository.Get();
                //Assert
                visits.PageViews.Select(x => x.Path).Should().BeEquivalentTo("2", "1", "0");
            }
        }
示例#7
0
        public void Get_PageViews_DoNotReturnCancelledPages(ITracker tracker, [Frozen] IContactFacetsProvider contactProfileProvider, VisitsRepository visitsRepository)
        {
            //Arrange
            this.InitTracker(tracker);
            var pages = new List <ICurrentPageContext>
            {
                this.GeneratePage(false),
                this.GeneratePage(true),
                this.GeneratePage(false)
            };

            tracker.Interaction.GetPages().Returns(pages);
            contactProfileProvider.Contact.Returns(x => tracker.Contact);
            ;

            using (new TrackerSwitcher(tracker))
            {
                //Act
                var visits = visitsRepository.Get();
                //Assert
                visits.PageViews.Should().HaveCount(2);
                visits.TotalPageViews.Should().Be(2);
            }
        }
示例#8
0
        public void Get_Value_ReturnsEngagementValue(int value, ITracker tracker, [Frozen] IContactFacetsProvider contactProfileProvider, VisitsRepository visitsRepository)
        {
            //Arrange
            this.InitTracker(tracker);
            contactProfileProvider.Contact.Returns(x => tracker.Contact);
            tracker.Contact.System.Value.Returns(value);

            using (new TrackerSwitcher(tracker))
            {
                //Act
                var visits = visitsRepository.Get();
                //Assert
                visits.EngagementValue.Should().Be(value);
            }
        }
示例#9
0
        public void Get_SeveralVisits_ReturnsTotalVisitsCount(int visitCount, ITracker tracker, [Frozen] IContactFacetsProvider contactProfileProvider, VisitsRepository visitsRepository)
        {
            //Arrange
            this.InitTracker(tracker);
            contactProfileProvider.Contact.Returns(x => tracker.Contact);
            tracker.Contact.System.VisitCount.Returns(visitCount);

            using (new TrackerSwitcher(tracker))
            {
                //Act
                var visits = visitsRepository.Get();
                //Assert
                visits.TotalVisits.Should().Be(visitCount);
            }
        }
示例#10
0
        public void Get_PageViews_ReturnOnly10Pages(ITracker tracker, [Frozen] IContactFacetsProvider contactProfileProvider, VisitsRepository visitsRepository)
        {
            //Arrange
            this.InitTracker(tracker);
            var pages = Enumerable.Repeat(this.GeneratePage(), 15);

            tracker.Interaction.GetPages().Returns(pages);
            contactProfileProvider.Contact.Returns(x => tracker.Contact);
            ;

            using (new TrackerSwitcher(tracker))
            {
                //Act
                var visits = visitsRepository.Get();
                //Assert
                visits.PageViews.Should().HaveCount(10);
                visits.TotalPageViews.Should().Be(15);
            }
        }
示例#11
0
 public VisitsService()
 {
     _repo = new VisitsRepository();
 }