Пример #1
0
        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));
                }
            }
        }
Пример #2
0
        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()));
            }
        }