public static async Task GetTrumbaEvents() { HttpClient client = GetNewClient(); string url = @"https://gis.calgary.ca/arcgis/rest/services/pub_CalgaryDotCa/Events/MapServer/find?searchText=e&contains=true&searchFields=&sr=&layers=2&layerDefs=&returnGeometry=true&maxAllowableOffset=&geometryPrecision=&dynamicLayers=&returnZ=false&returnM=false&gdbVersion=&f=pjson"; client.BaseAddress = new Uri(url); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); ; HttpResponseMessage response = client.GetAsync("").Result; var trumbaString = response.Content.ReadAsStringAsync().Result; Trumba trumba = Trumba.FromJson(trumbaString); await EventMapper.UpdateEventsFromTrumba(trumba); }
public static Task UpdateEventsFromTrumba(Trumba trumbaEvents) { DataModel db = new DataModel(); List <Event> events = db.Events.ToList(); foreach (var trumbaEvent in trumbaEvents.Results) { var attributes = trumbaEvent.Attributes; string trumbaId = attributes.MoreInfoUrl + attributes.NextDateDtfmt; Event existingEvent = events.FirstOrDefault(x => x.TrumbaUniqueId == trumbaId); if (existingEvent == null) { string lat; string lng; GoogleMaps.GetLatAndLongFromAddress(attributes.Address, out lat, out lng); if (lat == null || lng == null) { continue; } var eventModel = new Event(); eventModel.Latitude = lat; eventModel.Longitude = lng; eventModel.Address = attributes.Address; eventModel.URL = attributes.MoreInfoUrl; eventModel.TrumbaUniqueId = trumbaId; eventModel.Name = attributes.Title; eventModel.EventDate = DateTime.ParseExact(attributes.NextDateDtfmt, "yyyy-MM-dd", CultureInfo.InvariantCulture); eventModel.Description = String.IsNullOrEmpty(attributes.Notes) ? NoDescriptionAvailiable : attributes.Notes; addQuadrantToEvent(eventModel); db.Events.Add(eventModel); } } db.SaveChanges(); return(Task.FromResult(0)); }