private async Task SaveVenueDescription(VenueInfo venueInfo, Venue venue) { var lastVenueDescription = repository.VenueDescription .Where(venueDescription => venueDescription.VenueId == venue.VenueId) .OrderByDescending(description => description.ModifiedDate) .FirstOrDefault(); if (lastVenueDescription == null || lastVenueDescription.Name != venueInfo.Name || lastVenueDescription.City != venueInfo.City) { var modifiedTicks = lastVenueDescription?.ModifiedDate.Ticks ?? 0; if (modifiedTicks != venueInfo.LastModifiedTicks) { throw new DbUpdateConcurrencyException("A new update has occurred since you loaded the page. Please refresh and try again."); } await repository.AddAsync(new VenueDescription { ModifiedDate = DateTime.UtcNow, Venue = venue, Name = venueInfo.Name, City = venueInfo.City }); await repository.SaveChangesAsync(); } }
public async Task SaveVenue(VenueInfo venueInfo) { var venue = await repository.GetOrInsertVenue(venueInfo.VenueGuid); await SaveVenueDescription(venueInfo, venue); await SaveVenueLocation(venueInfo, venue); await SaveVenueTimeZone(venueInfo, venue); }
public async Task <List <VenueInfo> > ListVenues() { var result = await repository.Venue .Where(venue => !venue.Removed.Any()) .Select(venue => new { venue.VenueGuid, Description = venue.Descriptions .OrderByDescending(d => d.ModifiedDate) .FirstOrDefault() }) .ToListAsync(); return(result .Select(row => VenueInfo.FromEntities(row.VenueGuid, row.Description)) .ToList()); }
public async Task <VenueInfo> GetVenue(Guid venueGuid) { var result = await repository.Venue .Where(venue => venue.VenueGuid == venueGuid && !venue.Removed.Any()) .Select(venue => new { venue.VenueGuid, Description = venue.Descriptions .OrderByDescending(d => d.ModifiedDate) .FirstOrDefault(), Location = venue.Locations .OrderByDescending(d => d.ModifiedDate) .FirstOrDefault(), TimeZone = venue.TimeZones .OrderByDescending(d => d.ModifiedDate) .FirstOrDefault() }) .SingleOrDefaultAsync(); return(result == null ? null : VenueInfo.FromEntities( result.VenueGuid, result.Description, result.Location, result.TimeZone)); }
private async Task SaveVenueLocation(VenueInfo venueInfo, Venue venue) { switch ((venueInfo.Latitude, venueInfo.Longitude)) {