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); }
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); }
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); }
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); }