상속: IdentifiedEntity
예제 #1
0
        private async Task<Service[]> getServices(ServiceGroup serviceGroup = null)
        {
            using (var channel = ChannelManager.CreateChannel())
            {
                var serviceGroups = serviceGroup != null
                    ? await taskPool.AddTask(channel.Service.GetServiceGroups(serviceGroup.Id))
                    : await taskPool.AddTask(channel.Service.GetRootServiceGroups());

                var services = new List<Service>();

                foreach (var g in serviceGroups)
                {
                    services.AddRange(await getServices(g));
                }

                if (serviceGroup != null)
                {
                    services.AddRange(await taskPool.AddTask(channel.Service.GetServices(serviceGroup.Id)));
                }
                else
                {
                    services.AddRange(await taskPool.AddTask(channel.Service.GetRootServices()));
                }

                return services.ToArray();
            }
        }
예제 #2
0
        private SelectServiceButton[] CreateControlsForGroupsAndServices(ServiceGroup[] groups, Service[] services)
        {
            var buttons = new List<SelectServiceButton>();
            if (groups != null)
            {
                foreach (var group in groups.Where(g => g.IsActive))
                {
                    buttons.Add(CreateSelectServiceButton(group.Code, group.Name, group.Color, group.FontSize, (s, a) => OnServiceGroupSelected(group)));
                }
            }
            if (services != null)
            {
                foreach (var service in services.Where(s => s.IsActive))
                {
                    buttons.Add(CreateSelectServiceButton(service.Code,
                                                        service.Name,
                                                        service.GetColor(),
                                                        service.FontSize,
                                                        (s, a) => SetSelectedService(service)
                    ));
                }
            }

            return buttons.ToArray();
        }
예제 #3
0
        private async void loadGroup(TreeNodeCollection nodes, ServiceGroup group = null)
        {
            using (var channel = ChannelManager.CreateChannel())
            {
                try
                {
                    var serviceGroups = group != null
                        ? await taskPool.AddTask(channel.Service.GetServiceGroups(group.Id))
                        : await taskPool.AddTask(channel.Service.GetRootServiceGroups());

                    foreach (var g in serviceGroups)
                    {
                        var node = new TreeNode()
                        {
                            Text = g.ToString(),
                            Checked = g.IsActive,
                            Tag = g
                        };

                        node.Nodes.Add(new TreeNode("загрузка...") { Tag = g });
                        nodes.Add(node);
                    }

                    var services = group != null
                        ? await taskPool.AddTask(channel.Service.GetServices(group.Id))
                        : await taskPool.AddTask(channel.Service.GetRootServices());

                    foreach (var s in services)
                    {
                        var node = new TreeNode()
                        {
                            Text = s.ToString(),
                            Checked = s.IsActive,
                            Tag = s
                        };
                        nodes.Add(node);
                    }

                    if (group != null)
                    {
                        nodes.RemoveAt(0);
                    }
                }
                catch (OperationCanceledException) { }
                catch (CommunicationObjectAbortedException) { }
                catch (ObjectDisposedException) { }
                catch (InvalidOperationException) { }
                catch (FaultException exception)
                {
                    UIHelper.Warning(exception.Reason.ToString());
                }
                catch (Exception exception)
                {
                    UIHelper.Warning(exception.Message);
                }
            }
        }
예제 #4
0
 private void OnServiceGroupSelected(ServiceGroup group)
 {
     LoadServiceGroup(group.Id, group.Columns, group.Rows);
 }
예제 #5
0
        private async void ServiceGroupEdit_Load(object sender, EventArgs e)
        {
            Enabled = false;

            using (var channel = ChannelManager.CreateChannel())
            {
                try
                {
                    if (parenGrouptId != Guid.Empty)
                    {
                        parentGroup = await taskPool.AddTask(channel.Service.GetServiceGroup(parenGrouptId));
                    }

                    if (serviceGroupId != Guid.Empty)
                    {
                        ServiceGroup = await taskPool.AddTask(channel.Service.GetServiceGroup(serviceGroupId));
                    }
                    else
                    {
                        ServiceGroup = new ServiceGroup()
                        {
                            IsActive = true,
                            ParentGroup = parentGroup,
                            Code = "0.0",
                            Name = "Новая группа услуг",
                            Columns = 2,
                            Rows = 5,
                            Color = "#FFFFFF",
                            FontSize = 1
                        };
                    }

                    Enabled = true;
                }
                catch (OperationCanceledException) { }
                catch (CommunicationObjectAbortedException) { }
                catch (ObjectDisposedException) { }
                catch (InvalidOperationException) { }
                catch (FaultException exception)
                {
                    UIHelper.Warning(exception.Reason.ToString());
                }
                catch (Exception exception)
                {
                    UIHelper.Warning(exception.Message);
                }
            }
        }
예제 #6
0
        private async void saveButton_Click(object sender, EventArgs e)
        {
            using (var channel = ChannelManager.CreateChannel())
            {
                try
                {
                    saveButton.Enabled = false;

                    ServiceGroup = await taskPool.AddTask(channel.Service.EditServiceGroup(serviceGroup));

                    if (Saved != null)
                    {
                        Saved(this, EventArgs.Empty);
                    }
                }
                catch (OperationCanceledException) { }
                catch (CommunicationObjectAbortedException) { }
                catch (ObjectDisposedException) { }
                catch (InvalidOperationException) { }
                catch (FaultException exception)
                {
                    UIHelper.Warning(exception.Reason.ToString());
                }
                catch (Exception exception)
                {
                    UIHelper.Warning(exception.Message);
                }
                finally
                {
                    saveButton.Enabled = true;
                }
            }
        }
예제 #7
0
        private async void EditServiceForm_Load(object sender, EventArgs e)
        {
            using (var channel = ChannelManager.CreateChannel())
            {
                try
                {
                    Enabled = false;

                    if (serviceGroupId != Guid.Empty)
                    {
                        serviceGroup = await taskPool.AddTask(channel.Service.GetServiceGroup(serviceGroupId));
                    }

                    if (serviceId != Guid.Empty)
                    {
                        Service = await taskPool.AddTask(channel.Service.GetService(serviceId));
                    }
                    else
                    {
                        var all = ClientRequestRegistrator.Terminal
                            | ClientRequestRegistrator.Manager
                            | ClientRequestRegistrator.Portal;

                        Service = new Service()
                        {
                            IsActive = true,
                            ServiceGroup = serviceGroup,
                            Code = "0.0",
                            Name = "Новая услуга",
                            LiveRegistrator = all,
                            EarlyRegistrator = all,
                            TimeIntervalRounding = TimeSpan.FromMinutes(5),
                            MaxSubjects = 5,
                            Color = "#FFFFFF",
                            FontSize = 1
                        };
                    }

                    Enabled = true;
                }
                catch (OperationCanceledException) { }
                catch (CommunicationObjectAbortedException) { }
                catch (ObjectDisposedException) { }
                catch (InvalidOperationException) { }
                catch (FaultException exception)
                {
                    UIHelper.Warning(exception.Reason.ToString());
                }
                catch (Exception exception)
                {
                    UIHelper.Warning(exception.Message);
                }
            }
        }
예제 #8
0
            private async Task<Guid[]> GetGroupServices(Channel<IServerTcpService> channel, ServiceGroup group)
            {
                var result = new List<Guid>();

                result.AddRange((await form.taskPool.AddTask(channel.Service.GetServices(Group.Id))).Select(s => s.Id));

                foreach (var child in await form.taskPool.AddTask(channel.Service.GetServiceGroups(Group.Id)))
                {
                    result.AddRange(await GetGroupServices(channel, child));
                }

                return result.ToArray();
            }
예제 #9
0
            public ServiceGroupTreeNode(ServiceRatingReportForm form, ServiceGroup group)
            {
                this.form = form;

                Group = group;
                Text = group.ToString();
                Checked = group.IsActive;

                Nodes.Add(new TreeNode("загрузка..."));
                IsLoaded = false;
            }