public GetFacilitiesResponseDto MapGetFacilitiesResponse(invokeResponse response) { var getFacilityResponse = new GetFacilitiesResponseDto(); getFacilityResponse.PlantData = new PlantDataDto(); var copperPlantData = new CopperPlantDataDto(); var fiberPlantData = new FiberPlantDataDto(); try { //If any null objects throw... var facility = response.retrieveServiceDesignOutput.Payload.First().BusinessInteraction.InteractionItems.First().Service; if (facility == null) throw new EnterpriseServiceException("A null response was returned from ESB Get Facility"); var copperResourceFacingService = facility.ResourceFacingServices.FirstOrDefault(rfs => rfs.ResourceFacingServiceId.type.Equals("copper", StringComparison.OrdinalIgnoreCase)); var fiberResourceFacingService = facility.ResourceFacingServices.FirstOrDefault(rfs => rfs.ResourceFacingServiceId.type.Equals("fiber", StringComparison.OrdinalIgnoreCase)); if (fiberResourceFacingService != null && fiberResourceFacingService.CharacteristicSpecification != null) { fiberPlantData.Status = (fiberResourceFacingService.CharacteristicSpecification.Any(sd => sd.name.Equals("status", StringComparison.OrdinalIgnoreCase) && sd.Value != null && !string.IsNullOrEmpty(sd.Value.value))) ? fiberResourceFacingService.CharacteristicSpecification.First(sdb => sdb.name.Equals("status", StringComparison.OrdinalIgnoreCase) && sdb.Value != null && !string.IsNullOrEmpty(sdb.Value.value)).Value.value : string.Empty; getFacilityResponse.PlantData.FiberPlantData = fiberPlantData; } if (fiberResourceFacingService != null && copperResourceFacingService == null) { return getFacilityResponse; } var serviceDescriptions = facility.ServiceDescribedBy.ToList(); if (serviceDescriptions.Any()) { getFacilityResponse.Environment = (serviceDescriptions.Any(sd => sd.name.Equals("environment", StringComparison.OrdinalIgnoreCase) && sd.Value != null && !string.IsNullOrEmpty(sd.Value.value))) ? serviceDescriptions.First(sdb => sdb.name.Equals("environment", StringComparison.OrdinalIgnoreCase) && sdb.Value != null && !string.IsNullOrEmpty(sdb.Value.value)).Value.value : string.Empty; getFacilityResponse.USI = (serviceDescriptions.Any(sd => sd.name.Equals("uniqueServiceIdentifier", StringComparison.OrdinalIgnoreCase) && sd.Value != null && !string.IsNullOrEmpty(sd.Value.value))) ? serviceDescriptions.First(sdb => sdb.name.Equals("uniqueServiceIdentifier", StringComparison.OrdinalIgnoreCase) && sdb.Value != null && !string.IsNullOrEmpty(sdb.Value.value)).Value.value : string.Empty; getFacilityResponse.TN = (serviceDescriptions.Any(sd => sd.name.Equals("telephoneNumber", StringComparison.OrdinalIgnoreCase) && sd.Value != null && !string.IsNullOrEmpty(sd.Value.value))) ? serviceDescriptions.First(sdb => sdb.name.Equals("telephoneNumber", StringComparison.OrdinalIgnoreCase) && sdb.Value != null && !string.IsNullOrEmpty(sdb.Value.value)).Value.value : string.Empty; getFacilityResponse.ProvisionedSpeed = (serviceDescriptions.Any(sd => sd.name.Equals("provisionedSpeed", StringComparison.OrdinalIgnoreCase) && sd.Value != null && !string.IsNullOrEmpty(sd.Value.value))) ? serviceDescriptions.First(sdb => sdb.name.Equals("provisionedSpeed", StringComparison.OrdinalIgnoreCase) && sdb.Value != null && !string.IsNullOrEmpty(sdb.Value.value)).Value.value : string.Empty; } #region address getFacilityResponse.ServiceAddress = new ServiceAddressDto(); getFacilityResponse.LocationId = (facility.ServiceLocation != null && !string.IsNullOrEmpty(facility.ServiceLocation.ID)) ? facility.ServiceLocation.ID : string.Empty; var geoAddress = (facility.ServiceLocation != null && facility.ServiceLocation.GeographicAddress != null) ? facility.ServiceLocation.GeographicAddress : null; var addressExtension = (geoAddress != null) ? geoAddress.GeographicAddressExtension : null; if (addressExtension != null && addressExtension.AddressText != null && addressExtension.AddressText.Any()) { // ReSharper disable once PossibleNullReferenceException var address1 = (addressExtension.AddressText.Any(et => et.sequenceNumber == 1)) ? addressExtension.AddressText.FirstOrDefault(et => et.sequenceNumber == 1).addressText : string.Empty; getFacilityResponse.ServiceAddress.Address1 = address1.Trim(); // ReSharper disable once PossibleNullReferenceException var address2 = (addressExtension.AddressText.Any(et => et.sequenceNumber == 2)) ? addressExtension.AddressText.FirstOrDefault(et => et.sequenceNumber == 2).addressText : string.Empty; getFacilityResponse.ServiceAddress.Address2 = address2.Trim(); } //var urbanAddress = (geoAddress != null) ? geoAddress.UrbanPropertyAddress : null; //if (urbanAddress != null) //{ // var address1 = string.Empty; // const string space = " "; // if (!string.IsNullOrWhiteSpace(urbanAddress.streetNrFirst)) // { // address1 += space + urbanAddress.streetNrFirst.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.streetNrFirstSuffix)) // { // address1 += space + urbanAddress.streetNrFirstSuffix.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.streetName)) // { // address1 += space + urbanAddress.streetName.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.streetSuffix)) // { // address1 += space + urbanAddress.streetSuffix.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.streetNrLast)) // { // address1 += space + urbanAddress.streetNrLast.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.streetNrLastSuffix)) // { // address1 += space + urbanAddress.streetNrLastSuffix.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.streetType)) // { // address1 += space + urbanAddress.streetType.Trim(); // } // getFacilityResponse.ServiceAddress.Address1 = address1.Trim(); // getFacilityResponse.ServiceAddress.Locality = urbanAddress.locality != null // ? urbanAddress.locality.Trim() // : string.Empty; // getFacilityResponse.ServiceAddress.Postcode = urbanAddress.postcode != null // ? urbanAddress.postcode.Trim() // : string.Empty; //} //if (urbanAddress != null && urbanAddress.UrbanPropertySubAddress != null) //{ // var address2 = string.Empty; // const string space = " "; // if (!string.IsNullOrWhiteSpace(urbanAddress.UrbanPropertySubAddress.subUnitType)) // { // address2 += space + urbanAddress.UrbanPropertySubAddress.subUnitType.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.UrbanPropertySubAddress.subUnitNr)) // { // address2 += space + urbanAddress.UrbanPropertySubAddress.subUnitNr.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.UrbanPropertySubAddress.levelType)) // { // address2 += space + urbanAddress.UrbanPropertySubAddress.levelType.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.UrbanPropertySubAddress.levelNr)) // { // address2 += space + urbanAddress.UrbanPropertySubAddress.levelNr.Trim(); // } // if (!string.IsNullOrWhiteSpace(urbanAddress.UrbanPropertySubAddress.buildingName)) // { // address2 += space + urbanAddress.UrbanPropertySubAddress.buildingName.Trim(); // } // getFacilityResponse.ServiceAddress.Address2 = address2.Trim(); //} //getFacilityResponse.ServiceAddress.StateOrProvince = (geoAddress != null && geoAddress.stateOrProvince != null) // ? geoAddress.stateOrProvince.Trim() // : string.Empty; #endregion if (copperResourceFacingService != null) { var physicalResources = copperResourceFacingService.physicalResource.ToList(); var logicalResources = copperResourceFacingService.logicalResource.ToList(); copperPlantData.Status = (copperResourceFacingService.CharacteristicSpecification.Any(sd => sd.name.Equals("status", StringComparison.OrdinalIgnoreCase) && sd.Value != null && !string.IsNullOrEmpty(sd.Value.value))) ? copperResourceFacingService.CharacteristicSpecification.First(sdb => sdb.name.Equals("status", StringComparison.OrdinalIgnoreCase) && sdb.Value != null && !string.IsNullOrEmpty(sdb.Value.value)).Value.value : string.Empty; copperPlantData.MaxAttainableSpeed = (copperResourceFacingService.CharacteristicSpecification.Any(sd => sd.name.Equals("maxAttainableSpeed", StringComparison.OrdinalIgnoreCase) && sd.Value != null && !string.IsNullOrEmpty(sd.Value.value))) ? copperResourceFacingService.CharacteristicSpecification.First(sdb => sdb.name.Equals("maxAttainableSpeed", StringComparison.OrdinalIgnoreCase) && sdb.Value != null && !string.IsNullOrEmpty(sdb.Value.value)).Value.value : string.Empty; #region physicalresources // TODO: refactor below code to remove numerous Possible NullReference Exceptions if (physicalResources.Any()) { var switchData = physicalResources.Where(pr => pr.PhysicalResourceExtension.type.Equals("switch", StringComparison.OrdinalIgnoreCase)).ToList(); var dslamData = physicalResources.Where(pr => pr.PhysicalResourceExtension.type.Equals("dslam", StringComparison.OrdinalIgnoreCase)).ToList(); var routerData = physicalResources.Where(pr => pr.PhysicalResourceExtension.type.Equals("router", StringComparison.OrdinalIgnoreCase)).ToList(); if (dslamData != null) { copperPlantData.DslamClli = (dslamData.FirstOrDefault().PhysicalResourceExtension != null && !string.IsNullOrEmpty(dslamData.FirstOrDefault().PhysicalResourceExtension.commonLanguageLocationIdentifier)) ? dslamData.FirstOrDefault().PhysicalResourceExtension.commonLanguageLocationIdentifier : string.Empty; copperPlantData.DslamOfficeCode = (dslamData.FirstOrDefault().PhysicalResourceExtension != null && !string.IsNullOrEmpty(dslamData.FirstOrDefault().PhysicalResourceExtension.officeId)) ? dslamData.FirstOrDefault().PhysicalResourceExtension.officeId : string.Empty; } if (switchData != null) { copperPlantData.SwitchClli = (switchData.FirstOrDefault().PhysicalResourceExtension != null && !string.IsNullOrEmpty(switchData.FirstOrDefault().PhysicalResourceExtension.commonLanguageLocationIdentifier)) ? switchData.FirstOrDefault().PhysicalResourceExtension.commonLanguageLocationIdentifier : string.Empty; copperPlantData.SwitchOfficeCode = (switchData.FirstOrDefault().PhysicalResourceExtension != null && !string.IsNullOrEmpty(switchData.FirstOrDefault().PhysicalResourceExtension.officeId)) ? switchData.FirstOrDefault().PhysicalResourceExtension.officeId : string.Empty; if (switchData.FirstOrDefault().PhysicalResourceCharacteristicValues != null && switchData.FirstOrDefault().PhysicalResourceCharacteristicValues.Any()) { var switchLrn = switchData.Select(sd => sd.PhysicalResourceCharacteristicValues .FirstOrDefault(prcv => prcv.name.Equals("localRoutingNumber", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(prcv.Value.value))).ToList(); copperPlantData.SwitchLrn = (switchLrn != null && switchLrn.FirstOrDefault() != null && switchLrn.FirstOrDefault().Value != null && !string.IsNullOrEmpty(switchLrn.FirstOrDefault().Value.value)) ? switchLrn.FirstOrDefault().Value.value : string.Empty; var switchType = switchData.Select(sd => sd.PhysicalResourceCharacteristicValues .FirstOrDefault(prcv => prcv.name.Equals("switchType", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(prcv.Value.value))).ToList(); copperPlantData.SwitchType = (switchType != null && switchType.FirstOrDefault() != null && switchType.FirstOrDefault().Value != null && !string.IsNullOrEmpty(switchType.FirstOrDefault().Value.value)) ? switchType.FirstOrDefault().Value.value : string.Empty; } } if (routerData != null) { copperPlantData.ServiceRouterClli = (routerData.FirstOrDefault().PhysicalResourceExtension != null && !string.IsNullOrEmpty(routerData.FirstOrDefault().PhysicalResourceExtension.commonLanguageLocationIdentifier)) ? routerData.FirstOrDefault().PhysicalResourceExtension.commonLanguageLocationIdentifier : string.Empty; if (routerData.FirstOrDefault().PhysicalResourceCharacteristicValues != null && routerData.FirstOrDefault().PhysicalResourceCharacteristicValues.Any()) { var serviceRouterIp = switchData.Select(sd => sd.PhysicalResourceCharacteristicValues .FirstOrDefault( prcv => prcv.name.Equals("routerIpAddress", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value))).ToList(); copperPlantData.ServiceRouterIpAddress = (serviceRouterIp != null && serviceRouterIp.FirstOrDefault() != null && serviceRouterIp.FirstOrDefault().Value != null && !string.IsNullOrEmpty( serviceRouterIp.FirstOrDefault() .Value.value)) ? serviceRouterIp.FirstOrDefault().Value.value : string.Empty; } } } #endregion #region logicalresource if (logicalResources.Any()) { copperPlantData.PairAssignment = new List<PairAssignmentDto>(); foreach (var logicalResource in logicalResources) { var pairAssignment = new PairAssignmentDto(); pairAssignment.TerminalAssignment = new List<TerminalAssignmentDto>(); pairAssignment.VCI = !string.IsNullOrEmpty(logicalResource.subscriberVCI) ? logicalResource.subscriberVCI : null; pairAssignment.VPI = !string.IsNullOrEmpty(logicalResource.subscriberVPI) ? logicalResource.subscriberVPI : null; var pairValues = (logicalResource.LogicalResourceCharacteristicValues != null && logicalResource.LogicalResourceCharacteristicValues.Any()) ? logicalResource.LogicalResourceCharacteristicValues.ToList() : new List<CharacteristicSpecification>(); if (pairValues.Any()) { pairAssignment.Pair = (pairValues.Any(pv => pv.name.Equals("pairName", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value))) ? pairValues.First(pv => pv.name.Equals("pairName", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value)).Value.value : string.Empty; pairAssignment.HsiPort = (pairValues.Any(pv => pv.name.Equals("hsiPort", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value))) ? pairValues.First(pv => pv.name.Equals("hsiPort", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value)).Value.value : string.Empty; pairAssignment.DropType = (pairValues.Any(pv => pv.name.Equals("dropType", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value))) ? pairValues.First(pv => pv.name.Equals("dropType", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value)).Value.value : string.Empty; pairAssignment.LineCardSequenceNumber = (pairValues.Any(pv => pv.name.Equals("lineCardSequenceNumber", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value))) ? pairValues.First(pv => pv.name.Equals("lineCardSequenceNumber", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value)).Value.value : string.Empty; pairAssignment.LineCardType = (pairValues.Any(pv => pv.name.Equals("lineCardType", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value))) ? pairValues.First(pv => pv.name.Equals("lineCardType", StringComparison.OrdinalIgnoreCase) && pv.Value != null && !string.IsNullOrEmpty(pv.Value.value)).Value.value : string.Empty; } pairAssignment.LineCardTN = logicalResource.LogicalResourceExtension.PhoneNumber.telephoneNumber; var logicalPhysicalResources = (logicalResource.PhysicalResources != null) ? logicalResource.PhysicalResources.ToList() : new List<PhysicalResource>(); foreach (var physicalResource in logicalPhysicalResources) { var terminalAssignment = new TerminalAssignmentDto(); if (physicalResource.PhysicalResourceCharacteristicValues != null && physicalResource.PhysicalResourceCharacteristicValues.Any()) { var cableName = physicalResource.PhysicalResourceCharacteristicValues.FirstOrDefault( prcv => prcv.name.Equals("cableName", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value)); terminalAssignment.CableName = (cableName != null && cableName.Value != null && !string.IsNullOrEmpty(cableName.Value.value)) ? cableName.Value.value.Trim() : string.Empty; var pairNumber = physicalResource.PhysicalResourceCharacteristicValues.FirstOrDefault( prcv => prcv.name.Equals("pairNumber", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value)); terminalAssignment.PairNumber = (pairNumber != null && pairNumber.Value != null && !string.IsNullOrEmpty(pairNumber.Value.value)) ? pairNumber.Value.value.Trim() : string.Empty; var terminalAddress = physicalResource.PhysicalResourceCharacteristicValues.FirstOrDefault( prcv => prcv.name.Equals("terminalAddress", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value)); terminalAssignment.TerminalAddress = (terminalAddress != null && terminalAddress.Value != null && !string.IsNullOrEmpty( terminalAddress.Value.value)) ? terminalAddress.Value.value.Trim() : string.Empty; var previousTerminal = physicalResource.PhysicalResourceCharacteristicValues.FirstOrDefault( prcv => prcv.name.Equals("previousTerminal", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value)); terminalAssignment.PreviousTerminal = (previousTerminal != null && previousTerminal.Value != null && !string.IsNullOrEmpty( previousTerminal.Value.value)) ? previousTerminal.Value.value.Trim() : string.Empty; var fromBindingPost = physicalResource.PhysicalResourceCharacteristicValues.FirstOrDefault( prcv => prcv.name.Equals("fromBindingPost", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value)); terminalAssignment.FromBindingPost = (fromBindingPost != null && fromBindingPost.Value != null && !string.IsNullOrEmpty( fromBindingPost.Value.value)) ? fromBindingPost.Value.value.Trim() : string.Empty; var toBindingPost = physicalResource.PhysicalResourceCharacteristicValues.FirstOrDefault( prcv => prcv.name.Equals("toBindingPost", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value)); terminalAssignment.ToBindingPost = (toBindingPost != null && toBindingPost.Value != null && !string.IsNullOrEmpty( toBindingPost.Value.value)) ? toBindingPost.Value.value.Trim() : string.Empty; var cableSegment = physicalResource.PhysicalResourceCharacteristicValues.FirstOrDefault( prcv => prcv.name.Equals("cableSegment", StringComparison.OrdinalIgnoreCase) && prcv.Value != null && !string.IsNullOrEmpty(prcv.Value.value)); terminalAssignment.CableSegment = (cableSegment != null && cableSegment.Value != null && !string.IsNullOrEmpty( cableSegment.Value.value)) ? cableSegment.Value.value.Trim() : string.Empty; } terminalAssignment.TerminalType = (physicalResource.PhysicalResourceExtension != null && !string.IsNullOrEmpty(physicalResource.PhysicalResourceExtension.type)) ? physicalResource.PhysicalResourceExtension.type : null; terminalAssignment.TerminalName = (!string.IsNullOrEmpty(physicalResource.name)) ? physicalResource.name : string.Empty; pairAssignment.TerminalAssignment.Add(terminalAssignment); } copperPlantData.PairAssignment.Add(pairAssignment); } } #endregion getFacilityResponse.PlantData.CopperPlantData = copperPlantData; } } catch (System.Exception ex) { throw new EnterpriseServiceException("Error Mapping Facility Data from ESB Response", ex); } return getFacilityResponse; }
public string MapRetrieveCustomerServiceConfigurationReponse(invokeResponse esbResponse) { try { return esbResponse.retrieveCustomerServiceConfigurationOutput.Payload.First() .ResourceFacingServices.First() .logicalResource.First() .LogicalResourceCharacteristicValues.First() .Value.value; } catch (System.Exception e) { throw new EnterpriseServiceException("ESB - RetrieveCustomerServiceConfiguration - No IP was found in the response. ", e); } }