Пример #1
0
        public List <ChartDataListItem> Generate(int serviceDeskId, bool svcDomains = false, bool svcFunctions = false,
                                                 bool svcComponents = false, bool resolvers = false, bool svcActivities = false, bool opProcs = false, string[] domainsSelected = null)
        {
            if (serviceDeskId == 0)
            {
                throw new ArgumentNullException(nameof(serviceDeskId));
            }

            var diagram = new List <ChartDataListItem>();

            var serviceDeskChart = new ChartDataListItem();

            var serviceDesk = _serviceDeskService.GetById(serviceDeskId);

            if (serviceDesk != null)
            {
                var customerName = serviceDesk.Customer.CustomerName;

                serviceDeskChart.CreateServiceDeskWithInputs(serviceDesk);

                var serviceDeliveryOrganisation = new ChartDataListItem
                {
                    Id            = 0,
                    CenteredTitle = "Fujitsu",
                    Title         = string.Empty,
                    Type          = DecompositionType.ServiceDeliveryOrganisation.ToString(),
                    Units         = new List <ChartDataListItem>(),
                };

                var serviceDomains = serviceDesk.ServiceDomains.ToList();

                if (serviceDomains.Any())
                {
                    serviceDeliveryOrganisation.ProcessServiceDomains(false, false, false, false, false, customerName, serviceDomains, null);
                }

                serviceDeskChart.Units.Add(serviceDeliveryOrganisation);

                diagram.Add(serviceDeskChart);
            }

            return(diagram);
        }
Пример #2
0
        public List <ChartDataListItem> Generate(int serviceDeskId,
                                                 bool svcDomains          = false,
                                                 bool svcFunctions        = false,
                                                 bool svcComponents       = false,
                                                 bool resolvers           = false,
                                                 bool svcActivities       = false,
                                                 bool opProcs             = false,
                                                 string[] domainsSelected = null)
        {
            if (serviceDeskId == 0)
            {
                throw new ArgumentNullException(nameof(serviceDeskId));
            }

            var diagram = new List <ChartDataListItem>();

            var serviceDeskChart = new ChartDataListItem();

            var serviceDesk = _serviceDeskService.GetById(serviceDeskId);

            if (serviceDesk != null)
            {
                var customerName = serviceDesk.Customer.CustomerName;

                serviceDeskChart.CreateServiceDeskWithInputs(serviceDesk);

                var serviceDomains = serviceDesk.ServiceDomains.ToList();

                if (domainsSelected != null)
                {
                    if (!domainsSelected.Contains("0"))
                    {
                        // Only render the selected Service Domains
                        var selectedDomains = domainsSelected.ToList();
                        serviceDomains = serviceDomains.Where(x => selectedDomains.Contains(x.Id.ToString())).ToList();
                    }
                }


                if (serviceDomains.Any())
                {
                    var dotMatrix = _resolverService.GetDotMatrix(serviceDesk.CustomerId, true);

                    if (svcDomains || domainsSelected != null && domainsSelected.Any())
                    {
                        serviceDeskChart.ProcessServiceDomains(svcFunctions, svcComponents, resolvers, svcActivities, opProcs, customerName, serviceDomains, dotMatrix);
                    }
                    else if (svcFunctions)
                    {
                        foreach (var deskDomain in serviceDomains)
                        {
                            serviceDeskChart.ProcessServiceFunctions(svcComponents, resolvers, svcActivities, opProcs, customerName, deskDomain, dotMatrix);
                        }
                    }
                    else if (svcComponents)
                    {
                        foreach (var domainFunction in serviceDomains.Where(deskDomain => deskDomain.ServiceFunctions != null).SelectMany(deskDomain => deskDomain.ServiceFunctions))
                        {
                            serviceDeskChart.ProcessServiceComponents(resolvers, svcActivities, opProcs, customerName, domainFunction, dotMatrix);
                        }
                    }
                    else if (resolvers)
                    {
                        foreach (var component in from deskDomain in serviceDomains
                                 where deskDomain.ServiceFunctions != null
                                 from domainFunction in deskDomain.ServiceFunctions
                                 where domainFunction.ServiceComponents != null
                                 from component in domainFunction.ServiceComponents.Where(x => x.ComponentLevel == 1)
                                 select component)
                        {
                            serviceDeskChart.ProcessResolvers(svcActivities, opProcs, customerName, component, dotMatrix);
                        }
                    }
                    else if (svcActivities)
                    {
                        foreach (var component in from deskDomain in serviceDomains
                                 where deskDomain.ServiceFunctions != null
                                 from domainFunction in deskDomain.ServiceFunctions
                                 where domainFunction.ServiceComponents != null
                                 from component in domainFunction.ServiceComponents.Where(x => x.ComponentLevel == 1)
                                 select component)
                        {
                            serviceDeskChart.ProcessServiceActivities(opProcs, component, dotMatrix);
                        }
                    }
                }

                if (!serviceDeskChart.Units.Any())
                {
                    // Add Empty Unit
                    var chartDataListItem = new ChartDataListItem
                    {
                        Id            = 0,
                        Title         = string.Empty,
                        CenteredTitle = string.Empty,
                        Type          = DecompositionType.EmptyForLayout.ToString(),
                        Units         = new List <ChartDataListItem>(),
                    };

                    serviceDeskChart.Units.Add(chartDataListItem);
                }

                diagram.Add(serviceDeskChart);
            }

            return(diagram);
        }
Пример #3
0
        public List <ChartDataListItem> Generate(int serviceDeskId, bool svcDomains = false, bool svcFunctions = false,
                                                 bool svcComponents = false, bool resolvers = false, bool svcActivities = false, bool opProcs = false, string[] domainsSelected = null)
        {
            if (serviceDeskId == 0)
            {
                throw new ArgumentNullException(nameof(serviceDeskId));
            }

            var diagram = new List <ChartDataListItem>();

            var serviceDeskChart = new ChartDataListItem();

            var serviceDesk = _serviceDeskService.GetById(serviceDeskId);

            if (serviceDesk != null)
            {
                serviceDeskChart.CreateServiceDeskWithInputs(serviceDesk);

                var serviceDomains = serviceDesk.ServiceDomains.ToList();
                if (serviceDomains.Any())
                {
                    var serviceOrganisationListItems = _serviceComponentService.GetServiceOrganisationResolversByDesk(serviceDeskId, _serviceOrganisationDiagramtype);
                    if (serviceOrganisationListItems.Any())
                    {
                        if (resolvers)
                        {
                            // Resolvers and/or Service Components and/or Service Activities
                            serviceOrganisationListItems.ProcessResolvers(svcComponents, svcActivities,
                                                                          _serviceOrganisationDiagramtype, serviceDesk.Customer.CustomerName, serviceDeskChart);
                        }
                        else if (svcComponents)
                        {
                            // Service Components and/or Service Activities
                            serviceOrganisationListItems.ProcessResolverServiceComponents(svcActivities,
                                                                                          _serviceOrganisationDiagramtype, serviceDeskChart);
                        }
                        else if (svcActivities)
                        {
                            // Service Activities only
                            serviceOrganisationListItems.ProcessResolverServiceActivities(false, true,
                                                                                          _serviceOrganisationDiagramtype, serviceDeskChart);
                        }
                    }
                }

                if (!serviceDeskChart.Units.Any())
                {
                    // Add Empty Unit
                    var chartDataListItem = new ChartDataListItem
                    {
                        Id            = 0,
                        Title         = string.Empty,
                        CenteredTitle = string.Empty,
                        Type          = DecompositionType.EmptyForLayout.ToString(),
                        Units         = new List <ChartDataListItem>(),
                    };

                    serviceDeskChart.Units.Add(chartDataListItem);
                }

                diagram.Add(serviceDeskChart);
            }

            return(diagram);
        }
Пример #4
0
        public List <ChartDataListItem> Generate(int serviceDeskId, bool svcDomains = false, bool svcFunctions = false,
                                                 bool svcComponents = false, bool resolvers = false, bool svcActivities = false, bool opProcs = false, string[] domainsSelected = null)
        {
            if (serviceDeskId == 0)
            {
                throw new ArgumentNullException(nameof(serviceDeskId));
            }

            var diagram = new List <ChartDataListItem>();

            var serviceDeskChart = new ChartDataListItem();

            var serviceDesk = _serviceDeskService.GetById(serviceDeskId);

            if (serviceDesk != null)
            {
                serviceDeskChart.CreateServiceDeskWithInputs(serviceDesk);

                // Resolvers
                if (serviceDesk.Resolvers != null)
                {
                    var serviceDeskResolvers = serviceDesk.Resolvers.ToList();

                    if (serviceDeskResolvers.Any())
                    {
                        // Customer Owned Resolver Groups
                        var customerServices = serviceDeskResolvers.Where(x => x.ServiceDeliveryOrganisationType.Id == 2 &&
                                                                          x.ServiceDeliveryUnitType != null).ToList();
                        if (customerServices.Any())
                        {
                            var customerOwned = new ChartDataListItem
                            {
                                Id            = 0,
                                CenteredTitle = serviceDesk.Customer.CustomerName + " Owned Resolver Groups",
                                Title         = string.Empty,
                                Type          = DecompositionType.ServiceDeliveryOrganisation.ToString(),
                                Units         = new List <ChartDataListItem>(),
                            };

                            var distinctSdus =
                                customerServices.Select(x => x.ServiceDeliveryUnitType.ServiceDeliveryUnitTypeName)
                                .Distinct();

                            foreach (var sduName in distinctSdus)
                            {
                                var sdu = new ChartDataListItem
                                {
                                    Id            = 0,
                                    CenteredTitle = sduName,
                                    Title         = string.Empty,
                                    Type          = DecompositionType.ServiceDeliveryUnit.ToString(),
                                    Units         = new List <ChartDataListItem>(),
                                };

                                var servicesNotes = string.Join("\r\n", customerServices.Where(
                                                                    x => x.ServiceDeliveryUnitType.ServiceDeliveryUnitTypeName == sduName)
                                                                .Select(x => x.ServiceDeliveryUnitNotes)
                                                                .ToArray());

                                if (!string.IsNullOrEmpty(servicesNotes))
                                {
                                    var services = new ChartDataListItem
                                    {
                                        Id            = 0,
                                        Title         = servicesNotes,
                                        CenteredTitle = string.Empty,
                                        Type          = DecompositionType.CustomerServices.ToString(),
                                        Units         = new List <ChartDataListItem>(),
                                    };

                                    sdu.Units.Add(services);
                                }
                                customerOwned.Units.Add(sdu);
                            }

                            serviceDeskChart.Units.Add(customerOwned);
                        }

                        // Customer Third Party Resolver Groups
                        var customerThirdPartyServices =
                            serviceDeskResolvers.Where(x => x.ServiceDeliveryOrganisationType.Id == 3 &&
                                                       x.ServiceDeliveryUnitType != null).ToList();
                        if (customerThirdPartyServices.Any())
                        {
                            var customerThirdParty = new ChartDataListItem
                            {
                                Id            = 0,
                                CenteredTitle = serviceDesk.Customer.CustomerName + " 3rd Party Resolver Groups",
                                Title         = string.Empty,
                                Type          = DecompositionType.ServiceDeliveryOrganisation.ToString(),
                                Units         = new List <ChartDataListItem>(),
                            };

                            var distinctSdus =
                                customerThirdPartyServices.Select(
                                    x => x.ServiceDeliveryUnitType.ServiceDeliveryUnitTypeName)
                                .Distinct();

                            foreach (var sduName in distinctSdus)
                            {
                                var sdu = new ChartDataListItem
                                {
                                    Id            = 0,
                                    CenteredTitle = sduName,
                                    Title         = string.Empty,
                                    Type          = DecompositionType.ServiceDeliveryUnit.ToString(),
                                    Units         = new List <ChartDataListItem>(),
                                };

                                var servicesNotes = string.Join("\r\n",
                                                                customerThirdPartyServices.Where(
                                                                    x => x.ServiceDeliveryUnitType.ServiceDeliveryUnitTypeName == sduName)
                                                                .Select(x => x.ServiceDeliveryUnitNotes)
                                                                .ToArray());

                                if (!string.IsNullOrEmpty(servicesNotes))
                                {
                                    var services = new ChartDataListItem
                                    {
                                        Id            = 0,
                                        Title         = string.IsNullOrEmpty(servicesNotes) ? string.Empty : servicesNotes,
                                        CenteredTitle = string.Empty,
                                        Type          = DecompositionType.CustomerServices.ToString(),
                                        Units         = new List <ChartDataListItem>(),
                                    };

                                    sdu.Units.Add(services);
                                }

                                customerThirdParty.Units.Add(sdu);
                            }

                            serviceDeskChart.Units.Add(customerThirdParty);
                        }
                    }
                }

                if (!serviceDeskChart.Units.Any())
                {
                    // Add Empty Unit
                    var chartDataListItem = new ChartDataListItem
                    {
                        Id            = 0,
                        Title         = string.Empty,
                        CenteredTitle = string.Empty,
                        Type          = DecompositionType.EmptyForLayout.ToString(),
                        Units         = new List <ChartDataListItem>(),
                    };

                    serviceDeskChart.Units.Add(chartDataListItem);
                }

                diagram.Add(serviceDeskChart);
            }

            return(diagram);
        }