public void Post_LoggedInUserWithGoodRoute_ShouldRegisterAndReturnsOk()
        {
            // Arrange 
            var route = DummyData.RouteFaker.Generate();
            var user = DummyData.UserFaker.Generate();
            var routeRegistrationDTO = DummyData.RouteRegistrationDTOFaker.Generate();
            routeRegistrationDTO.OrderedShirt = true;
            routeRegistrationDTO.RouteId = route.Id;
            _sut.ControllerContext = FakeControllerContext.For(user);
            _userRepository.GetBy(user.Email).Returns(user);
            _routeRepository.GetBy(route.Id).Returns(route);
            _validator.SetupPass();

            // Act 
            var numberOfRegistrations = user.Registrations.Count;
            var result = _sut.Post(routeRegistrationDTO);

            // Assert 
            result.Should().BeOfType<OkObjectResult>()
                .Which.Value.Should().BeEquivalentTo(
                    routeRegistrationDTO,
                    options => options.Using(new EnumAsStringAssertionRule()) //treat enums as strings
                );

            _userRepository.Received().GetBy(user.Email);
            _routeRepository.Received().GetBy(route.Id);
            //registration is added to user 
            user.Registrations.Count.Should().Be(numberOfRegistrations + 1);
        }
Exemple #2
0
        public IActionResult GetRouteById(string routeId)
        {
            var id    = Guid.Parse(routeId);
            var route = _routeRepository.GetBy(id);

            if (route == null)
            {
                return(BadRequest());
            }

            return(Ok(route));
        }
Exemple #3
0
        public IActionResult Stop()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            string mailAdress = User.Identity.Name;

            if (mailAdress == null)
            {
                return(BadRequest());
            }

            var user = _userRepository.GetBy(mailAdress);

            if (user == null)
            {
                return(BadRequest());
            }

            var walk = user.Walks.Last();

            if (walk == null)
            {
                return(NotFound());
            }

            walk.EndTime = DateTime.Now;
            _walkRepository.Update(user.Email, walk);

            var registration = _registrationRepository.GetLast(user.Email);
            var route        = _routeRepository.GetBy(registration.RouteId);

            var certificateDTO = CertificateMapper.DTOFrom(user, walk, route);

            _mailService.SendCertificate(certificateDTO);

            return(Ok());
        }
Exemple #4
0
        public IActionResult Post(RouteRegistrationDTO registrationDTO)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Unauthorized());
            }

            var validation = _routeRegistrationDTOValidator.Validate(registrationDTO);

            if (!validation.IsValid)
            {
                return(BadRequest(validation));
            }

            string mailAdress = User.Identity.Name;

            if (mailAdress == null)
            {
                return(BadRequest());
            }

            var user = _userRepository.GetBy(mailAdress);

            if (user == null)
            {
                return(BadRequest());
            }

            var route = _routeRepository.GetBy(registrationDTO.RouteId);

            if (route == null)
            {
                return(NotFound("Chosen route could not be found."));
            }

            if (DateCheckHelper.CheckBeforeToday(route.Date))
            {
                return(BadRequest("You cannot register for a route in the past."));
            }

            var last = _registrationRepository.GetLast(mailAdress);

            if (last != null)
            {
                var lastRouteDate = _routeRepository.GetBy(last.RouteId).Date;
                if (DateCheckHelper.CheckAfterOrEqualsToday(lastRouteDate))
                {
                    return(BadRequest("You are already registered for a route this year."));
                }
            }

            var registration = registrationDTO.MapToRegistration(user, route);

            _registrationRepository.Add(registration, mailAdress);
            _userRepository.Update(user);

            var mailDTO = (user, route).MapToDTO();

            _mailService.SendRegistrationConfirmation(mailDTO);

            return(Ok(registration));
        }