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); }
public IActionResult GetRouteById(string routeId) { var id = Guid.Parse(routeId); var route = _routeRepository.GetBy(id); if (route == null) { return(BadRequest()); } return(Ok(route)); }
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()); }
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)); }