/// <summary>
        /// Creates automatic access link.
        /// </summary>
        /// <param name="accessLinkDto">Access link data object.</param>
        /// <returns>Success.</returns>
        public bool CreateAccessLink(AccessLinkDataDTO accessLinkDto)
        {
            try
            {
                using (loggingHelper.RMTraceManager.StartTrace("DataService.CreateAutomaticAccessLink"))
                {
                    string methodName = typeof(AccessLinkDataService) + "." + nameof(CreateAccessLink);
                    loggingHelper.LogMethodEntry(methodName, priority, entryEventId);

                    AccessLink entity = new AccessLink();
                    bool       isAccessLinkCreationSuccess = false;

                    ConfigureMapper();

                    entity = Mapper.Map <AccessLinkDataDTO, AccessLink>(accessLinkDto);

                    DataContext.AccessLinks.Add(entity);

                    DataContext.SaveChanges();
                    isAccessLinkCreationSuccess = true;
                    loggingHelper.LogMethodExit(methodName, priority, exitEventId);

                    return(isAccessLinkCreationSuccess);
                }
            }
            catch (DbUpdateException dbUpdateException)
            {
                throw new DataAccessException(dbUpdateException, string.Format(ErrorConstants.Err_SqlAddException, string.Concat("automatic access link")));
            }
        }
        /// <summary>
        /// Setup for Nunit Tests.
        /// </summary>
        protected override void OnSetup()
        {
            mockLoggingHelper = CreateMock <ILoggingHelper>();
            unit1Guid         = Guid.NewGuid();
            unit2Guid         = Guid.NewGuid();
            unit3Guid         = Guid.NewGuid();
            user1Id           = System.Guid.NewGuid();
            user2Id           = System.Guid.NewGuid();

            var unitBoundary = DbGeometry.PolygonFromText("POLYGON((511570.8590967182 106965.35195621933, 511570.8590967182 107474.95297542136, 512474.1409032818 107474.95297542136, 512474.1409032818 106965.35195621933, 511570.8590967182 106965.35195621933))", 27700);
            var location     = new List <Location>()
            {
                new Location()
                {
                    ID = unit1Guid, Shape = unitBoundary
                }
            };
            var networkLinks = new List <NetworkLink>()
            {
                new NetworkLink()
                {
                    LinkGeometry = unitBoundary,
                }
            };
            var networkLink = new NetworkLink()
            {
                LinkGeometry = unitBoundary,
            };
            var accessLink = new List <AccessLink>()
            {
                new AccessLink()
                {
                    ID = Guid.NewGuid(), NetworkLink = networkLink
                }
            };
            var deliveryPoint = new List <DeliveryPoint>()
            {
                new DeliveryPoint()
                {
                    NetworkNode = new NetworkNode()
                    {
                        Location = new Location()
                        {
                            Shape = unitBoundary
                        }
                    }
                }
            };

            var networkNodeDataDTO = new NetworkNodeDataDTO()
            {
                ID       = Guid.NewGuid(),
                Location = new LocationDataDTO()
                {
                    ID                = Guid.NewGuid(),
                    Shape             = unitBoundary,
                    RowCreateDateTime = DateTime.UtcNow
                }
            };

            var accessLinkDataDTOs = new AccessLinkDataDTO()
            {
                Approved               = true,
                ID                     = Guid.NewGuid(),
                WorkloadLengthMeter    = 40,
                LinkDirectionGUID      = Guid.NewGuid(),
                ConnectedNetworkLinkID = Guid.NewGuid(),
                AccessLinkTypeGUID     = Guid.NewGuid()
            };

            var accessLinkStatus = new AccessLinkStatusDataDTO()
            {
                ID                   = Guid.NewGuid(),
                NetworkLinkID        = Guid.NewGuid(),
                AccessLinkStatusGUID = Guid.NewGuid(),
                StartDateTime        = DateTime.UtcNow,
                RowCreateDateTime    = DateTime.UtcNow
            };

            netWorkLinkDataDto = new NetworkLinkDataDTO()
            {
                ID = Guid.NewGuid(),
                DataProviderGUID    = Guid.NewGuid(),
                NetworkLinkTypeGUID = Guid.NewGuid(),
                StartNodeID         = Guid.NewGuid(),
                EndNodeID           = Guid.NewGuid(),
                LinkLength          = 40,
                LinkGeometry        = unitBoundary,
                RowCreateDateTime   = DateTime.UtcNow,
            };

            var mockAsynEnumerable = new DbAsyncEnumerable <AccessLink>(accessLink);

            mockFmoDbContext = CreateMock <AccessLinkDBContext>();
            mockFmoDbContext.Setup(x => x.SaveChanges()).Returns(1);
            var mockAccessLinkDataService = MockDbSet(accessLink);

            mockFmoDbContext.Setup(x => x.Set <AccessLink>()).Returns(mockAccessLinkDataService.Object);
            mockFmoDbContext.Setup(x => x.AccessLinks).Returns(mockAccessLinkDataService.Object);

            // mockFmoDbContext.Setup(c => c.AccessLinks.AsNoTracking()).Returns(mockAccessLinkDataService.Object);
            mockAccessLinkDataService.Setup(x => x.Include(It.IsAny <string>())).Returns(mockAccessLinkDataService.Object);
            mockAccessLinkDataService.Setup(x => x.AsNoTracking()).Returns(mockAccessLinkDataService.Object);

            var mockAccessLinkDataService1 = MockDbSet(networkLinks);

            mockFmoDbContext.Setup(x => x.Set <NetworkLink>()).Returns(mockAccessLinkDataService1.Object);
            mockFmoDbContext.Setup(x => x.NetworkLinks).Returns(mockAccessLinkDataService1.Object);

            // mockFmoDbContext.Setup(c => c.NetworkLinks.AsNoTracking()).Returns(mockAccessLinkDataService1.Object);
            mockAccessLinkDataService1.Setup(x => x.AsNoTracking()).Returns(mockAccessLinkDataService1.Object);

            var mockAccessLinkDataService4 = MockDbSet(deliveryPoint);

            mockFmoDbContext.Setup(x => x.Set <DeliveryPoint>()).Returns(mockAccessLinkDataService4.Object);
            mockFmoDbContext.Setup(x => x.DeliveryPoints).Returns(mockAccessLinkDataService4.Object);
            mockAccessLinkDataService4.Setup(x => x.AsNoTracking()).Returns(mockAccessLinkDataService4.Object);

            var mockAsynEnumerable2        = new DbAsyncEnumerable <Location>(location);
            var mockAccessLinkDataService2 = MockDbSet(location);

            mockFmoDbContext.Setup(x => x.Set <Location>()).Returns(mockAccessLinkDataService2.Object);
            mockFmoDbContext.Setup(x => x.Locations).Returns(mockAccessLinkDataService2.Object);
            mockFmoDbContext.Setup(c => c.Locations.AsNoTracking()).Returns(mockAccessLinkDataService2.Object);

            mockDatabaseFactory = CreateMock <IDatabaseFactory <AccessLinkDBContext> >();
            mockDatabaseFactory.Setup(x => x.Get()).Returns(mockFmoDbContext.Object);

            var rmTraceManagerMock = new Mock <IRMTraceManager>();

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

            testCandidate = new AccessLinkDataService(mockDatabaseFactory.Object, mockLoggingHelper.Object);
        }