public Message GetClimbsOfLocationAtCheckIn(string id)
        {
            SvcContext ctx = InflateContext(); if (ctx.Invalid)

            {
                return(ctx.ContextMessage);
            }

            try
            {
                Guid ciID = Guid.ParseExact(id, "N");

                var ci = new VisitsService().GetCheckInById(ciID);
                if (ci == null)
                {
                    throw new Exception("Visit does not exist, it may have been deleted.");
                }

                ////-- TODO, check cache
                var loc = AppLookups.GetCacheIndexEntry(ci.LocationID);

                var dto = GetClimbsOfLocation(loc, ci.Utc);
                return(ReturnAsJson(dto));
            }
            catch (Exception ex)
            {
                return(Failed("Could not get climbs for visit: " + ex.Message));
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult GetAvailableClimbsForLogging(Guid id, string term)
        {
            var checkIn = new VisitsService().GetCheckInById(id);

            term = SanitizeClimbTerm(term);

            //-- because we cache on the client - no need to do here
            //var climbsAvailable = PerfCache.GetClimbsForCheckIn(checkIn.LocationID, checkIn.Utc);
            var climbsAvailable = geoSvc.GetClimbsOfLocationForLogging(checkIn.LocationID, checkIn.Utc);

            var matchClimbs = (from c in climbsAvailable
                               where
                               Regex.Match(c.GradeLocal ?? "Undefined", term, RegexOptions.IgnoreCase).Success ||
                               Regex.Match(c.Name, term, RegexOptions.IgnoreCase).Success ||
                               Regex.Match(SanitizeClimbTerm(c.Name), term, RegexOptions.IgnoreCase).Success
                               select new AvailableClimb {
                ID = c.ID, Name = c.Name, Thumb = c.AvatarRelativeUrl, Grade = c.GradeLocal
            }).ToList();

            if (matchClimbs.Count == 0)
            {
                matchClimbs.Add(new AvailableClimb()
                {
                    ID = Guid.Empty, Name = "No climbs found - add one now!", Thumb = string.Empty, Grade = string.Empty
                });
            }

            return(Json(matchClimbs));
        }
        public async Task GetVisitSessionByDeviceAndBrowserPair_ShouldReturnAllVisitsFromSession()
        {
            _mockEntityHelper = new Mock <IEntityHelper>();
            _mockEntityHelper.Setup(s => s.GetVisitSubset(visit2, new List <string> {
                ipAddress
            }
                                                          )).ReturnsAsync(new List <Visit> {
                visit0, visit1, visit2, visit3
            });
            VisitsService visitsService = new VisitsService(_mockEntityHelper.Object);
            var           visitSession  = await visitsService.GetVisitSessionByDeviceAndBrowserPair(visit2);

            Assert.Equal(visit2.IpAddress.Organization?.Name, visitSession.Organization);
            var visitSessionBlocks = visitSession.VisitSessionBlocks;

            Assert.Single(visitSessionBlocks);
            Assert.Equal(browser.Name, visitSessionBlocks[0].Browser);
            Assert.Equal(device.OperatingSystem, visitSessionBlocks[0].Device);
            Assert.Equal(4, visitSessionBlocks[0].Visits.Count);

            Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[0].IpAddress);
            Assert.Equal("", visitSessionBlocks[0].Visits[0].Location);
            Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[0].PageTitle);
            Assert.Equal(urlCompact, visitSessionBlocks[0].Visits[0].PageUrl);
            Assert.Equal("q=\"austin tech happy hour\" 2009", visitSessionBlocks[0].Visits[0].CameFrom);
            Assert.Equal("\"austin tech happy hour\" 2009, austin tech happy hour 2009", visitSessionBlocks[0].Visits[0].CombinedTerms);
            Assert.Equal(visit0, visitSessionBlocks[0].Visits[0].Visit);

            Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[1].IpAddress);
            Assert.Equal("", visitSessionBlocks[0].Visits[1].Location);
            Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[1].PageTitle);
            Assert.Equal("2008/20080911ATHH/?g2_page=2", visitSessionBlocks[0].Visits[1].PageUrl);
            Assert.Equal(cameFrom1, visitSessionBlocks[0].Visits[1].CameFrom);
            Assert.Null(visitSessionBlocks[0].Visits[1].CombinedTerms);
            Assert.Equal(visit1, visitSessionBlocks[0].Visits[1].Visit);

            Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[2].IpAddress);
            Assert.Equal("", visitSessionBlocks[0].Visits[2].Location);
            Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[2].PageTitle);
            Assert.Equal(urlCompact, visitSessionBlocks[0].Visits[2].PageUrl);
            Assert.Equal("q=\"austin tech happy hour\" 2009", visitSessionBlocks[0].Visits[2].CameFrom);
            Assert.Equal("\"austin tech happy hour\" 2009, austin tech happy hour 2009", visitSessionBlocks[0].Visits[2].CombinedTerms);
            Assert.Equal(visit2, visitSessionBlocks[0].Visits[2].Visit);

            Assert.Equal(ipAddress, visitSessionBlocks[0].Visits[3].IpAddress);
            Assert.Equal("", visitSessionBlocks[0].Visits[3].Location);
            Assert.Equal(pageTitle, visitSessionBlocks[0].Visits[3].PageTitle);
            Assert.Equal(urlCompact, visitSessionBlocks[0].Visits[3].PageUrl);
            Assert.Equal(cameFrom3, visitSessionBlocks[0].Visits[3].CameFrom);
            Assert.Null(visitSessionBlocks[0].Visits[3].CombinedTerms);
            Assert.Equal(visit3, visitSessionBlocks[0].Visits[3].Visit);
        }
            public void ThrowException_WhenPassedVisitIsNull()
            {
                // Arrange
                var efRepositoryMock = new Mock <IEfRepository <Visit> >();
                var commitMock       = new Mock <ISaveContext>();

                var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object);

                efRepositoryMock.Setup(r => r.Update(It.IsAny <Visit>()));

                // Act & Assert
                Assert.ThrowsException <ArgumentNullException>(() => visitsService.Update(null));
            }
            public void CreateServiceInstance_WhenParametersAreNotNull()
            {
                // Arrange
                var efRepositoryMock = new Mock <IEfRepository <Visit> >();
                var commitMock       = new Mock <ISaveContext>();

                // Act
                var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object);

                // Assert
                Assert.IsNotNull(visitsService);
                Assert.IsInstanceOfType(visitsService, typeof(IVisitsService));
            }
Exemple #6
0
            public void ReturnNullVisit_WhenPassedGuidIsNull()
            {
                // Arrange
                var efRepositoryMock = new Mock <IEfRepository <Visit> >();
                var commitMock       = new Mock <ISaveContext>();

                var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object);

                // Act
                Visit result = visitsService.GetById(null);

                // Assert
                Assert.IsNull(result);
            }
        public ActionResult DeleteLoggedClimb(Guid id, Guid loggedClimbID)
        {
            var checkIn = new VisitsService().GetCheckInById(id);

            if (checkIn != null && ModelState.IsValid)
            {
                new VisitsService().DeleteLoggedClimb(checkIn, loggedClimbID);

                return(Json(new { Success = true }));
            }
            else
            {
                return(Json(new { Success = false }));
            }
        }
        public async Task GetSubsequentSessionVisits_ShouldNotReturnVisitsNewerThanCertainTime()
        {
            _mockEntityHelper = new Mock <IEntityHelper>();
            _mockEntityHelper.Setup(s => s.GetVisitSubset(visit2, new List <string> {
                ipAddress
            }
                                                          )).ReturnsAsync(new List <Visit> {
                visit03, visit02, visit01, visit0, visit1, visit2, visit3, visit4, visit5, visit6
            });
            VisitsService visitsService           = new VisitsService(_mockEntityHelper.Object);
            List <Visit>  subsequentSessionVisits = await visitsService.GetSubsequentSessionVisits(visit2, new List <string> {
                ipAddress
            });

            Assert.Equal(visit2, subsequentSessionVisits[0]);
            Assert.Equal(visit3, subsequentSessionVisits[1]);
        }
        public async Task GetPrecedingSessionVisitsSessionVisits_ShouldReturnVisitsFromSessionEarlierThanGivenVisit()
        {
            _mockEntityHelper = new Mock <IEntityHelper>();
            _mockEntityHelper.Setup(s => s.GetVisitSubset(visit2, new List <string> {
                ipAddress
            }
                                                          )).ReturnsAsync(new List <Visit> {
                visit0, visit1, visit2, visit3
            });
            VisitsService visitsService          = new VisitsService(_mockEntityHelper.Object);
            List <Visit>  precedingSessionVisits = await visitsService.GetPrecedingSessionVisits(visit2, new List <string> {
                ipAddress
            });

            Assert.Equal(visit0, precedingSessionVisits[0]);
            Assert.Equal(visit1, precedingSessionVisits[1]);
        }
            public void CallRepositoryUpdateAndCommitOnce_WhenPassedVisitIsNotNull()
            {
                // Arrange
                var efRepositoryMock = new Mock <IEfRepository <Visit> >();
                var commitMock       = new Mock <ISaveContext>();

                var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object);

                var visit = new Visit();

                efRepositoryMock.Setup(r => r.Update(visit));
                commitMock.Setup(c => c.Commit());

                // Act
                visitsService.Update(visit);

                // Assert
                efRepositoryMock.Verify(r => r.Update(visit), Times.Once);
                commitMock.Verify(c => c.Commit(), Times.Once);
            }
Exemple #11
0
        public ActionResult AddVisitPhotoMedia(Guid id, string mediaName)
        {
            if (!IsAuthenticated(ControllerContext.HttpContext))
            {
                return(new HttpStatusCodeResult(401, "Operation requires authenticated access"));
            }

            var visit = new VisitsService().GetCheckInById(id);

            if (visit == default(CheckIn))
            {
                return(new HttpStatusCodeResult(400, "Cannot find visit"));
            }

            var media = SaveMediaFromStream(true, mediaName, visit.LocationID);

            new VisitsService().AddMedia(visit, media);
            var by = CfPerfCache.GetClimber(CfIdentity.UserID);

            return(Json(new cf.Dtos.Mobile.V1.MediaDto(media, by)));
        }
Exemple #12
0
            public void ReturnVisit_WhenPassedGuidHasValue()
            {
                // Arrange
                var efRepositoryMock = new Mock <IEfRepository <Visit> >();
                var commitMock       = new Mock <ISaveContext>();

                var visitsService = new VisitsService(efRepositoryMock.Object, commitMock.Object);

                Guid?id = Guid.NewGuid();

                efRepositoryMock.Setup(r => r.GetById(id.Value)).Returns(new Visit()
                {
                    Id = id.Value
                });

                // Act
                var result = visitsService.GetById(id.Value);

                // Assert
                Assert.IsNotNull(result);
            }
        public Message LogClimb(string epochUtc, string climbID, string outcome, string experience, string gradeOpinion, string rating, string comment)
        {
            SvcContext ctx = InflateContext(); if (ctx.Invalid)

            {
                return(ctx.ContextMessage);
            }

            try
            {
                var milliseconds = long.Parse(epochUtc);
                var loggedUtc    = new DateTime(1970, 01, 01).AddMilliseconds(milliseconds);

                var cID   = Guid.ParseExact(climbID, "N");
                var climb = geoSvc.GetClimbByID(cID);

                var loc = CfCacheIndex.Get(climb.LocationID);

                var visit = new VisitsService().GetVisitByLocationAndUtc(loc, loggedUtc);

                var log = visitsSvc.LogClimb(visit, new LoggedClimb()
                {
                    ClimbID      = climb.ID,
                    Comment      = comment,
                    Experince    = byte.Parse(experience),
                    Outcome      = byte.Parse(outcome),
                    GradeOpinion = byte.Parse(gradeOpinion),
                    Rating       = byte.Parse(rating),
                    Utc          = loggedUtc
                });

                var dto = new LoggedClimbDetailDto(log, climb.GradeLocal, climb.Avatar, "");

                return(ReturnAsJson(dto));
            }
            catch (Exception ex)
            {
                return(Failed("Log climb failed : " + ex.Message + " " + ex.Source));
            }
        }
        public Message DeleteVisit(string id)
        {
            SvcContext ctx = InflateContext(); if (ctx.Invalid)

            {
                return(ctx.ContextMessage);
            }

            try
            {
                var ciSvc = new VisitsService();

                var checkInID = Guid.ParseExact(id, "N");
                var ci        = ciSvc.GetCheckInById(checkInID);
                ciSvc.DeleteCheckIn(ci);

                return(ReturnAsJson(new { Success = true }));
            }
            catch (Exception ex)
            {
                return(Failed("Operation failed : " + ex.Message));
            }
        }