public async Task <List <ParsedBeer> > GetAsync(int venueId) { // GET FROM DB List <ParsedBeer> beersFromDB = await DatabaseHandler.GetBeersFromDbForVenue(beerContext, venueId); // if no venue found get beers from api by venueId if (beersFromDB.Count == 0) { _logger.LogInformation($"No beers found from DB with venue id: {venueId}"); // GET FROM API List <ParsedBeer> beersFromAPI = await UntappdApiCaller.GetBeersFromAPI(venueId); if (beersFromAPI.Count != 0) { _logger.LogInformation($"Adding these beers to DB:"); beersFromAPI.ForEach(beer => { _logger.LogInformation($" name: {beer.BeerName}, id: {beer.BeerID}"); }); // PUT BEER TO DB DatabaseHandler.PutBeersToDatabase(beerContext, venueId, beersFromAPI); } return(beersFromAPI); } return(beersFromDB); }
public async Task <List <ParsedVenue> > GetAsync(string latlng) { string[] coords = latlng.Split('&'); double lat = Convert.ToDouble(coords[0]); double lng = Convert.ToDouble(coords[1]); // GET FROM DB List <ParsedVenue> venuesFromDB = await DatabaseHandler.GetVenuesFromDB(venueContext); // GET FROM API _logger.LogInformation($"Fetching venues close to your location: lat: {lat} and lng: {lng}"); List <ParsedVenue> venuesFromAPI = await UntappdApiCaller.GetVenuesFromAPI(lat, lng, 0); // COMBINE VENUES FROM DB AND API List <ParsedVenue> allVenues = new List <ParsedVenue>(); List <ParsedVenue> missingVenuesFromDB = new List <ParsedVenue>(); allVenues.AddRange(venuesFromDB); for (int i = 0; i < venuesFromAPI.Count; i++) { if (!allVenues.Exists(v => v.VenueID == venuesFromAPI[i].VenueID)) { allVenues.Add(venuesFromAPI[i]); missingVenuesFromDB.Add(venuesFromAPI[i]); } } // // PUT VENUES FROM API TO DB IF MISSING if (missingVenuesFromDB.Count != 0) { await DatabaseHandler.PutVenuesToDatabase(venueContext, missingVenuesFromDB); } _logger.LogInformation($"DB venues with lat: {lat} and lng: {lng}"); venuesFromDB.ForEach(venue => { _logger.LogInformation($" name: {venue.VenueName}, address: {venue.Address}"); }); _logger.LogInformation($"API venues with lat: {lat} and lng: {lng}"); venuesFromAPI.ForEach(venue => { _logger.LogInformation($" name: {venue.VenueName}, address: {venue.Address}"); }); return(allVenues); }