/// <summary>
        /// Get the postcode sector by the UDPRN id
        /// </summary>
        /// <param name="udprn">UDPRN id</param>
        /// <returns>PostcodeSectorDataDTO</returns>
        public async Task <PostcodeSectorDataDTO> GetPostcodeSectorByUdprn(int udprn)
        {
            string methodName = typeof(UnitLocationDataService) + "." + nameof(GetPostcodeSectorByUdprn);

            using (loggingHelper.RMTraceManager.StartTrace("DataService.GetPostcodeSectorByUdprn"))
            {
                loggingHelper.LogMethodEntry(methodName, LoggerTraceConstants.UnitManagerAPIPriority, LoggerTraceConstants.PostCodeSectorDataServiceMethodEntryEventId);

                var postcodeSector = await(from ph in DataContext.PostcodeHierarchies.AsNoTracking()
                                           join pc in DataContext.Postcodes.AsNoTracking() on ph.ID equals pc.ID
                                           join pa in DataContext.PostalAddresses on ph.Postcode equals pa.Postcode
                                           where pa.UDPRN == udprn
                                           select ph.ParentPostcode.Trim()).FirstOrDefaultAsync();

                var postcodeDistrict = await(from ph in DataContext.PostcodeHierarchies.AsNoTracking()
                                             join ph2 in DataContext.PostcodeHierarchies.AsNoTracking() on ph.ParentPostcode equals ph2.Postcode
                                             join pc in DataContext.Postcodes.AsNoTracking() on ph.ID equals pc.ID
                                             join pa in DataContext.PostalAddresses on ph.Postcode equals pa.Postcode
                                             where pa.UDPRN == udprn
                                             select ph2.ParentPostcode.Trim()).FirstOrDefaultAsync();

                PostcodeSectorDataDTO postCodeSectorDataDTO = new PostcodeSectorDataDTO
                {
                    District = postcodeDistrict,
                    Sector   = postcodeSector
                };

                loggingHelper.LogMethodEntry(methodName, LoggerTraceConstants.UnitManagerAPIPriority, LoggerTraceConstants.PostCodeSectorDataServiceMethodExitEventId);
                return(postCodeSectorDataDTO);
            }
        }
        /// <summary>
        /// Setup for Nunit Tests
        /// </summary>
        protected override void OnSetup()
        {
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

            mockUnitLocationDataService       = CreateMock <IUnitLocationDataService>();
            mockPostCodeSectorDataService     = CreateMock <IPostcodeSectorDataService>();
            mockPostCodeDataService           = CreateMock <IPostcodeDataService>();
            mockScenarioDataService           = CreateMock <IScenarioDataService>();
            loggingHelperMock                 = CreateMock <ILoggingHelper>();
            mockUnitLocationDataService       = CreateMock <IUnitLocationDataService>();
            mockUnitManagerIntegrationService = CreateMock <IUnitManagerIntegrationService>();
            mockPostalAddressDataService      = CreateMock <IPostalAddressDataService>();

            userID         = System.Guid.Parse("A867065B-B91E-E711-9F8C-28D244AEF9ED");
            deliveryUnitID = System.Guid.Parse("B51AA229-C984-4CA6-9C12-510187B81050");
            var unitBoundary = DbGeometry.PolygonFromText("POLYGON ((505058.162109375 100281.69677734375, 518986.84887695312 100281.69677734375, 518986.84887695312 114158.546875, 505058.162109375 114158.546875, 505058.162109375 100281.69677734375))", 27700);

            actualDeliveryUnitListForUserResult = new List <UnitLocationDTO>()
            {
                new UnitLocationDTO()
                {
                    ID = Guid.NewGuid(), UnitName = "UnitOne", UnitBoundryPolygon = unitBoundary
                }
            };
            List <UnitLocationDataDTO> unitLocationDataDTOList = new List <UnitLocationDataDTO>()
            {
                new UnitLocationDataDTO()
                {
                    LocationId = Guid.NewGuid(), Name = "UnitOne", Area = "Polygon", Shape = unitBoundary
                }
            };

            CommonLibrary.EntityFramework.DTO.ReferenceDataCategoryDTO referenceDataCategoryDTO = new CommonLibrary.EntityFramework.DTO.ReferenceDataCategoryDTO()
            {
                CategoryName   = "PostalAddressType",
                ReferenceDatas = new List <CommonLibrary.EntityFramework.DTO.ReferenceDataDTO>()
                {
                    new CommonLibrary.EntityFramework.DTO.ReferenceDataDTO()
                    {
                        ReferenceDataValue = PostCodeTypeCategory.PostcodeSector.GetDescription()
                    },
                    new CommonLibrary.EntityFramework.DTO.ReferenceDataDTO()
                    {
                        ReferenceDataValue = PostCodeTypeCategory.PostcodeDistrict.GetDescription()
                    }
                }
            };
            PostcodeSectorDataDTO postcodeSectorDataDTO = new PostcodeSectorDataDTO()
            {
            };
            List <PostcodeDataDTO> postcodeDataDTOList = new List <PostcodeDataDTO>()
            {
                new PostcodeDataDTO()
                {
                    PostcodeUnit = "Unit1", ID = new Guid("B51AA229-C984-4CA6-9C12-510187B81050")
                }
            };
            List <ScenarioDataDTO> scenarioDataDTOList = new List <ScenarioDataDTO>()
            {
                new ScenarioDataDTO()
                {
                }
            };
            List <PostalAddressDataDTO> postalAddressDataServiceList = new List <PostalAddressDataDTO>()
            {
                new PostalAddressDataDTO()
                {
                    AddressType_GUID = new Guid("A867065B-B91E-E711-9F8C-28D244AEF9EC"), BuildingName = "bldg1", BuildingNumber = 1, SubBuildingName = "subbldg"
                }
            };
            List <DeliveryRouteDTO> deliveryRouteDTOList = new List <DeliveryRouteDTO>()
            {
            };

            // setup methods
            mockUnitManagerIntegrationService.Setup(x => x.GetReferenceDataGuId(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(new Guid("A867065B-B91E-E711-9F8C-28D244AEF9EC"));
            mockUnitLocationDataService.Setup(x => x.GetUnitsByUser(It.IsAny <Guid>(), It.IsAny <Guid>())).ReturnsAsync(unitLocationDataDTOList);
            mockUnitManagerIntegrationService.Setup(x => x.GetReferenceDataSimpleLists(It.IsAny <string>())).ReturnsAsync(referenceDataCategoryDTO);
            mockPostCodeSectorDataService.Setup(x => x.GetPostcodeSectorByUdprn(It.IsAny <int>())).ReturnsAsync(postcodeSectorDataDTO);
            mockPostCodeDataService.Setup(x => x.GetPostcodeUnitForBasicSearch(It.IsAny <SearchInputDataDto>())).ReturnsAsync(postcodeDataDTOList);
            mockPostCodeDataService.Setup(x => x.GetPostcodeUnitCount(It.IsAny <SearchInputDataDto>())).ReturnsAsync(5);
            mockPostCodeDataService.Setup(x => x.GetPostcodeUnitForAdvanceSearch(It.IsAny <SearchInputDataDto>())).ReturnsAsync(postcodeDataDTOList);
            mockPostCodeDataService.Setup(x => x.GetPostcodeID(It.IsAny <string>())).ReturnsAsync(postcodeDataDTOList[0]);
            mockScenarioDataService.Setup(x => x.GetScenariosByOperationStateAndDeliveryUnit(It.IsAny <Guid>(), It.IsAny <Guid>())).ReturnsAsync(scenarioDataDTOList);
            mockUnitLocationDataService.Setup(x => x.GetPostcodes(It.IsAny <List <Guid> >(), It.IsAny <Guid>())).ReturnsAsync(postcodeDataDTOList);
            mockPostCodeDataService.Setup(x => x.GetApproxLocation(It.IsAny <string>(), It.IsAny <Guid>())).ReturnsAsync(unitBoundary);
            mockPostalAddressDataService.Setup(x => x.GetPostalAddressDetails(It.IsAny <string>(), It.IsAny <Guid>())).ReturnsAsync(postalAddressDataServiceList);
            mockUnitManagerIntegrationService.Setup(x => x.GetRouteData(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(deliveryRouteDTOList);
            mockPostalAddressDataService.Setup(x => x.GetPostalAddressSearchDetails(It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <List <Guid> >())).ReturnsAsync(new List <string>()
            {
                "123"
            });

            var rmTraceManagerMock = new Mock <IRMTraceManager>();

            rmTraceManagerMock.Setup(x => x.StartTrace(It.IsAny <string>(), It.IsAny <Guid>()));
            loggingHelperMock.Setup(x => x.RMTraceManager).Returns(rmTraceManagerMock.Object);

            testCandidate = new UnitLocationBusinessService(mockUnitLocationDataService.Object, mockPostCodeSectorDataService.Object, mockPostCodeDataService.Object, mockScenarioDataService.Object, mockPostalAddressDataService.Object, loggingHelperMock.Object, mockUnitManagerIntegrationService.Object);
        }