public async Task <string> SaveFavouriteTrip(FavouriteTrip favouriteTrip) { var dbCollection = GetDbCollection(); await dbCollection.InsertOneAsync(favouriteTrip); return(favouriteTrip.Id.ToString()); }
public async Task <FavouriteTripDto> IsLikedTripAsync(FavouriteTripDto favouriteTripDto) { if (favouriteTripDto == null) { throw new ArgumentNullException(nameof(favouriteTripDto)); } if (favouriteTripDto.UserId <= 0) { throw new ArgumentOutOfRangeException(nameof(favouriteTripDto.UserId)); } if (favouriteTripDto.TripId <= 0) { throw new ArgumentOutOfRangeException(nameof(favouriteTripDto.TripId)); } var favouriteTrip = new FavouriteTrip { UserId = favouriteTripDto.UserId, TripId = favouriteTripDto.TripId }; var favouriteTripResponse = await _favouriteTripStorage.IsLikedTripAsync(favouriteTrip); if (favouriteTripResponse == null) { favouriteTripDto.IsFavourite = false; } else { favouriteTripDto.IsFavourite = favouriteTripResponse.IsFavourite; } return(favouriteTripDto); }
public async Task <FavouriteTripDto> LikeAsync(FavouriteTripDto favouriteTripDto) { if (favouriteTripDto == null) { throw new ArgumentNullException(nameof(favouriteTripDto)); } var favouriteTrip = new FavouriteTrip { UserId = favouriteTripDto.UserId, TripId = favouriteTripDto.TripId, IsFavourite = favouriteTripDto.IsFavourite }; var result = await _favouriteTripStorage.LikeAsync(favouriteTrip); favouriteTripDto.IsFavourite = result; return(favouriteTripDto); }
public async Task <bool> LikeAsync(FavouriteTrip favouriteTrip) { if (favouriteTrip == null) { throw new ArgumentNullException(nameof(favouriteTrip)); } using (var context = _contextFactory.CreateContext()) { _logger.LogInformation($"{favouriteTrip.UserId} liked tripId {favouriteTrip.TripId}"); var favouriteTripFromStorage = await context.FavouriteTrips.FindAsync(favouriteTrip.UserId, favouriteTrip.TripId); try { if (favouriteTripFromStorage == null) { await context.FavouriteTrips.AddAsync(favouriteTrip); await context.SaveChangesAsync(); return(favouriteTrip.IsFavourite); } if (!favouriteTrip.IsFavourite) { favouriteTripFromStorage.IsFavourite = false; } else { favouriteTripFromStorage.IsFavourite = true; } await context.SaveChangesAsync(); } catch (Exception ex) { _logger.LogError($"{favouriteTrip.UserId} failed to like tripId {favouriteTrip.TripId}", ex); throw; } return(favouriteTrip.IsFavourite); } }
public async Task <FavouriteTrip> IsLikedTripAsync(FavouriteTrip favouriteTrip) { if (favouriteTrip == null) { throw new ArgumentNullException(nameof(favouriteTrip)); } if (favouriteTrip.UserId <= 0) { throw new ArgumentOutOfRangeException(nameof(favouriteTrip.UserId)); } if (favouriteTrip.TripId <= 0) { throw new ArgumentOutOfRangeException(nameof(favouriteTrip.TripId)); } using (var context = _contextFactory.CreateContext()) { return(await context.FavouriteTrips.FindAsync(favouriteTrip.UserId, favouriteTrip.TripId)); } }
public void Given_Favourite_Trip_Then_Can_Save_And_Retrieve_Fav() { // Given var fav = new FavouriteTrip { FavouriteTripId = Guid.NewGuid().ToString(), DepartingStopId = "1234", DepartingChildStopIds = "221, 224, 225", DepartingStopName = "Bald Hills", DepartingLocation = "12345.6, 5555.6", ArrivingStopId = "4533", ArrivingChildStopIds = "551, 552, 553, 554, 555, 556", ArrivingLocation = "1235.77, 98171.1", ArrivingStopName = "Central" }; var repo = new SettingsRepository(ConnectionString); // When / Then Assert.That(async() => await repo.SaveFavouriteTrip(fav), Is.TypeOf <string>().And.Not.Empty); Assert.That(async() => await repo.GetFavouriteTripById(fav.FavouriteTripId), Is.Not.Null); }
public void Can_Post_Request() { // Given var trip = new FavouriteTrip { TripId = Guid.NewGuid().ToString(), DepartingStopId = "1234", DepartingChildStopIds = "221, 224, 225", DepartingStopName = "Bald Hills", DepartingLocation = "12345.6, 5555.6", ArrivingStopId = "4533", ArrivingChildStopIds = "551, 552, 553, 554, 555, 556", ArrivingLocation = "1235.77, 98171.1", ArrivingStopName = "Central" }; var repo = new Mock <ISettingsRepository>(); repo.Setup(x => x.SaveFavouriteTrip(It.IsAny <FavouriteTrip>())).Returns(5); var browser = new Browser(with => { with.Module <TransitTimetableModule>(); with.Dependencies(repo.Object); }); // When var response = browser.Post("/transit/FavouriteTrip", with => { with.HttpRequest(); with.JsonBody(trip); }); // Then Assert.Equal(HttpStatusCode.Created, response.StatusCode); Assert.Equal("/transit/FavouriteTrip/5", response.Headers["Location"]); }