/// <summary>
        /// 添加节点或更新节点
        /// </summary>
        /// <param name="directoryName">目录名称</param>
        /// <param name="url">API地址</param>
        /// <param name="ip">IP地址</param>
        /// <param name="description">描述</param>
        /// <param name="weight">权重</param>
        /// <param name="status">状态</param>
        /// <param name="directoryId">所属目录</param>
        public string Add(string directoryName, string url, string ip, string description, int weight, int status,string[] apiList)
        {
            var directory = Model.RepositoryRegistry.Directory.FindBy(directoryName);
            if (directory == null)
            {
                return "目录不存在";
            }
            var directoryInfo = new Model.DirectoryInfo(directory.Id, directory.Name);

            var node = new Model.Node(directoryInfo);
            node.Description = description;
            node.Ip = ip;
            node.Url = url;
            node.Weight = weight;
            node.Status = (Model.NodeStatus)status;
            if (node.Validate())
            {
                Model.RepositoryRegistry.Node.Add(node);

                var nodes = Model.RepositoryRegistry.Node.Select(directory.Id);
                this.PublishEvent("Add", new NodeDomainEvent(nodes.Select(m => m.Convert()).ToList()));
            }
            this.PublishEvent("Add", new UpdateApiDomainEvent(directory.Id, apiList));
            if (node.GetBrokenRules().Count > 0)
            {
                return node.GetBrokenRules()[0].Description;
            }
            return string.Empty;
        }
        public void SetNode(Model.Node n) {
            CurrentNode = Nodes.QueryByWmId(n.wm_id);

            InitTextFields(CurrentNode);
            InitImages(CurrentNode);
            InitMapControl(CurrentNode);
            InitStatus(CurrentNode);
        }
Пример #3
0
        public void test_add()
        {
            Model.DirectoryInfo d = new Model.DirectoryInfo(111, "bbb");
            Model.Node n = new Model.Node(d);

            Model.RepositoryRegistry.Node.Add(n);

            var actual = Model.RepositoryRegistry.Node.FindBy(n.Id);

            NodeAssert(n, actual);
        }
Пример #4
0
        public void FindByIdsTest()
        {
            Model.DirectoryInfo d = new Model.DirectoryInfo(111, "bbb");
            Model.Node n = new Model.Node(d);
            Model.Node n2 = new Model.Node(d);

            Model.RepositoryRegistry.Node.Add(n);
            Model.RepositoryRegistry.Node.Add(n2);

            var list = Model.RepositoryRegistry.Node.FindByIds(new int[2] { n.Id, n2.Id });

            Assert.IsTrue(list.Count() > 0);
        }
Пример #5
0
        public void test_update()
        {
            Model.DirectoryInfo d = new Model.DirectoryInfo(111, "bbb");
            Model.Node n = new Model.Node(d);

            Model.RepositoryRegistry.Node.Add(n);

            n.Ip = "111";
            n.Url = "url";

            Model.RepositoryRegistry.Node.Update(n);

            var actual = Model.RepositoryRegistry.Node.FindBy(n.Id);

            NodeAssert(n, actual);
        }
Пример #6
0
        public void SelectTest()
        {
            var directory = Directory.DirectoryRepositoryTest.Create(Model.DirectoryType.提供者);
            Model.RepositoryRegistry.Directory.Add(directory);

            Model.Node n = new Model.Node(new Model.DirectoryInfo(directory.Id, directory.Name));
            n.Ip = "111";
            n.Url = "url";
            Model.RepositoryRegistry.Node.Add(n);

            var list = Model.RepositoryRegistry.Node.Select(Model.DirectoryType.提供者);
            Assert.IsTrue(list.Count() == 1);

            list = Model.RepositoryRegistry.Node.Select(Model.DirectoryType.消费者);
            Assert.IsTrue(list.Count() == 0);

            list = Model.RepositoryRegistry.Node.Select(directory.Id);
            Assert.IsTrue(list.Count() == 1);
        }
        public override void OnNewParams(object args) {
            base.OnNewParams(args);
            node = args as Model.Node;
            if (node != null) {
                position = new BasicGeoposition {
                    Latitude = node.lat,
                    Longitude = node.lon
                };
                positionTextBox.Text = String.Format("POSITION".t(R.File.NODE), position?.Latitude, position?.Longitude);
            }
            titleTextBlock.Text = Title;
            initCategoryComboBox();
            initStatus(node);
            nameTextBox.Text = node?.name ?? "";

            streetTextBox.Text = node?.street ?? "";
            houseNumberTextBox.Text = node?.housenumber ?? "";
            phoneNumberTextBox.Text = node?.phone ?? "";
            plzTextBox.Text = node?.postcode ?? "";
            cityTextBox.Text = node?.city ?? "";
            websiteTextBox.Text = node?.website ?? "";
            commentTextBox.Text = node?.wheelchairDescription ?? "";

        }
        private async Task uploadNewPhoto() {
            FileOpenPicker openPicker = new FileOpenPicker();
            openPicker.ViewMode = PickerViewMode.Thumbnail;
            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            openPicker.FileTypeFilter.Add(".jpg");
            openPicker.FileTypeFilter.Add(".jpeg");
            openPicker.FileTypeFilter.Add(".png");
            // Launch file open picker and caller app is suspended and may be terminated if required 
            StorageFile file = await openPicker.PickSingleFileAsync();
            
            if (file == null) {
                return;
            }

            var dialog = new ProgressDialog() {
                Message = "UPLOAD_IMAGE_PROCESSING".t()
            };
            dialog.ShowAsync().Forget();
            
            CurrentNode = CurrentNode.CreateCopyIfNeeded();
            if (CurrentNode._ID <= 0) {
                Nodes.Save(CurrentNode);
            }
            var result = await new PhotoUploadTask(CurrentNode, file).Execute();
            // wait for the backend to initialize the image before reloading them
            Task.Delay(3000).Wait();
            dialog.Close();
            Log.d(result.IsOk);
            SetNode(CurrentNode);
        }
        private void saveButton_Click(object sender, RoutedEventArgs e) {

            if (!CheckIfAllRequiredFieldsAreValid()) {
                return;
            }

            bool createNewNode = node == null;
            if (node == null) {
                node = new Model.Node() {
                    NodeTag = NodeTag.COPY
                };
            } else {
                node = node.CreateCopyIfNeeded();
            }
            node.DirtyState = DirtyState.DIRTY_ALL;

            node.category = categories[categoryComboBox.SelectedIndex];
            node.nodeType = nodeTypes[nodeTypeComboBox.SelectedIndex];
            node.name = nameTextBox.Text.Trim();
            node.wheelchairDescription = commentTextBox.Text.Trim();

            node.street = streetTextBox.Text.Trim();
            node.postcode = plzTextBox.Text.Trim();
            node.city = cityTextBox.Text.Trim();
            node.housenumber = houseNumberTextBox.Text.Trim();
            node.phone = phoneNumberTextBox.Text.Trim();
            node.website = websiteTextBox.Text.Trim();
            node.wheelchairStatus = wheelchairStatus.Value.ToApiString();
            node.wheelchairToiletStatus = wheelchairWCStatus.Value.ToApiString();
            node.lat = position.Value.Latitude;
            node.lon = position.Value.Longitude;

            progressBar.Visibility = Visibility.Visible;
            new NodeEditRequest(node).Execute().ContinueWithOnDispatcher(Dispatcher, task => {
                progressBar.Visibility = Visibility.Collapsed;
                if (task.Result.IsOk) {
                    node.DirtyState = DirtyState.CLEAN;
                    Nodes.Save(node);
                    // make sure the changes are diaplayed on the map
                    DataHolder.Instance.ReplaceNode(node);
                    GoBack();
                } else {

                    // show error dialog with messages from backend

                    var content = "";
                    foreach (var key in task.Result.error) {
                        foreach (string value in key.Value) {
                            content += "\u00B7 " + value + "\n";
                        }
                    }

                    MessageDialog dialog = new MessageDialog(content);
                    dialog.ShowAsync().Forget();

                }
            }, 2000);
        }