Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }