public async Task <string> SaveFavouriteTrip(FavouriteTrip favouriteTrip)
        {
            var dbCollection = GetDbCollection();
            await dbCollection.InsertOneAsync(favouriteTrip);

            return(favouriteTrip.Id.ToString());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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"]);
        }