Esempio n. 1
0
        private BaseObject SavePlanObjectToDb(string id, BaseObject planObject)
        {
            BaseObject res;
            var        plan = new PlanObject();

            using (var context = new PlansDc(_esterConnectionString))
            {
                if (!string.IsNullOrEmpty(id))
                {
                    plan = GetPlanObjectById(id, context);
                }
                else
                {
                    context.PlanObjects.InsertOnSubmit(plan);
                }
                planObject.ExportToDbObject(plan, context);
                context.SubmitChanges();
                res = ServerExtensions.FromDbObject(plan);
            }
            if (_eventAggregator != null)
            {
                _eventAggregator.GetEvent <PlansModifiedEvent>().Publish(planObject);
            }
            return(res);
        }
Esempio n. 2
0
 private void DeleteChilds(PlanObject plan, PlansDc context)
 {
     foreach (var child in plan.PlanObjects)
     {
         DeleteChilds(child, context);
         context.PlanObjects.DeleteOnSubmit(child);
     }
 }
Esempio n. 3
0
        public static BaseObject FromDbObject(PlanObject plan)
        {
            BaseObject result = GetBaseObjectByTypeId(plan.TypeId);

            if (result == null)
            {
                return(null);
            }

            result.Id          = plan.Id;
            result.ParentId    = plan.ParentId;
            result.Type        = plan.PlanObjectType.Name;
            result.TypeId      = plan.TypeId;
            result.Name        = plan.Name;
            result.Description = plan.Description;
            result.Top         = plan.Top;
            result.Left        = plan.Left;
            result.Width       = plan.Width ?? 700;
            result.Height      = plan.Height ?? 700;
            result.IsContainer = plan.PlanObjectType.IsContainer;

            if (plan.Geometry != null)
            {
                result.Path = GeometryData.Parse(plan.Geometry);
            }

            if (!plan.PlanObjectType.IsContainer || !(result is IContainerObject))
            {
                return(result);
            }

            var containerObject = result as IContainerObject;

            foreach (var planObject in plan.PlanObjects.OrderBy(p => p.Order))
            {
                containerObject.Children.Add(FromDbObject(planObject));
            }
            return(result);
        }
Esempio n. 4
0
        //private void MainWindow_OnKeyUp(object sender, KeyEventArgs e)
        //{
        //    if (e.Key == Key.F5)
        //    {
        //        var db = new PlansDc();
        //        var plan = db.PlanObjects.FirstOrDefault(w => w.Parent == null);
        //        Plan viewPlan = (Plan)BaseObject.FromDbObject(plan);
        //        DataContext = viewPlan;
        //    }
        //}
        private void LoadfromSvgClick(object sender, RoutedEventArgs e)
        {
            //Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

            //dlg.DefaultExt = ".svg";
            //dlg.Filter = "SVG files (.svg)|*.svg";

            //Nullable<bool> result = dlg.ShowDialog();
            //if (result == true)
            //{
            //	// Open document
            //	string filename = dlg.FileName;
            //	var document = XDocument.Load(filename);

            //}

            var db = new PlansDc();
            #region rooms

            var r = db.PlanObjects.Single(o => o.Id == 13);
            r.Geometry = XElement.Parse("<path fill=\"none\" stroke=\"#000000\" d=\"M121.666,142.587H57.333V48.917h145.333v33 M150,142.587h52.667v-28.669 M202.667,190.418v25.666H57.333v-73.667l64.333,0.169 M202.667,163.751v-21.164H150 M202.667,81.917v-33h134.667v27M202.667,113.917v28.669h134.667v-36.336 M337.33,75.75V48.92h64v167.16h-73.12 M202.67,190.42v25.66h91.58 M337.33,106.08v36.34H202.67v21.16 M289.73,273.115c-10.943-2.66-22.605-8.908-34.397-20.7c0-21,0-36.331,0-36.331h38.917 M328.208,216.084h25.125v36.331c0,0-13.468,14.125-33.604,19.89\"/>");

            var grass = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#52AC62\" stroke=\"#52AC62\" d=\"M0,40.654C2.667-2.635,38.667,0.032,38.667,0.032L436,0c0,0,52.667,8.033,52.667,38.032s0,284,0,284H342v-38.667l92,0.667V22.699H41.333l-1.333,250l220,0.667v48.667H0C0,322.032,0,82.699,0,40.654z\"/>"),
                Name = "Травка",
                Parent = r,
                TypeId = 5
            };
            var r1 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M337.333,142.417H202.667v-93.5h134.667V142.417z\"/>"),
                Name = "101",
                Parent = r
                ,
                TypeId = 6
            };
            var r2 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M202.667,142.587H57.333V48.917h145.333V142.587z\"/>"),
                Name = "102",
                Parent = r,
                TypeId = 6
            };
            var r3 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M202.667,216.084H57.333v-73.498h145.333V216.084z\"/>"),
                Name = "103",
                Parent = r,
                TypeId = 6
            };
            var r4 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M202.67,216.08V143h134.663l-0.003-94.08h64v167.16H202.67\"/>"),
                Name = "104",
                Parent = r,
                TypeId = 6
            };
            var r5 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M319.729,272.305l-29.998,0.81c0,0-15.23-1.99-34.397-20.7c0-17.165,0-36.331,0-36.331h98c0,0,0,22.479,0,36.331C337.063,268.188,319.729,272.305,319.729,272.305\"/>"),
                Name = "105",
                Parent = r,
                TypeId = 6
            };

            #endregion

            db.PlanObjects.InsertOnSubmit(r1);
            db.PlanObjects.InsertOnSubmit(r2);
            db.PlanObjects.InsertOnSubmit(r3);
            db.PlanObjects.InsertOnSubmit(r4);
            db.PlanObjects.InsertOnSubmit(r5);

            //db.SubmitChanges();
        }
Esempio n. 5
0
        //private void MainWindow_OnKeyUp(object sender, KeyEventArgs e)
        //{
        //	if (e.Key == Key.F5)
        //	{
        //		var db = new PlansDc();

        //		var plan = db.PlanObjects.FirstOrDefault(w => w.Parent == null);

        //		Plan viewPlan = (Plan)BaseObject.FromDbObject(plan);
        //		DataContext = viewPlan;
        //	}
        //}

        private void LoadfromSvgClick(object sender, RoutedEventArgs e)
        {
            //Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

            //dlg.DefaultExt = ".svg";
            //dlg.Filter = "SVG files (.svg)|*.svg";

            //Nullable<bool> result = dlg.ShowDialog();
            //if (result == true)
            //{
            //	// Open document
            //	string filename = dlg.FileName;
            //	var document = XDocument.Load(filename);



            //}

            var db = new PlansDc();

            #region rooms

            var r = db.PlanObjects.Single(o => o.Id == 13);
            r.Geometry = XElement.Parse("<path fill=\"none\" stroke=\"#000000\" d=\"M121.666,142.587H57.333V48.917h145.333v33 M150,142.587h52.667v-28.669 M202.667,190.418v25.666H57.333v-73.667l64.333,0.169 M202.667,163.751v-21.164H150 M202.667,81.917v-33h134.667v27M202.667,113.917v28.669h134.667v-36.336 M337.33,75.75V48.92h64v167.16h-73.12 M202.67,190.42v25.66h91.58 M337.33,106.08v36.34H202.67v21.16 M289.73,273.115c-10.943-2.66-22.605-8.908-34.397-20.7c0-21,0-36.331,0-36.331h38.917 M328.208,216.084h25.125v36.331c0,0-13.468,14.125-33.604,19.89\"/>");

            var grass = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#52AC62\" stroke=\"#52AC62\" d=\"M0,40.654C2.667-2.635,38.667,0.032,38.667,0.032L436,0c0,0,52.667,8.033,52.667,38.032s0,284,0,284H342v-38.667l92,0.667V22.699H41.333l-1.333,250l220,0.667v48.667H0C0,322.032,0,82.699,0,40.654z\"/>"),
                Name   = "Травка",
                Parent = r,
                TypeId = 5
            };
            var r1 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M337.333,142.417H202.667v-93.5h134.667V142.417z\"/>"),
                Name   = "101",
                Parent = r
                ,
                TypeId = 6
            };
            var r2 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M202.667,142.587H57.333V48.917h145.333V142.587z\"/>"),
                Name   = "102",
                Parent = r,
                TypeId = 6
            };
            var r3 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M202.667,216.084H57.333v-73.498h145.333V216.084z\"/>"),
                Name   = "103",
                Parent = r,
                TypeId = 6
            };
            var r4 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M202.67,216.08V143h134.663l-0.003-94.08h64v167.16H202.67\"/>"),
                Name   = "104",
                Parent = r,
                TypeId = 6
            };
            var r5 = new PlanObject
            {
                Geometry =
                    XElement.Parse(
                        "<path fill=\"#6CA9E0\" d=\"M319.729,272.305l-29.998,0.81c0,0-15.23-1.99-34.397-20.7c0-17.165,0-36.331,0-36.331h98c0,0,0,22.479,0,36.331C337.063,268.188,319.729,272.305,319.729,272.305\"/>"),
                Name   = "105",
                Parent = r,
                TypeId = 6
            };

            #endregion

            db.PlanObjects.InsertOnSubmit(r1);
            db.PlanObjects.InsertOnSubmit(r2);
            db.PlanObjects.InsertOnSubmit(r3);
            db.PlanObjects.InsertOnSubmit(r4);
            db.PlanObjects.InsertOnSubmit(r5);

            //db.SubmitChanges();
        }
Esempio n. 6
0
        public static void ExportToDbObject(this BaseObject baseObject, PlanObject dbObject, PlansDc context, int order = 0)
        {
            dbObject.Id = baseObject.Id >= 0 ? baseObject.Id : GetNewPlanObjectId(context);

            if (baseObject.ParentId != null && baseObject.ParentId >= 0)
            {
                dbObject.ParentId = baseObject.ParentId;
            }

            dbObject.Order       = order;
            dbObject.Name        = baseObject.Name;
            dbObject.Description = baseObject.Description;
            dbObject.Left        = baseObject.Left;
            dbObject.Top         = baseObject.Top;
            dbObject.Width       = baseObject.Width;
            dbObject.Height      = baseObject.Height;
            dbObject.TypeId      = baseObject.TypeId;
            if (baseObject.Path != null)
            {
                dbObject.Geometry = baseObject.Path.ToSvg();
            }

            if (baseObject.Properties != null)
            {
                dbObject.Properties.Clear();
                foreach (var baseObjectProperty in baseObject.Properties.Where(p => !string.IsNullOrWhiteSpace(p.Path)))
                {
                    var newProperty = new Property
                    {
                        AddressTypeId = baseObjectProperty.TypeId,
                        Path          = baseObjectProperty.Path
                    };
                    dbObject.Properties.Add(newProperty);
                }
            }

            if (!baseObject.IsContainer)
            {
                return;
            }

            var baseContainer = baseObject as IContainerObject;

            if (baseContainer == null)
            {
                throw new BadRequestException("Children cannot be null in ContainerObject");
            }

            for (var i = dbObject.PlanObjects.Count - 1; i >= 0; i--)
            {
                if (baseContainer.Children.All(s => s.Id != dbObject.PlanObjects[i].Id))
                {
                    dbObject.PlanObjects.RemoveAt(i);
                }
            }
            var childOrder = 0;

            foreach (var childObject in baseContainer.Children)
            {
                var dbChildObject = dbObject.PlanObjects.FirstOrDefault(p => p.Id == childObject.Id);
                if (dbChildObject == null)
                {
                    dbChildObject = new PlanObject();
                    dbObject.PlanObjects.Add(dbChildObject);
                }
                childObject.ExportToDbObject(dbChildObject, context, childOrder++);
            }
        }