public async Task <IHttpActionResult> PopulateParkingTableFromImport() { using (var db = DbHelper.GetDb()) { var incoming = await db.OuMapDumpParkings.ToListAsync(); incoming.ForEach(p => { var customData = JsonConvert.DeserializeObject <OuMapsCustomGeoData>(p.geodata); var marker = new Models.Point() { Position = new Position() { Longitude = customData.Longitude, Latitude = customData.Latitude } }; var shape = customData.Polygon; int spaces, handicap; if (!int.TryParse(p.spacecount, out spaces)) { spaces = 0; } if (!int.TryParse(p.handicappedcount, out handicap)) { handicap = 0; } var location = new Models.DB.Location() { Name = p.loctitle, Description = p.loctext, ImgUrl = string.IsNullOrEmpty(p.locimg) ? p.locimg : "http://www.ou.edu" + p.locimg, MarkerData = JsonConvert.SerializeObject(marker, Formatting.Indented), GeoData = JsonConvert.SerializeObject(shape, Formatting.Indented) }; var parking = new Models.DB.Parking() { ParkingCode = p.loccode, HandicapCount = handicap, SpaceCount = spaces }; foreach (var parkingType in p.parkingtypes.Split(',')) { var trimmed = parkingType.Trim(); var type = db.ParkingTypes.Local.FirstOrDefault(t => t.Name == trimmed); if (type == null) { type = new ParkingType() { Name = trimmed }; db.ParkingTypes.Add(type); } parking.ParkingTypes.Add(type); } location.Parking = parking; db.Locations.Add(location); }); try { return(Ok(await db.SaveChangesAsync())); } catch (Exception e) { return(Content(HttpStatusCode.InternalServerError, e)); } } }
public async Task <IHttpActionResult> PostParking(Models.Outgoing.Map.Parking parking) { using (var db = DbHelper.GetDb()) { Models.DB.Parking dbObject; if (parking.Id == null) { var dbLocation = new Models.DB.Location() { Description = parking.Description, MarkerData = JsonConvert.SerializeObject(parking.Marker, Formatting.Indented), Name = parking.Name, }; var dbParking = new Models.DB.Parking() { GeoData = JsonConvert.SerializeObject(parking.Shape, Formatting.Indented), ParkingCode = parking.OuCode, SpaceCount = parking.SpaceCount, HandicapCount = parking.HandicappedCount }; foreach (var typeName in parking.ParkingTypes) { var parkingType = db.ParkingTypes.FirstOrDefault(pt => pt.Name == typeName); if (parkingType == null) { return(Content(HttpStatusCode.BadRequest, $"Parking Type: {typeName} not a valid type")); } else { dbParking.ParkingTypes.Add(parkingType); } } dbLocation.Parking = dbParking; db.Locations.Add(dbLocation); } else { dbObject = db.Parkings.Include(p => p.Location).FirstOrDefault(p => p.fkLocationId == parking.Id); if (dbObject == null) { return(Content(HttpStatusCode.BadRequest, $"Building with id {parking.Id} not found")); } dbObject.ParkingCode = parking.OuCode; dbObject.Location.Description = parking.Description; dbObject.Location.GeoData = JsonConvert.SerializeObject(parking.Shape, Formatting.Indented); dbObject.Location.MarkerData = JsonConvert.SerializeObject(parking.Marker, Formatting.Indented); dbObject.Location.Name = parking.Name; dbObject.SpaceCount = parking.SpaceCount; dbObject.HandicapCount = parking.HandicappedCount; foreach (var typeName in parking.ParkingTypes) { var parkingType = db.ParkingTypes.FirstOrDefault(pt => pt.Name == typeName); if (parkingType == null) { return(Content(HttpStatusCode.BadRequest, $"Parking Type: {typeName} not a valid type")); } else { dbObject.ParkingTypes.Add(parkingType); } } } return(Ok(await db.SaveChangesAsync())); } }