/// <summary> /// Converts model into latest version. /// </summary> /// <returns></returns> public V7VmOpenApiServiceAndChannelRelationBySourceAsti ConvertToLatestVersion() { var vm = new V7VmOpenApiServiceAndChannelRelationBySourceAsti() { DeleteAllChannelRelations = this.DeleteAllChannelRelations, IsASTI = false }; this.ChannelRelations.ForEach(relation => vm.ChannelRelations.Add(relation.ConvertToLatestVersion(6))); return(vm); }
public void ExternalSourceForChannelNotExists() { // Arrange var serviceSourceId = "sourceId"; var channelSourceId = "sourceId2"; var userName = "******"; var request = new V7VmOpenApiServiceAndChannelRelationBySourceAsti() { ChannelRelations = new List <V7VmOpenApiServiceServiceChannelBySourceAsti> { new V7VmOpenApiServiceServiceChannelBySourceAsti { ServiceChannelSourceId = channelSourceId, } } }; ExternalSourceRepoMock.Setup(s => s.All()) .Returns(new List <ExternalSource>() { new ExternalSource { SourceId = serviceSourceId, RelationId = userName, ObjectType = typeof(Model.Models.Service).Name }, new ExternalSource { SourceId = "otherSourceId", RelationId = userName, ObjectType = typeof(ServiceChannel).Name } }.AsQueryable()); var unitOfWork = unitOfWorkMockSetup.Object; var contextManager = new TestContextManager(unitOfWork, unitOfWork); UserIdentificationMock.Setup(s => s.UserName).Returns(userName); var serviceUtilities = new ServiceUtilities(UserIdentificationMock.Object, LockingManager, contextManager, UserOrganizationService, VersioningManager, UserInfoService, UserOrganizationChecker); var service = new ServiceAndChannelService(contextManager, translationManagerMockSetup.Object, translationManagerVModelMockSetup.Object, Logger, serviceUtilities, DataUtils, ServiceService, ChannelService, PublishingStatusCache, VersioningManager, UserOrganizationChecker, CacheManager, UserOrganizationService); // Act Action act = () => service.SaveServiceConnectionsBySource(serviceSourceId, request, DefaultVersion); // Assert act.ShouldThrowExactly <Exception>(CoreMessages.OpenApi.RelationIdNotFound); }
public IActionResult ASTIPutServiceAndChannelBySource(string serviceSourceId, [FromBody] V7VmOpenApiServiceAndChannelRelationBySourceAsti request) { return(PutServiceConnectionsBySourceBase(serviceSourceId, request)); }
private IActionResult PutServiceConnectionsBySourceBaseCommon(string serviceSourceId, V7VmOpenApiServiceAndChannelRelationBySourceAsti request) { // Validate the items if (!ModelState.IsValid) { return(new BadRequestObjectResult(ModelState)); } var srv = serviceAndChannelService.SaveServiceConnectionsBySource(serviceSourceId, request, versionNumber); if (srv == null) { return(NotFound(new VmError() { ErrorMessage = $"Service with source id '{serviceSourceId}' not found." })); } return(Ok(srv)); }
/// <summary> /// Post service and channel relationship. This is for ASTI connections. /// </summary> /// <param name="serviceSourceId">External source identifier for service</param> /// <param name="request"></param> /// <returns></returns> protected virtual IActionResult PutServiceConnectionsBySourceBase(string serviceSourceId, V7VmOpenApiServiceAndChannelRelationBySourceAsti request) { if (request == null) { ModelState.AddModelError("RequestIsNull", CoreMessages.OpenApi.RequestIsNull); return(new BadRequestObjectResult(ModelState)); } request.IsASTI = true; request.ChannelRelations.ForEach(r => r.IsASTIConnection = true); return(PutServiceConnectionsBySourceBaseCommon(serviceSourceId, request)); }
public void CanModifyConnections() { // Arrange var serviceSourceId = "sourceId"; var channelSourceId = "sourceId2"; var serviceId = Guid.NewGuid(); var channelId = Guid.NewGuid(); var userName = "******"; var request = new V7VmOpenApiServiceAndChannelRelationBySourceAsti() { ChannelRelations = new List <V7VmOpenApiServiceServiceChannelBySourceAsti> { new V7VmOpenApiServiceServiceChannelBySourceAsti { ServiceChannelSourceId = channelSourceId, } } }; ExternalSourceRepoMock.Setup(s => s.All()) .Returns(new List <ExternalSource>() { new ExternalSource { PTVId = serviceId, SourceId = serviceSourceId, RelationId = userName, ObjectType = typeof(Model.Models.Service).Name }, new ExternalSource { PTVId = channelId, SourceId = channelSourceId, RelationId = userName, ObjectType = typeof(ServiceChannel).Name } }.AsQueryable()); var unitOfWork = unitOfWorkMockSetup.Object; translationManagerVModelMockSetup.Setup(s => s.Translate <V7VmOpenApiServiceAndChannelRelationAstiInBase, Model.Models.Service>(It.IsAny <V7VmOpenApiServiceAndChannelRelationAstiInBase>(), unitOfWork)) .Returns(new Model.Models.Service() { Id = serviceId, }); var contextManager = new TestContextManager(unitOfWork, unitOfWork); UserIdentificationMock.Setup(s => s.UserName).Returns(userName); var serviceUtilities = new ServiceUtilities(UserIdentificationMock.Object, LockingManager, contextManager, UserOrganizationService, VersioningManager, UserInfoService, UserOrganizationChecker); ChannelServiceMock.Setup(s => s.GetServiceChannelByIdSimple(channelId, true)) .Returns(new VmOpenApiServiceChannel { ServiceChannelType = ServiceChannelTypeEnum.ServiceLocation.ToString(), Security = new VmSecurityOwnOrganization { IsOwnOrganization = true } }); var service = new ServiceAndChannelService(contextManager, translationManagerMockSetup.Object, translationManagerVModelMockSetup.Object, Logger, serviceUtilities, DataUtils, ServiceService, ChannelServiceMock.Object, PublishingStatusCache, VersioningManager, UserOrganizationChecker, CacheManager, UserOrganizationService); // Act var result = service.SaveServiceConnectionsBySource(serviceSourceId, request, DefaultVersion); // Assert // We are not testing method GetServiceById so we expect result to be null. result.Should().BeNull(); translationManagerVModelMockSetup.Verify(t => t.Translate <V7VmOpenApiServiceAndChannelRelationAstiInBase, Model.Models.Service>(It.IsAny <V7VmOpenApiServiceAndChannelRelationAstiInBase>(), unitOfWork), Times.Once()); }
/// <summary> /// Updates the channel connections for a defined service. External source identifiers are used. /// </summary> /// <param name="serviceSourceId">The external source identifier of the service.</param> /// <param name="relationsBySource">The connection model</param> /// <param name="openApiVersion">The open api version to be returned.</param> /// <returns>Updated service with connection information</returns> public IVmOpenApiServiceVersionBase SaveServiceConnectionsBySource(string serviceSourceId, V7VmOpenApiServiceAndChannelRelationBySourceAsti relationsBySource, int openApiVersion) { if (relationsBySource == null) { return(null); } var errors = new List <string>(); var userId = utilities.GetRelationIdForExternalSource(); var relations = new V7VmOpenApiServiceAndChannelRelationAstiInBase() { DeleteAllChannelRelations = relationsBySource.DeleteAllChannelRelations, IsASTI = relationsBySource.IsASTI }; contextManager.ExecuteReader(unitOfWork => { try { relations.ServiceId = GetPTVId <Service>(serviceSourceId, userId, unitOfWork); foreach (var channelRelation in relationsBySource.ChannelRelations) { var channelId = GetPTVId <ServiceChannel>(channelRelation.ServiceChannelSourceId, userId, unitOfWork); if (channelId.IsAssigned()) { CheckChannelData(unitOfWork, channelId, channelRelation.IsASTIConnection, channelRelation.ServiceHours, channelRelation.ContactDetails); channelRelation.ExtraTypes.ForEach(e => { e.ChannelGuid = channelId; e.ServiceGuid = relations.ServiceId.Value; }); relations.ChannelRelations.Add(new V7VmOpenApiServiceServiceChannelAstiInBase { ChannelGuid = channelId, ServiceGuid = relations.ServiceId.Value, Description = channelRelation.Description, ServiceChargeType = channelRelation.ServiceChargeType, ExtraTypes = channelRelation.ExtraTypes, ServiceHours = channelRelation.ServiceHours, ContactDetails = channelRelation.ContactDetails, IsASTIConnection = channelRelation.IsASTIConnection, DeleteServiceChargeType = channelRelation.DeleteServiceChargeType, DeleteAllDescriptions = channelRelation.DeleteAllDescriptions, DeleteAllServiceHours = channelRelation.DeleteAllServiceHours, DeleteAllExtraTypes = channelRelation.DeleteAllExtraTypes, }); } } } catch (Exception ex) { errors.Add(ex.Message); } }); if (errors.Count > 0) { throw new Exception(String.Join(", ", errors)); } return(SaveServiceConnections(relations, openApiVersion)); }