diff --git a/CHANGELOG.md b/CHANGELOG.md
index e16fa73d8b..7ee9a165cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,22 @@
New features, fixed bugs, known defects and other noteworthy changes to each release of the Catena-X Portal Backend.
+## 2.0.0-RC4
+
+### Changes
+* **Administration Service**
+* adjusted GET: api/administration/adjust response of companydata/decentralidentity/urls to response the correct urls
+
+### Feature
+* **Backend Logic**
+* added auditing for certificate management
+* **Apps Service**
+* added GET: /api/apps/AppChange/{appId}/roles to receive the roles for a specific app
+
+### Bugfix
+* **Process Worker**
+* set the correct state for IDENTITY_WALLET application step after all steps are done
+
## 2.0.0-RC3
### Changes
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 1049210686..0b9efcbb0d 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -20,6 +20,6 @@
2.0.0
- RC3
+ RC4
diff --git a/src/administration/Administration.Service/BusinessLogic/CompanyDataBusinessLogic.cs b/src/administration/Administration.Service/BusinessLogic/CompanyDataBusinessLogic.cs
index 4b65b8a49f..064c5d2fb8 100644
--- a/src/administration/Administration.Service/BusinessLogic/CompanyDataBusinessLogic.cs
+++ b/src/administration/Administration.Service/BusinessLogic/CompanyDataBusinessLogic.cs
@@ -604,9 +604,10 @@ public async IAsyncEnumerable GetCompanyCertificatesB
_portalRepositories.GetInstance().GetActiveCompanyCertificatePaginationSource(sorting, certificateStatus, certificateType, _identityData.CompanyId));
public async Task GetDimServiceUrls() =>
- new DimUrlsResponse(
- _settings.DecentralIdentityManagementAuthUrl,
- await _portalRepositories.GetInstance().GetWalletServiceUrl(_identityData.CompanyId).ConfigureAwait(ConfigureAwaitOptions.None));
+ new(
+ $"{await _portalRepositories.GetInstance().GetWalletServiceUrl(_identityData.CompanyId).ConfigureAwait(ConfigureAwaitOptions.None)}/oauth/token",
+ _settings.DecentralIdentityManagementAuthUrl
+ );
///
public async Task DeleteCompanyCertificateAsync(Guid documentId)
diff --git a/src/administration/Administration.Service/Models/DimUrlsResponse.cs b/src/administration/Administration.Service/Models/DimUrlsResponse.cs
index ebb9fdd6d4..b70c47e0b0 100644
--- a/src/administration/Administration.Service/Models/DimUrlsResponse.cs
+++ b/src/administration/Administration.Service/Models/DimUrlsResponse.cs
@@ -20,6 +20,6 @@
namespace Org.Eclipse.TractusX.Portal.Backend.Administration.Service.Models;
public record DimUrlsResponse(
- string DecentralIdentityManagementAuthUrl,
- string? DecentralIdentityManagementServiceUrl
+ string? DecentralIdentityManagementAuthUrl,
+ string DecentralIdentityManagementServiceUrl
);
diff --git a/src/externalsystems/Bpdm.Library/DependencyInjection/BpdmServiceCollectionExtension.cs b/src/externalsystems/Bpdm.Library/DependencyInjection/BpdmServiceCollectionExtension.cs
index ff58dbd844..a010fc4d32 100644
--- a/src/externalsystems/Bpdm.Library/DependencyInjection/BpdmServiceCollectionExtension.cs
+++ b/src/externalsystems/Bpdm.Library/DependencyInjection/BpdmServiceCollectionExtension.cs
@@ -37,8 +37,9 @@ public static IServiceCollection AddBpdmService(this IServiceCollection services
var sp = services.BuildServiceProvider();
var settings = sp.GetRequiredService>();
+ var baseAddress = settings.Value.BaseAddress;
services
- .AddCustomHttpClientWithAuthentication(settings.Value.BaseAddress)
+ .AddCustomHttpClientWithAuthentication(baseAddress.EndsWith('/') ? baseAddress : $"{baseAddress}/")
.AddTransient()
.AddTransient();
diff --git a/src/externalsystems/BpnDidResolver.Library/BpnDidResolverService.cs b/src/externalsystems/BpnDidResolver.Library/BpnDidResolverService.cs
index 4ad81e4938..87b591b7a5 100644
--- a/src/externalsystems/BpnDidResolver.Library/BpnDidResolverService.cs
+++ b/src/externalsystems/BpnDidResolver.Library/BpnDidResolverService.cs
@@ -31,7 +31,7 @@ public async Task TransmitDidAndBpn(string did, string bpn, CancellationTo
{
using var httpClient = httpClientFactory.CreateClient(nameof(BpnDidResolverService));
var data = new BpnMappingData(bpn, did);
- var result = await httpClient.PostAsJsonAsync("/api/management/bpn-directory", data, Options, cancellationToken).ConfigureAwait(ConfigureAwaitOptions.None);
+ var result = await httpClient.PostAsJsonAsync("api/management/bpn-directory", data, Options, cancellationToken).ConfigureAwait(ConfigureAwaitOptions.None);
return result.IsSuccessStatusCode;
}
}
diff --git a/src/externalsystems/BpnDidResolver.Library/BusinessLogic/BpnDidResolverBusinessLogic.cs b/src/externalsystems/BpnDidResolver.Library/BusinessLogic/BpnDidResolverBusinessLogic.cs
index ad97e59eba..25ca1bb315 100644
--- a/src/externalsystems/BpnDidResolver.Library/BusinessLogic/BpnDidResolverBusinessLogic.cs
+++ b/src/externalsystems/BpnDidResolver.Library/BusinessLogic/BpnDidResolverBusinessLogic.cs
@@ -55,7 +55,7 @@ public BpnDidResolverBusinessLogic(IPortalRepositories portalRepositories, IBpnD
ProcessStepStatusId.DONE,
checklist =>
{
- checklist.ApplicationChecklistEntryStatusId = ApplicationChecklistEntryStatusId.IN_PROGRESS;
+ checklist.ApplicationChecklistEntryStatusId = ApplicationChecklistEntryStatusId.DONE;
},
[ProcessStepTypeId.REQUEST_BPN_CREDENTIAL],
null,
diff --git a/src/externalsystems/BpnDidResolver.Library/DependencyInjection/BpnDidResolverServiceCollectionExtension.cs b/src/externalsystems/BpnDidResolver.Library/DependencyInjection/BpnDidResolverServiceCollectionExtension.cs
index e5bbbb8536..9e4fc618d9 100644
--- a/src/externalsystems/BpnDidResolver.Library/DependencyInjection/BpnDidResolverServiceCollectionExtension.cs
+++ b/src/externalsystems/BpnDidResolver.Library/DependencyInjection/BpnDidResolverServiceCollectionExtension.cs
@@ -41,7 +41,8 @@ public static IServiceCollection AddBpnDidResolver(this IServiceCollection servi
var settings = sp.GetRequiredService>();
services.AddHttpClient(nameof(BpnDidResolverService), c =>
{
- c.BaseAddress = new Uri(settings.Value.BaseAddress);
+ var baseAddress = settings.Value.BaseAddress;
+ c.BaseAddress = new Uri(baseAddress.EndsWith('/') ? baseAddress : $"{baseAddress}/");
c.DefaultRequestHeaders.Add("X-Api-Key", settings.Value.ApiKey);
});
services
diff --git a/src/externalsystems/Clearinghouse.Library/ClearinghouseServiceCollectionExtension.cs b/src/externalsystems/Clearinghouse.Library/ClearinghouseServiceCollectionExtension.cs
index ce3b7e91d9..a4012cbc3d 100644
--- a/src/externalsystems/Clearinghouse.Library/ClearinghouseServiceCollectionExtension.cs
+++ b/src/externalsystems/Clearinghouse.Library/ClearinghouseServiceCollectionExtension.cs
@@ -37,8 +37,9 @@ public static IServiceCollection AddClearinghouseService(this IServiceCollection
var sp = services.BuildServiceProvider();
var settings = sp.GetRequiredService>();
+ var baseAddress = settings.Value.BaseAddress;
services
- .AddCustomHttpClientWithAuthentication(settings.Value.BaseAddress)
+ .AddCustomHttpClientWithAuthentication(baseAddress.EndsWith('/') ? baseAddress : $"{baseAddress}/")
.AddTransient()
.AddTransient();
diff --git a/src/externalsystems/Custodian.Library/CustodianServiceCollectionExtension.cs b/src/externalsystems/Custodian.Library/CustodianServiceCollectionExtension.cs
index b163ad2275..bb43c71817 100644
--- a/src/externalsystems/Custodian.Library/CustodianServiceCollectionExtension.cs
+++ b/src/externalsystems/Custodian.Library/CustodianServiceCollectionExtension.cs
@@ -37,7 +37,8 @@ public static IServiceCollection AddCustodianService(this IServiceCollection ser
var sp = services.BuildServiceProvider();
var settings = sp.GetRequiredService>();
- services.AddCustomHttpClientWithAuthentication(settings.Value.BaseAddress);
+ var baseAddress = settings.Value.BaseAddress;
+ services.AddCustomHttpClientWithAuthentication(baseAddress.EndsWith('/') ? baseAddress : $"{baseAddress}/");
services
.AddTransient()
.AddTransient();
diff --git a/src/externalsystems/Dim.Library/DependencyInjection/DimServiceCollectionExtension.cs b/src/externalsystems/Dim.Library/DependencyInjection/DimServiceCollectionExtension.cs
index 8d70ee6289..3e7ef6c821 100644
--- a/src/externalsystems/Dim.Library/DependencyInjection/DimServiceCollectionExtension.cs
+++ b/src/externalsystems/Dim.Library/DependencyInjection/DimServiceCollectionExtension.cs
@@ -39,7 +39,8 @@ public static IServiceCollection AddDimService(this IServiceCollection services,
var sp = services.BuildServiceProvider();
var settings = sp.GetRequiredService>();
- services.AddCustomHttpClientWithAuthentication(settings.Value.BaseAddress);
+ var baseAddress = settings.Value.BaseAddress;
+ services.AddCustomHttpClientWithAuthentication(baseAddress.EndsWith('/') ? baseAddress : $"{baseAddress}/");
RegisterUniversalResolver(settings.Value, services);
services
diff --git a/src/externalsystems/IssuerComponent.Library/BusinessLogic/IssuerComponentBusinessLogic.cs b/src/externalsystems/IssuerComponent.Library/BusinessLogic/IssuerComponentBusinessLogic.cs
index efa82c4d9a..92db73c0e7 100644
--- a/src/externalsystems/IssuerComponent.Library/BusinessLogic/IssuerComponentBusinessLogic.cs
+++ b/src/externalsystems/IssuerComponent.Library/BusinessLogic/IssuerComponentBusinessLogic.cs
@@ -94,7 +94,7 @@ public async Task StoreBpnlCredentialResponse(Guid applicationId, IssuerResponse
checklistService.FinalizeChecklistEntryAndProcessSteps(
context,
- null,
+ item => item.ApplicationChecklistEntryStatusId = ApplicationChecklistEntryStatusId.IN_PROGRESS,
item =>
{
item.ApplicationChecklistEntryStatusId = data.Status == IssuerResponseStatus.UNSUCCESSFUL
@@ -162,7 +162,7 @@ public async Task StoreMembershipCredentialResponse(Guid applicationId, IssuerRe
checklistService.FinalizeChecklistEntryAndProcessSteps(
context,
- null,
+ item => item.ApplicationChecklistEntryStatusId = ApplicationChecklistEntryStatusId.IN_PROGRESS,
item =>
{
item.ApplicationChecklistEntryStatusId = data.Status == IssuerResponseStatus.UNSUCCESSFUL
diff --git a/src/externalsystems/IssuerComponent.Library/DependencyInjection/IssuerComponentServiceCollectionExtensions.cs b/src/externalsystems/IssuerComponent.Library/DependencyInjection/IssuerComponentServiceCollectionExtensions.cs
index b8cfb88b22..9a33d10784 100644
--- a/src/externalsystems/IssuerComponent.Library/DependencyInjection/IssuerComponentServiceCollectionExtensions.cs
+++ b/src/externalsystems/IssuerComponent.Library/DependencyInjection/IssuerComponentServiceCollectionExtensions.cs
@@ -38,7 +38,8 @@ public static IServiceCollection AddIssuerComponentService(this IServiceCollecti
var sp = services.BuildServiceProvider();
var settings = sp.GetRequiredService>();
- services.AddCustomHttpClientWithAuthentication(settings.Value.BaseAddress);
+ var baseAddress = settings.Value.BaseAddress;
+ services.AddCustomHttpClientWithAuthentication(baseAddress.EndsWith('/') ? baseAddress : $"{baseAddress}/");
services
.AddTransient()
.AddTransient();
diff --git a/src/framework/Framework.Async/Directory.Build.props b/src/framework/Framework.Async/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Async/Directory.Build.props
+++ b/src/framework/Framework.Async/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Cors/Directory.Build.props b/src/framework/Framework.Cors/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Cors/Directory.Build.props
+++ b/src/framework/Framework.Cors/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.DBAccess/Directory.Build.props b/src/framework/Framework.DBAccess/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.DBAccess/Directory.Build.props
+++ b/src/framework/Framework.DBAccess/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.DateTimeProvider/Directory.Build.props b/src/framework/Framework.DateTimeProvider/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.DateTimeProvider/Directory.Build.props
+++ b/src/framework/Framework.DateTimeProvider/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.DependencyInjection/Directory.Build.props b/src/framework/Framework.DependencyInjection/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.DependencyInjection/Directory.Build.props
+++ b/src/framework/Framework.DependencyInjection/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.ErrorHandling.Controller/Directory.Build.props b/src/framework/Framework.ErrorHandling.Controller/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.ErrorHandling.Controller/Directory.Build.props
+++ b/src/framework/Framework.ErrorHandling.Controller/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.ErrorHandling.Web/Directory.Build.props b/src/framework/Framework.ErrorHandling.Web/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.ErrorHandling.Web/Directory.Build.props
+++ b/src/framework/Framework.ErrorHandling.Web/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.ErrorHandling/Directory.Build.props b/src/framework/Framework.ErrorHandling/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.ErrorHandling/Directory.Build.props
+++ b/src/framework/Framework.ErrorHandling/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.HttpClientExtensions/Directory.Build.props b/src/framework/Framework.HttpClientExtensions/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.HttpClientExtensions/Directory.Build.props
+++ b/src/framework/Framework.HttpClientExtensions/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.HttpClientExtensions/HttpClientExtensions.cs b/src/framework/Framework.HttpClientExtensions/HttpClientExtensions.cs
index 2750afd8ea..e0b19719e1 100644
--- a/src/framework/Framework.HttpClientExtensions/HttpClientExtensions.cs
+++ b/src/framework/Framework.HttpClientExtensions/HttpClientExtensions.cs
@@ -30,7 +30,7 @@ public static IServiceCollection AddCustomHttpClientWithAuthentication(this I
{
if (baseAddress != null)
{
- c.BaseAddress = new Uri(baseAddress.EndsWith('/') ? baseAddress : $"{baseAddress}/");
+ c.BaseAddress = new Uri(baseAddress);
}
}).AddHttpMessageHandler>();
diff --git a/src/framework/Framework.IO/Directory.Build.props b/src/framework/Framework.IO/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.IO/Directory.Build.props
+++ b/src/framework/Framework.IO/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Linq/Directory.Build.props b/src/framework/Framework.Linq/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Linq/Directory.Build.props
+++ b/src/framework/Framework.Linq/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Logging/Directory.Build.props b/src/framework/Framework.Logging/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Logging/Directory.Build.props
+++ b/src/framework/Framework.Logging/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Models/Directory.Build.props b/src/framework/Framework.Models/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Models/Directory.Build.props
+++ b/src/framework/Framework.Models/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Seeding/Directory.Build.props b/src/framework/Framework.Seeding/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Seeding/Directory.Build.props
+++ b/src/framework/Framework.Seeding/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Swagger/Directory.Build.props b/src/framework/Framework.Swagger/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Swagger/Directory.Build.props
+++ b/src/framework/Framework.Swagger/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Token/Directory.Build.props b/src/framework/Framework.Token/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Token/Directory.Build.props
+++ b/src/framework/Framework.Token/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/framework/Framework.Web/Directory.Build.props b/src/framework/Framework.Web/Directory.Build.props
index b3507b4d9e..a0bb8d56af 100644
--- a/src/framework/Framework.Web/Directory.Build.props
+++ b/src/framework/Framework.Web/Directory.Build.props
@@ -19,7 +19,7 @@
- 2.1.0
+ 2.2.0
diff --git a/src/marketplace/Apps.Service/BusinessLogic/AppChangeBusinessLogic.cs b/src/marketplace/Apps.Service/BusinessLogic/AppChangeBusinessLogic.cs
index 625580d193..502c7cc3c1 100644
--- a/src/marketplace/Apps.Service/BusinessLogic/AppChangeBusinessLogic.cs
+++ b/src/marketplace/Apps.Service/BusinessLogic/AppChangeBusinessLogic.cs
@@ -367,7 +367,7 @@ public async Task CreateActiveAppDocumentAsync(Guid appId, DocumentTypeId docume
///
public async Task> GetActiveAppRolesAsync(Guid appId, string? languageShortName)
{
- var (isValid, isActive, roleDetails) = await _portalRepositories.GetInstance().GetActiveAppRolesAsync(appId, OfferTypeId.APP, languageShortName, Constants.DefaultLanguage).ConfigureAwait(ConfigureAwaitOptions.None);
+ var (isValid, isActive, roleDetails) = await _portalRepositories.GetInstance().GetActiveOfferRolesAsync(appId, OfferTypeId.APP, languageShortName, Constants.DefaultLanguage).ConfigureAwait(ConfigureAwaitOptions.None);
if (!isValid)
{
throw new NotFoundException($"App {appId} does not exist");
diff --git a/src/marketplace/Apps.Service/BusinessLogic/AppReleaseBusinessLogic.cs b/src/marketplace/Apps.Service/BusinessLogic/AppReleaseBusinessLogic.cs
index 445c81e842..88e8f8529a 100644
--- a/src/marketplace/Apps.Service/BusinessLogic/AppReleaseBusinessLogic.cs
+++ b/src/marketplace/Apps.Service/BusinessLogic/AppReleaseBusinessLogic.cs
@@ -556,4 +556,19 @@ public Task> GetTechnicalUserProfil
///
public Task UpdateTechnicalUserProfiles(Guid appId, IEnumerable data) =>
_offerService.UpdateTechnicalUserProfiles(appId, OfferTypeId.APP, data, _settings.TechnicalUserProfileClient);
+
+ ///
+ public async Task> GetAppProviderRolesAsync(Guid appId, string? languageShortName)
+ {
+ var (isValid, isProvider, roleDetails) = await _portalRepositories.GetInstance().GetOfferProviderRolesAsync(appId, OfferTypeId.APP, _identityData.CompanyId, languageShortName, Constants.DefaultLanguage).ConfigureAwait(ConfigureAwaitOptions.None);
+ if (!isValid)
+ {
+ throw new NotFoundException($"App {appId} does not exist");
+ }
+ if (!isProvider)
+ {
+ throw new ForbiddenException($"Company {_identityData.CompanyId} is not the provider company");
+ }
+ return roleDetails ?? throw new UnexpectedConditionException("roleDetails should never be null here");
+ }
}
diff --git a/src/marketplace/Apps.Service/BusinessLogic/IAppReleaseBusinessLogic.cs b/src/marketplace/Apps.Service/BusinessLogic/IAppReleaseBusinessLogic.cs
index e01147a6aa..09216b10ca 100644
--- a/src/marketplace/Apps.Service/BusinessLogic/IAppReleaseBusinessLogic.cs
+++ b/src/marketplace/Apps.Service/BusinessLogic/IAppReleaseBusinessLogic.cs
@@ -178,4 +178,11 @@ public interface IAppReleaseBusinessLogic
/// Id of the app
/// The technical user profiles
Task UpdateTechnicalUserProfiles(Guid appId, IEnumerable data);
+
+ ///
+ /// Get an user roles for an app provider
+ ///
+ /// Id of the app
+ ///
+ Task> GetAppProviderRolesAsync(Guid appId, string? languageShortName);
}
diff --git a/src/marketplace/Apps.Service/Controllers/AppReleaseProcessController.cs b/src/marketplace/Apps.Service/Controllers/AppReleaseProcessController.cs
index 23cc3c2264..15dab4e39c 100644
--- a/src/marketplace/Apps.Service/Controllers/AppReleaseProcessController.cs
+++ b/src/marketplace/Apps.Service/Controllers/AppReleaseProcessController.cs
@@ -493,4 +493,22 @@ public async Task CreateAndUpdateTechnicalUserProfiles([FromRou
await _appReleaseBusinessLogic.UpdateTechnicalUserProfiles(appId, data).ConfigureAwait(ConfigureAwaitOptions.None);
return NoContent();
}
+
+ ///
+ /// Gets the app providers an overview of configures app roles.
+ ///
+ /// Id of the app which roles should be returned.
+ /// OPTIONAL: The language short name.
+ /// Returns the app providers an overview of configures app roles.
+ /// Example: GET: /api/apps/AppChange/D3B1ECA2-6148-4008-9E6C-C1C2AEA5C645/roles
+ /// Returns the client roles.
+ /// The app was not found.
+ /// The app is not the provider of the company
+ [HttpGet]
+ [Authorize(Roles = "view_client_roles")]
+ [Authorize(Policy = PolicyTypes.ValidCompany)]
+ [Route("{appId}/roles")]
+ [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
+ public Task> GetAppProviderRolesAsync([FromRoute] Guid appId, [FromQuery] string? languageShortName = null) =>
+ _appReleaseBusinessLogic.GetAppProviderRolesAsync(appId, languageShortName);
}
diff --git a/src/portalbackend/PortalBackend.DBAccess/Repositories/IUserRolesRepository.cs b/src/portalbackend/PortalBackend.DBAccess/Repositories/IUserRolesRepository.cs
index 133a963370..f095ef6fa8 100644
--- a/src/portalbackend/PortalBackend.DBAccess/Repositories/IUserRolesRepository.cs
+++ b/src/portalbackend/PortalBackend.DBAccess/Repositories/IUserRolesRepository.cs
@@ -78,5 +78,13 @@ public interface IUserRolesRepository
///
///
///
- Task<(bool IsValid, bool IsActive, IEnumerable? AppRoleDetails)> GetActiveAppRolesAsync(Guid offerId, OfferTypeId offerTypeId, string? languageShortName, string defaultLanguageShortName);
+ Task<(bool IsValid, bool IsActive, IEnumerable? AppRoleDetails)> GetActiveOfferRolesAsync(Guid offerId, OfferTypeId offerTypeId, string? languageShortName, string defaultLanguageShortName);
+
+ ///
+ /// Gets userRoles for an app provider
+ ///
+ ///
+ ///
+ ///
+ Task<(bool IsValid, bool IsProvider, IEnumerable? AppRoleDetails)> GetOfferProviderRolesAsync(Guid offerId, OfferTypeId offerTypeId, Guid companyId, string? languageShortName, string defaultLanguageShortName);
}
diff --git a/src/portalbackend/PortalBackend.DBAccess/Repositories/UserRolesRepository.cs b/src/portalbackend/PortalBackend.DBAccess/Repositories/UserRolesRepository.cs
index a4383cf525..887e7c13bd 100644
--- a/src/portalbackend/PortalBackend.DBAccess/Repositories/UserRolesRepository.cs
+++ b/src/portalbackend/PortalBackend.DBAccess/Repositories/UserRolesRepository.cs
@@ -277,7 +277,7 @@ public IAsyncEnumerable GetRolesForClient(string technicalUserProfileClien
.ToAsyncEnumerable();
///
- public Task<(bool IsValid, bool IsActive, IEnumerable? AppRoleDetails)> GetActiveAppRolesAsync(Guid offerId, OfferTypeId offerTypeId, string? languageShortName, string defaultLanguageShortName) =>
+ public Task<(bool IsValid, bool IsActive, IEnumerable? AppRoleDetails)> GetActiveOfferRolesAsync(Guid offerId, OfferTypeId offerTypeId, string? languageShortName, string defaultLanguageShortName) =>
_dbContext.Offers
.AsNoTracking()
.Where(offer => offer!.Id == offerId && offer.OfferTypeId == offerTypeId)
@@ -301,4 +301,30 @@ public IAsyncEnumerable GetRolesForClient(string technicalUserProfileClien
description.Description))))
: null))
.SingleOrDefaultAsync();
+
+ ///
+ public Task<(bool IsValid, bool IsProvider, IEnumerable? AppRoleDetails)> GetOfferProviderRolesAsync(Guid offerId, OfferTypeId offerTypeId, Guid companyId, string? languageShortName, string defaultLanguageShortName) =>
+ _dbContext.Offers
+ .AsNoTracking()
+ .Where(offer => offer!.Id == offerId && offer.OfferTypeId == offerTypeId)
+ .Select(offer => new
+ {
+ Provider = offer.ProviderCompanyId == companyId,
+ Roles = offer.UserRoles
+ })
+ .Select(x => new ValueTuple?>(
+ true,
+ x.Provider,
+ x.Provider
+ ? x.Roles.Select(role =>
+ new ActiveAppRoleDetails(
+ role.UserRoleText,
+ role.UserRoleDescriptions.Where(description =>
+ (languageShortName != null && description.LanguageShortName == languageShortName) ||
+ description.LanguageShortName == defaultLanguageShortName)
+ .Select(description => new ActiveAppUserRoleDescription(
+ description.LanguageShortName,
+ description.Description))))
+ : null))
+ .SingleOrDefaultAsync();
}
diff --git a/src/portalbackend/PortalBackend.Migrations/Migrations/20240424073406_2.0.0-rc4.Designer.cs b/src/portalbackend/PortalBackend.Migrations/Migrations/20240424073406_2.0.0-rc4.Designer.cs
new file mode 100644
index 0000000000..84f4904ba8
--- /dev/null
+++ b/src/portalbackend/PortalBackend.Migrations/Migrations/20240424073406_2.0.0-rc4.Designer.cs
@@ -0,0 +1,9916 @@
+/********************************************************************************
+ * Copyright (c) 2024 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ ********************************************************************************/
+
+//
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities;
+using System.Text.Json;
+
+#nullable disable
+
+namespace Org.Eclipse.TractusX.Portal.Backend.PortalBackend.Migrations.Migrations
+{
+ [DbContext(typeof(PortalDbContext))]
+ [Migration("20240424073406_2.0.0-rc4")]
+ partial class _200rc4
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("portal")
+ .UseCollation("en_US.utf8")
+ .HasAnnotation("ProductVersion", "8.0.2")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditAppSubscriptionDetail20221118", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AppInstanceId")
+ .HasColumnType("uuid")
+ .HasColumnName("app_instance_id");
+
+ b.Property("AppSubscriptionUrl")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("app_subscription_url");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("OfferSubscriptionId")
+ .HasColumnType("uuid")
+ .HasColumnName("offer_subscription_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_app_subscription_detail20221118");
+
+ b.ToTable("audit_app_subscription_detail20221118", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditAppSubscriptionDetail20231115", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AppInstanceId")
+ .HasColumnType("uuid")
+ .HasColumnName("app_instance_id");
+
+ b.Property("AppSubscriptionUrl")
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("app_subscription_url");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("OfferSubscriptionId")
+ .HasColumnType("uuid")
+ .HasColumnName("offer_subscription_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_app_subscription_detail20231115");
+
+ b.ToTable("audit_app_subscription_detail20231115", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCertificateManagement20240416", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyCertificateStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_certificate_status_id");
+
+ b.Property("CompanyCertificateTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("company_certificate_type_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("DocumentId")
+ .HasColumnType("uuid")
+ .HasColumnName("document_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("ValidFrom")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("valid_from");
+
+ b.Property("ValidTill")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("valid_till");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_certificate_management20240416");
+
+ b.ToTable("audit_certificate_management20240416", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyApplication20221005", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("ApplicationStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("application_status_id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_application20221005");
+
+ b.ToTable("audit_company_application20221005", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyApplication20230214", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("ApplicationStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("application_status_id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("ChecklistProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("checklist_process_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_application20230214");
+
+ b.ToTable("audit_company_application20230214", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyApplication20230824", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("ApplicationStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("application_status_id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("ChecklistProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("checklist_process_id");
+
+ b.Property("CompanyApplicationTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("company_application_type_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("OnboardingServiceProviderId")
+ .HasColumnType("uuid")
+ .HasColumnName("onboarding_service_provider_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_application20230824");
+
+ b.ToTable("audit_company_application20230824", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyApplication20231115", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("ApplicationStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("application_status_id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("ChecklistProcessId")
+ .HasColumnType("uuid")
+ .HasColumnName("checklist_process_id");
+
+ b.Property("CompanyApplicationTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("company_application_type_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("OnboardingServiceProviderId")
+ .HasColumnType("uuid")
+ .HasColumnName("onboarding_service_provider_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_application20231115");
+
+ b.ToTable("audit_company_application20231115", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyAssignedRole2023316", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("CompanyRoleId")
+ .HasColumnType("integer")
+ .HasColumnName("company_role_id");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_assigned_role2023316");
+
+ b.ToTable("audit_company_assigned_role2023316", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanySsiDetail20230621", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("CompanySsiDetailStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_ssi_detail_status_id");
+
+ b.Property("CreatorUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("creator_user_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("DocumentId")
+ .HasColumnType("uuid")
+ .HasColumnName("document_id");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry_date");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("VerifiedCredentialExternalTypeUseCaseDetailId")
+ .HasColumnType("uuid")
+ .HasColumnName("verified_credential_external_type_use_case_detail_id");
+
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_ssi_detail20230621");
+
+ b.ToTable("audit_company_ssi_detail20230621", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanySsiDetail20231115", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("CompanySsiDetailStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_ssi_detail_status_id");
+
+ b.Property("CreatorUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("creator_user_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("DocumentId")
+ .HasColumnType("uuid")
+ .HasColumnName("document_id");
+
+ b.Property("ExpiryDate")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("expiry_date");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("VerifiedCredentialExternalTypeUseCaseDetailId")
+ .HasColumnType("uuid")
+ .HasColumnName("verified_credential_external_type_use_case_detail_id");
+
+ b.Property("VerifiedCredentialTypeId")
+ .HasColumnType("integer")
+ .HasColumnName("verified_credential_type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_ssi_detail20231115");
+
+ b.ToTable("audit_company_ssi_detail20231115", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyUser20221005", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_id");
+
+ b.Property("CompanyUserStatusId")
+ .HasColumnType("integer")
+ .HasColumnName("company_user_status_id");
+
+ b.Property("DateCreated")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_created");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("Email")
+ .HasColumnType("text")
+ .HasColumnName("email");
+
+ b.Property("Firstname")
+ .HasColumnType("text")
+ .HasColumnName("firstname");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("Lastlogin")
+ .HasColumnType("bytea")
+ .HasColumnName("lastlogin");
+
+ b.Property("Lastname")
+ .HasColumnType("text")
+ .HasColumnName("lastname");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_user20221005");
+
+ b.ToTable("audit_company_user20221005", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyUser20230522", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("Email")
+ .HasColumnType("text")
+ .HasColumnName("email");
+
+ b.Property("Firstname")
+ .HasColumnType("text")
+ .HasColumnName("firstname");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("Lastlogin")
+ .HasColumnType("bytea")
+ .HasColumnName("lastlogin");
+
+ b.Property("Lastname")
+ .HasColumnType("text")
+ .HasColumnName("lastname");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_user20230523");
+
+ b.ToTable("audit_company_user20230523", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditCompanyUserAssignedRole20221018", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyUserId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_user_id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("UserRoleId")
+ .HasColumnType("uuid")
+ .HasColumnName("user_role_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_company_user_assigned_role20221018");
+
+ b.ToTable("audit_company_user_assigned_role20221018", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditConnector20230405", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("ConnectorUrl")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("connector_url");
+
+ b.Property("DapsRegistrationSuccessful")
+ .HasColumnType("boolean")
+ .HasColumnName("daps_registration_successful");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("HostId")
+ .HasColumnType("uuid")
+ .HasColumnName("host_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("LocationId")
+ .IsRequired()
+ .HasMaxLength(2)
+ .HasColumnType("character varying(2)")
+ .HasColumnName("location_id");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name");
+
+ b.Property("ProviderId")
+ .HasColumnType("uuid")
+ .HasColumnName("provider_id");
+
+ b.Property("SelfDescriptionDocumentId")
+ .HasColumnType("uuid")
+ .HasColumnName("self_description_document_id");
+
+ b.Property("SelfDescriptionMessage")
+ .HasColumnType("text")
+ .HasColumnName("self_description_message");
+
+ b.Property("StatusId")
+ .HasColumnType("integer")
+ .HasColumnName("status_id");
+
+ b.Property("TypeId")
+ .HasColumnType("integer")
+ .HasColumnName("type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_connector20230405");
+
+ b.ToTable("audit_connector20230405", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditConnector20230503", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyServiceAccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_service_account_id");
+
+ b.Property("ConnectorUrl")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("connector_url");
+
+ b.Property("DapsRegistrationSuccessful")
+ .HasColumnType("boolean")
+ .HasColumnName("daps_registration_successful");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("HostId")
+ .HasColumnType("uuid")
+ .HasColumnName("host_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("LocationId")
+ .IsRequired()
+ .HasMaxLength(2)
+ .HasColumnType("character varying(2)")
+ .HasColumnName("location_id");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name");
+
+ b.Property("ProviderId")
+ .HasColumnType("uuid")
+ .HasColumnName("provider_id");
+
+ b.Property("SelfDescriptionDocumentId")
+ .HasColumnType("uuid")
+ .HasColumnName("self_description_document_id");
+
+ b.Property("SelfDescriptionMessage")
+ .HasColumnType("text")
+ .HasColumnName("self_description_message");
+
+ b.Property("StatusId")
+ .HasColumnType("integer")
+ .HasColumnName("status_id");
+
+ b.Property("TypeId")
+ .HasColumnType("integer")
+ .HasColumnName("type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_connector20230503");
+
+ b.ToTable("audit_connector20230503", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditConnector20230803", b =>
+ {
+ b.Property("AuditV1Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1id");
+
+ b.Property("AuditV1DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("audit_v1date_last_changed");
+
+ b.Property("AuditV1LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("audit_v1last_editor_id");
+
+ b.Property("AuditV1OperationId")
+ .HasColumnType("integer")
+ .HasColumnName("audit_v1operation_id");
+
+ b.Property("CompanyServiceAccountId")
+ .HasColumnType("uuid")
+ .HasColumnName("company_service_account_id");
+
+ b.Property("ConnectorUrl")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("connector_url");
+
+ b.Property("DateLastChanged")
+ .HasColumnType("timestamp with time zone")
+ .HasColumnName("date_last_changed");
+
+ b.Property("HostId")
+ .HasColumnType("uuid")
+ .HasColumnName("host_id");
+
+ b.Property("Id")
+ .HasColumnType("uuid")
+ .HasColumnName("id");
+
+ b.Property("LastEditorId")
+ .HasColumnType("uuid")
+ .HasColumnName("last_editor_id");
+
+ b.Property("LocationId")
+ .IsRequired()
+ .HasMaxLength(2)
+ .HasColumnType("character varying(2)")
+ .HasColumnName("location_id");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("character varying(255)")
+ .HasColumnName("name");
+
+ b.Property("ProviderId")
+ .HasColumnType("uuid")
+ .HasColumnName("provider_id");
+
+ b.Property("SelfDescriptionDocumentId")
+ .HasColumnType("uuid")
+ .HasColumnName("self_description_document_id");
+
+ b.Property("SelfDescriptionMessage")
+ .HasColumnType("text")
+ .HasColumnName("self_description_message");
+
+ b.Property("StatusId")
+ .HasColumnType("integer")
+ .HasColumnName("status_id");
+
+ b.Property("TypeId")
+ .HasColumnType("integer")
+ .HasColumnName("type_id");
+
+ b.HasKey("AuditV1Id")
+ .HasName("pk_audit_connector20230803");
+
+ b.ToTable("audit_connector20230803", "portal");
+ });
+
+ modelBuilder.Entity("Org.Eclipse.TractusX.Portal.Backend.PortalBackend.PortalEntities.AuditEntities.AuditConnector20231115", b =>
+ {
+ b.Property