Esempio n. 1
0
        public JsonResult SaveSingleRegion(MapRegionViewModel region)
        {
            try
            {
                if (region.RegionID.HasValue == false)
                {
                    return(JsonSuccess("Nothing to save!"));
                }


                var dbReg = regionRepository.First(r => r.ID == region.RegionID);

                var polygon = new Polygon()
                {
                    Color       = region.Color,
                    FillColor   = region.FillColor,
                    FillOpacity = (decimal)region.FillOpacity,
                    Opacity     = (decimal)region.Opacity,
                    Weight      = (decimal)region.Weight
                };

                for (int i = 0; i < region.Points.Count; ++i)
                {
                    var p = region.Points[i];
                    polygon.PolygonPoints.Add(new PolygonPoint()
                    {
                        Latitude    = p.Latitude,
                        Longitude   = p.Longitude,
                        PointNumber = i
                    });
                }
                var oldPolygon = dbReg.Polygon;
                dbReg.Polygon = polygon;

                if (oldPolygon != null)
                {
                    polygonRepository.Remove(oldPolygon);
                }

                List <int> resID = Enum.GetValues(typeof(ResourceTypeEnum)).Cast <int>().ToList();

                for (int i = 0; i < region.Fertility.Count; ++i)
                {
                    var res   = region.Fertility[i];
                    var dbRes = dbReg.Resources.FirstOrDefault(x => x.ResourceTypeID == resID[i]);
                    if (dbRes != null)
                    {
                        if (res == 0)
                        {
                            regionRepository.RemoveSpecific(dbRes);
                        }
                        else
                        {
                            dbRes.ResourceQuality = res;
                        }
                    }
                    else
                    {
                        resourceRepository.Add(new Resource()
                        {
                            RegionID        = dbReg.ID,
                            ResourceTypeID  = resID[i],
                            ResourceQuality = res
                        });
                    }
                }
                resourceRepository.SaveChanges();
                regionRepository.SaveChanges();
                return(JsonSuccess("Done"));
            }
            catch (Exception e)
            {
                return(UndefinedJsonError(e));
            }
        }