diff --git a/aspnetcore/src/api.Tests/Services_Tests/OrganizationHandlerServiceTest.cs b/aspnetcore/src/api.Tests/Services_Tests/OrganizationHandlerServiceTest.cs index 31e6c3da..0d77e2c7 100644 --- a/aspnetcore/src/api.Tests/Services_Tests/OrganizationHandlerServiceTest.cs +++ b/aspnetcore/src/api.Tests/Services_Tests/OrganizationHandlerServiceTest.cs @@ -1,12 +1,12 @@ -using Xunit; +using Xunit; using api.Services; using api.Models.Common; using api.Models.Ttv; using System; -namespace api.Tests -{ - [Collection("Organization handler service tests")] +namespace api.Tests +{ + [Collection("Organization handler service tests")] public class OrganizationHandlerServiceTests { [Fact(DisplayName = "Get correct DimPid.PidType value for ORCID disambiguation source")] @@ -39,6 +39,7 @@ public void getDimIdentifierlessDatum_organization_name() Assert.Equal(Constants.SourceIdentifiers.PROFILE_API, dimIdentifierlessDatum.SourceId); Assert.Equal(Constants.SourceDescriptions.ORCID, dimIdentifierlessDatum.SourceDescription); Assert.Equal("foo=bar", dimIdentifierlessDatum.UnlinkedIdentifier); + Assert.Equal(-1, dimIdentifierlessDatum.DimOrganizationId); } [Fact(DisplayName = "Get new DimIdentifierlessDatum for organization unit")] @@ -65,6 +66,7 @@ public void getDimIdentifierlessDatum_organization_unit() Assert.Equal(Constants.SourceIdentifiers.PROFILE_API, dimIdentifierlessDatum.SourceId); Assert.Equal(Constants.SourceDescriptions.ORCID, dimIdentifierlessDatum.SourceDescription); Assert.Null(dimIdentifierlessDatum.UnlinkedIdentifier); + Assert.Equal(-1, dimIdentifierlessDatum.DimOrganizationId); } [Fact(DisplayName = "Normalize RORID, ID only")] @@ -77,8 +79,8 @@ public void normalizeRorId_01() string actualNormalizedRorId = organizationHandlerService.NormalizeRorId(rorId); // Assert Assert.Equal(rorId, actualNormalizedRorId); - } - + } + [Fact(DisplayName = "Normalize RORID, URL version")] public void normalizeRorId_02() { @@ -116,6 +118,6 @@ public void getUnlinkedIdentifierFromOrcidDisambiguation_02() string actual = organizationHandlerService.GetUnlinkedIdentifierFromOrcidDisambiguation(orcidDisambiguationSource: source, orcidDisambiguatedOrganizationIdentifier: identifier); // Assert Assert.Equal("", actual); - } - } + } + } } \ No newline at end of file diff --git a/aspnetcore/src/api.Tests/Services_Tests/TtvSqlServiceTest.cs b/aspnetcore/src/api.Tests/Services_Tests/TtvSqlServiceTest.cs index 6ff04117..8d9bc75b 100644 --- a/aspnetcore/src/api.Tests/Services_Tests/TtvSqlServiceTest.cs +++ b/aspnetcore/src/api.Tests/Services_Tests/TtvSqlServiceTest.cs @@ -619,19 +619,6 @@ public void Test_getSqlQuery_Delete_FactFieldValues_related_field_of_science() Assert.Equal(NormalizeSql(expectedSqlString), NormalizeSql(actualSqlString)); } - [Fact(DisplayName = "Get SQL query for deleting FactFieldValues related data, funding decision")] - public void Test_getSqlQuery_Delete_FactFieldValues_related_funding_decision() - { - // Arrange - TtvSqlService ttvSqlService = new(); - List ids = new() { 78, 89, 90 }; - string expectedSqlString = "DELETE FROM dim_funding_decision WHERE id IN (78,89,90)"; - // Act - string actualSqlString = ttvSqlService.GetSqlQuery_Delete_DimFundingDecisions(ids); - // Assert - Assert.Equal(NormalizeSql(expectedSqlString), NormalizeSql(actualSqlString)); - } - [Fact(DisplayName = "Get SQL query for deleting FactFieldValues related data, keyword")] public void Test_getSqlQuery_Delete_FactFieldValues_related_keyword() { @@ -749,19 +736,6 @@ public void Test_getSqlQuery_Delete_FactFieldValues_related_research_community() Assert.Equal(NormalizeSql(expectedSqlString), NormalizeSql(actualSqlString)); } - [Fact(DisplayName = "Get SQL query for deleting FactFieldValues related data, research dataset")] - public void Test_getSqlQuery_Delete_FactFieldValues_related_research_dataset() - { - // Arrange - TtvSqlService ttvSqlService = new(); - List ids = new() { 106, 107, 108 }; - string expectedSqlString = "DELETE FROM dim_research_dataset WHERE id IN (106,107,108)"; - // Act - string actualSqlString = ttvSqlService.GetSqlQuery_Delete_DimResearchDatasets(ids); - // Assert - Assert.Equal(NormalizeSql(expectedSqlString), NormalizeSql(actualSqlString)); - } - [Fact(DisplayName = "Get SQL query for deleting FactFieldValues related data, researcher description")] public void Test_getSqlQuery_Delete_FactFieldValues_related_researcher_description() { @@ -1288,12 +1262,12 @@ public void GetSqlQuery_ProfileData_ProfileEditor() dim_profile_only_funding_decision_web_link.url AS 'DimProfileOnlyFundingDecision_DimWebLink_Url', dim_research_dataset.local_identifier AS 'DimResearchDataset_LocalIdentifier', - dim_research_dataset.name_fi AS 'DimResearchDataset_NameFi', - dim_research_dataset.name_en AS 'DimResearchDataset_NameEn', - dim_research_dataset.name_sv AS 'DimResearchDataset_NameSv', - dim_research_dataset.description_fi AS 'DimResearchDataset_DescriptionFi', - dim_research_dataset.description_en AS 'DimResearchDataset_DescriptionEn', - dim_research_dataset.description_sv AS 'DimResearchDataset_DescriptionSv', + dim_research_dataset_descriptive_item_name_fi.descriptive_item AS 'DimResearchDataset_NameFi', + dim_research_dataset_descriptive_item_name_en.descriptive_item AS 'DimResearchDataset_NameEn', + dim_research_dataset_descriptive_item_name_sv.descriptive_item AS 'DimResearchDataset_NameSv', + dim_research_dataset_descriptive_item_description_fi.descriptive_item AS 'DimResearchDataset_DescriptionFi', + dim_research_dataset_descriptive_item_description_en.descriptive_item AS 'DimResearchDataset_DescriptionEn', + dim_research_dataset_descriptive_item_description_sv.descriptive_item AS 'DimResearchDataset_DescriptionSv', dim_research_dataset.dataset_created AS 'DimResearchDataset_DatasetCreated', dim_research_dataset_referencedata_availability.code_value AS 'DimResearchDataset_AccessType', @@ -1395,6 +1369,12 @@ LEFT JOIN dim_referencedata AS research_activity_fact_contribution_researcher_na LEFT JOIN dim_web_link AS dim_profile_only_funding_decision_web_link ON dim_profile_only_funding_decision_web_link.dim_profile_only_funding_decision_id=dpofd.id AND dim_profile_only_funding_decision_web_link.dim_profile_only_funding_decision_id!=-1 JOIN dim_research_dataset ON ffv.dim_research_dataset_id=dim_research_dataset.id + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_fi ON dim_research_dataset_descriptive_item_name_fi.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_fi.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_fi.descriptive_item_language='fi' AND dim_research_dataset_descriptive_item_name_fi.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_en ON dim_research_dataset_descriptive_item_name_en.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_en.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_en.descriptive_item_language='en' AND dim_research_dataset_descriptive_item_name_en.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_sv ON dim_research_dataset_descriptive_item_name_sv.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_sv.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_sv.descriptive_item_language='sv' AND dim_research_dataset_descriptive_item_name_sv.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_fi ON dim_research_dataset_descriptive_item_description_fi.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_fi.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_fi.descriptive_item_language='fi' AND dim_research_dataset_descriptive_item_description_fi.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_en ON dim_research_dataset_descriptive_item_description_en.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_en.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_en.descriptive_item_language='en' AND dim_research_dataset_descriptive_item_description_en.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_sv ON dim_research_dataset_descriptive_item_description_sv.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_sv.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_sv.descriptive_item_language='sv' AND dim_research_dataset_descriptive_item_description_sv.dim_research_dataset_id!=-1 LEFT JOIN dim_referencedata AS dim_research_dataset_referencedata_availability ON dim_research_dataset.dim_referencedata_availability=dim_research_dataset_referencedata_availability.id AND dim_research_dataset.dim_referencedata_availability!=-1 JOIN dim_profile_only_dataset ON ffv.dim_profile_only_dataset_id=dim_profile_only_dataset.id @@ -1689,12 +1669,12 @@ public void GetSqlQuery_ProfileData_Elasticsearch() dim_profile_only_funding_decision_web_link.url AS 'DimProfileOnlyFundingDecision_DimWebLink_Url', dim_research_dataset.local_identifier AS 'DimResearchDataset_LocalIdentifier', - dim_research_dataset.name_fi AS 'DimResearchDataset_NameFi', - dim_research_dataset.name_en AS 'DimResearchDataset_NameEn', - dim_research_dataset.name_sv AS 'DimResearchDataset_NameSv', - dim_research_dataset.description_fi AS 'DimResearchDataset_DescriptionFi', - dim_research_dataset.description_en AS 'DimResearchDataset_DescriptionEn', - dim_research_dataset.description_sv AS 'DimResearchDataset_DescriptionSv', + dim_research_dataset_descriptive_item_name_fi.descriptive_item AS 'DimResearchDataset_NameFi', + dim_research_dataset_descriptive_item_name_en.descriptive_item AS 'DimResearchDataset_NameEn', + dim_research_dataset_descriptive_item_name_sv.descriptive_item AS 'DimResearchDataset_NameSv', + dim_research_dataset_descriptive_item_description_fi.descriptive_item AS 'DimResearchDataset_DescriptionFi', + dim_research_dataset_descriptive_item_description_en.descriptive_item AS 'DimResearchDataset_DescriptionEn', + dim_research_dataset_descriptive_item_description_sv.descriptive_item AS 'DimResearchDataset_DescriptionSv', dim_research_dataset.dataset_created AS 'DimResearchDataset_DatasetCreated', dim_research_dataset_referencedata_availability.code_value AS 'DimResearchDataset_AccessType', @@ -1796,6 +1776,12 @@ LEFT JOIN dim_referencedata AS research_activity_fact_contribution_researcher_na LEFT JOIN dim_web_link AS dim_profile_only_funding_decision_web_link ON dim_profile_only_funding_decision_web_link.dim_profile_only_funding_decision_id=dpofd.id AND dim_profile_only_funding_decision_web_link.dim_profile_only_funding_decision_id!=-1 JOIN dim_research_dataset ON ffv.dim_research_dataset_id=dim_research_dataset.id + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_fi ON dim_research_dataset_descriptive_item_name_fi.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_fi.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_fi.descriptive_item_language='fi' AND dim_research_dataset_descriptive_item_name_fi.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_en ON dim_research_dataset_descriptive_item_name_en.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_en.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_en.descriptive_item_language='en' AND dim_research_dataset_descriptive_item_name_en.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_sv ON dim_research_dataset_descriptive_item_name_sv.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_sv.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_sv.descriptive_item_language='sv' AND dim_research_dataset_descriptive_item_name_sv.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_fi ON dim_research_dataset_descriptive_item_description_fi.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_fi.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_fi.descriptive_item_language='fi' AND dim_research_dataset_descriptive_item_description_fi.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_en ON dim_research_dataset_descriptive_item_description_en.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_en.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_en.descriptive_item_language='en' AND dim_research_dataset_descriptive_item_description_en.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_sv ON dim_research_dataset_descriptive_item_description_sv.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_sv.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_sv.descriptive_item_language='sv' AND dim_research_dataset_descriptive_item_description_sv.dim_research_dataset_id!=-1 LEFT JOIN dim_referencedata AS dim_research_dataset_referencedata_availability ON dim_research_dataset.dim_referencedata_availability=dim_research_dataset_referencedata_availability.id AND dim_research_dataset.dim_referencedata_availability!=-1 JOIN dim_profile_only_dataset ON ffv.dim_profile_only_dataset_id=dim_profile_only_dataset.id diff --git a/aspnetcore/src/api/Models/ProfileEditor/Items/ProfileEditorPublication.cs b/aspnetcore/src/api/Models/ProfileEditor/Items/ProfileEditorPublication.cs index ad8d7d38..ef1887f2 100644 --- a/aspnetcore/src/api/Models/ProfileEditor/Items/ProfileEditorPublication.cs +++ b/aspnetcore/src/api/Models/ProfileEditor/Items/ProfileEditorPublication.cs @@ -44,4 +44,4 @@ public partial class ProfileEditorPublication : ProfileEditorItem public string SelfArchivedCode { get; set; } public string Volume { get; set; } } -} +} \ No newline at end of file diff --git a/aspnetcore/src/api/Models/ProfileEditor/ProfileDataFromSql.cs b/aspnetcore/src/api/Models/ProfileEditor/ProfileDataFromSql.cs index 345e2cab..3213517f 100644 --- a/aspnetcore/src/api/Models/ProfileEditor/ProfileDataFromSql.cs +++ b/aspnetcore/src/api/Models/ProfileEditor/ProfileDataFromSql.cs @@ -303,4 +303,4 @@ public ProfileDataFromSql() public DateTime? DimProfileOnlyDataset_DatasetCreated { get; set; } public string DimProfileOnlyDataset_DimWebLink_Url { get; set; } } -} +} \ No newline at end of file diff --git a/aspnetcore/src/api/Models/Ttv/DimCallProgramme.cs b/aspnetcore/src/api/Models/Ttv/DimCallProgramme.cs index d94e1a50..751ed0c6 100644 --- a/aspnetcore/src/api/Models/Ttv/DimCallProgramme.cs +++ b/aspnetcore/src/api/Models/Ttv/DimCallProgramme.cs @@ -83,6 +83,8 @@ public partial class DimCallProgramme public virtual ICollection DimWebLinks { get; set; } = new List(); + public virtual ICollection FactReferencedata { get; set; } = new List(); + public virtual ICollection InverseDimCallProgrammeNavigation { get; set; } = new List(); public virtual DimReferencedatum TypeOfFundingNavigation { get; set; } diff --git a/aspnetcore/src/api/Models/Ttv/DimDescriptiveItem.cs b/aspnetcore/src/api/Models/Ttv/DimDescriptiveItem.cs index 0b477dc3..82ef0aaf 100644 --- a/aspnetcore/src/api/Models/Ttv/DimDescriptiveItem.cs +++ b/aspnetcore/src/api/Models/Ttv/DimDescriptiveItem.cs @@ -74,12 +74,16 @@ public partial class DimDescriptiveItem public int DimResearchDatasetId { get; set; } + public int DimResearchDataCatalogId { get; set; } + public virtual DimDate DimEndDateNavigation { get; set; } public virtual DimPublication DimPublication { get; set; } public virtual DimRegisteredDataSource DimRegisteredDataSource { get; set; } + public virtual DimResearchDataCatalog DimResearchDataCatalog { get; set; } + public virtual DimResearchDataset DimResearchDataset { get; set; } public virtual DimResearchProject DimResearchProject { get; set; } diff --git a/aspnetcore/src/api/Models/Ttv/DimFundingDecision.cs b/aspnetcore/src/api/Models/Ttv/DimFundingDecision.cs index 7d623c72..311a6132 100644 --- a/aspnetcore/src/api/Models/Ttv/DimFundingDecision.cs +++ b/aspnetcore/src/api/Models/Ttv/DimFundingDecision.cs @@ -109,6 +109,8 @@ public partial class DimFundingDecision public virtual ICollection FactFieldValues { get; set; } = new List(); + public virtual ICollection FactReferencedata { get; set; } = new List(); + public virtual ICollection InverseDimFundingDecisionIdParentDecisionNavigation { get; set; } = new List(); public virtual ICollection DimFundingDecisionFroms { get; set; } = new List(); diff --git a/aspnetcore/src/api/Models/Ttv/DimIdentifierlessDatum.cs b/aspnetcore/src/api/Models/Ttv/DimIdentifierlessDatum.cs index 48de2059..d123abde 100644 --- a/aspnetcore/src/api/Models/Ttv/DimIdentifierlessDatum.cs +++ b/aspnetcore/src/api/Models/Ttv/DimIdentifierlessDatum.cs @@ -27,8 +27,14 @@ public partial class DimIdentifierlessDatum public string UnlinkedIdentifier { get; set; } + public int DimOrganizationId { get; set; } + + public string ValueUnd { get; set; } + public virtual DimIdentifierlessDatum DimIdentifierlessData { get; set; } + public virtual DimOrganization DimOrganization { get; set; } + public virtual ICollection FactContributions { get; set; } = new List(); public virtual ICollection FactFieldValues { get; set; } = new List(); diff --git a/aspnetcore/src/api/Models/Ttv/DimInfrastructure.cs b/aspnetcore/src/api/Models/Ttv/DimInfrastructure.cs index b8d2a581..3ff233e3 100644 --- a/aspnetcore/src/api/Models/Ttv/DimInfrastructure.cs +++ b/aspnetcore/src/api/Models/Ttv/DimInfrastructure.cs @@ -53,6 +53,8 @@ public partial class DimInfrastructure public virtual ICollection FactInfraKeywords { get; set; } = new List(); + public virtual ICollection FactReferencedata { get; set; } = new List(); + public virtual ICollection FactRelationFromInfrastructures { get; set; } = new List(); public virtual ICollection FactRelationToInfrastructures { get; set; } = new List(); diff --git a/aspnetcore/src/api/Models/Ttv/DimKeyword.cs b/aspnetcore/src/api/Models/Ttv/DimKeyword.cs index e32cb668..86a198e2 100644 --- a/aspnetcore/src/api/Models/Ttv/DimKeyword.cs +++ b/aspnetcore/src/api/Models/Ttv/DimKeyword.cs @@ -45,6 +45,8 @@ public partial class DimKeyword public virtual ICollection FactInfraKeywords { get; set; } = new List(); + public virtual ICollection FactKeywords { get; set; } = new List(); + public virtual ICollection InverseDimKeywordCloseMatchNavigation { get; set; } = new List(); public virtual ICollection InverseDimKeywordLanguageVariantNavigation { get; set; } = new List(); @@ -54,6 +56,4 @@ public partial class DimKeyword public virtual ICollection DimFundingDecisions { get; set; } = new List(); public virtual ICollection DimPublications { get; set; } = new List(); - - public virtual ICollection DimResearchDatasets { get; set; } = new List(); } diff --git a/aspnetcore/src/api/Models/Ttv/DimOrganization.cs b/aspnetcore/src/api/Models/Ttv/DimOrganization.cs index 0d0ebc8c..47d7465d 100644 --- a/aspnetcore/src/api/Models/Ttv/DimOrganization.cs +++ b/aspnetcore/src/api/Models/Ttv/DimOrganization.cs @@ -73,6 +73,8 @@ public partial class DimOrganization public virtual ICollection DimFundingDecisions { get; set; } = new List(); + public virtual ICollection DimIdentifierlessData { get; set; } = new List(); + public virtual DimOrganization DimOrganizationBroaderNavigation { get; set; } public virtual ICollection DimPids { get; set; } = new List(); diff --git a/aspnetcore/src/api/Models/Ttv/DimPublication.cs b/aspnetcore/src/api/Models/Ttv/DimPublication.cs index a74fdfe9..d4686952 100644 --- a/aspnetcore/src/api/Models/Ttv/DimPublication.cs +++ b/aspnetcore/src/api/Models/Ttv/DimPublication.cs @@ -127,6 +127,8 @@ public partial class DimPublication public virtual ICollection FactFieldValues { get; set; } = new List(); + public virtual ICollection FactReferencedata { get; set; } = new List(); + public virtual ICollection FactRelationFromPublications { get; set; } = new List(); public virtual ICollection FactRelationToPublications { get; set; } = new List(); diff --git a/aspnetcore/src/api/Models/Ttv/DimReferencedatum.cs b/aspnetcore/src/api/Models/Ttv/DimReferencedatum.cs index d2393a8f..edcc617a 100644 --- a/aspnetcore/src/api/Models/Ttv/DimReferencedatum.cs +++ b/aspnetcore/src/api/Models/Ttv/DimReferencedatum.cs @@ -97,9 +97,7 @@ public partial class DimReferencedatum public virtual DimReferencedatum DimReferencedata { get; set; } - public virtual ICollection DimResearchDatasetDimReferencedataAvailabilityNavigations { get; set; } = new List(); - - public virtual ICollection DimResearchDatasetDimReferencedataLicenseNavigations { get; set; } = new List(); + public virtual ICollection DimResearchDatasets { get; set; } = new List(); public virtual ICollection DimUserChoices { get; set; } = new List(); @@ -111,6 +109,8 @@ public partial class DimReferencedatum public virtual ICollection FactFieldValueDimReferencedataFieldOfSciences { get; set; } = new List(); + public virtual ICollection FactReferencedata { get; set; } = new List(); + public virtual ICollection FactRelations { get; set; } = new List(); public virtual ICollection InverseDimReferencedata { get; set; } = new List(); @@ -120,6 +120,4 @@ public partial class DimReferencedatum public virtual ICollection DimPublications { get; set; } = new List(); public virtual ICollection DimPublicationsNavigation { get; set; } = new List(); - - public virtual ICollection DimResearchDatasets { get; set; } = new List(); } diff --git a/aspnetcore/src/api/Models/Ttv/DimResearchActivity.cs b/aspnetcore/src/api/Models/Ttv/DimResearchActivity.cs index 0230a65f..bed00115 100644 --- a/aspnetcore/src/api/Models/Ttv/DimResearchActivity.cs +++ b/aspnetcore/src/api/Models/Ttv/DimResearchActivity.cs @@ -72,4 +72,6 @@ public partial class DimResearchActivity public virtual ICollection FactContributions { get; set; } = new List(); public virtual ICollection FactFieldValues { get; set; } = new List(); + + public virtual ICollection FactReferencedata { get; set; } = new List(); } diff --git a/aspnetcore/src/api/Models/Ttv/DimResearchDataCatalog.cs b/aspnetcore/src/api/Models/Ttv/DimResearchDataCatalog.cs index 24cf7d22..7b06d16f 100644 --- a/aspnetcore/src/api/Models/Ttv/DimResearchDataCatalog.cs +++ b/aspnetcore/src/api/Models/Ttv/DimResearchDataCatalog.cs @@ -27,6 +27,8 @@ public partial class DimResearchDataCatalog public DateTime? Modified { get; set; } + public virtual ICollection DimDescriptiveItems { get; set; } = new List(); + public virtual ICollection DimPids { get; set; } = new List(); public virtual ICollection DimResearchDatasets { get; set; } = new List(); diff --git a/aspnetcore/src/api/Models/Ttv/DimResearchDataset.cs b/aspnetcore/src/api/Models/Ttv/DimResearchDataset.cs index 9f0bfedb..a183de70 100644 --- a/aspnetcore/src/api/Models/Ttv/DimResearchDataset.cs +++ b/aspnetcore/src/api/Models/Ttv/DimResearchDataset.cs @@ -9,36 +9,14 @@ public partial class DimResearchDataset public int? DimResearchDataCatalogId { get; set; } - public int? DimReferencedataLicense { get; set; } - public int? DimReferencedataAvailability { get; set; } public string LocalIdentifier { get; set; } - public string NameFi { get; set; } - - public string NameSv { get; set; } - - public string NameEn { get; set; } - - public string DescriptionFi { get; set; } - - public string DescriptionSv { get; set; } - - public string DescriptionEn { get; set; } - - public bool? InternationalCollaboration { get; set; } - public DateTime? DatasetCreated { get; set; } public DateTime? DatasetModified { get; set; } - public DateTime? TemporalCoverageStart { get; set; } - - public DateTime? TemporalCoverageEnd { get; set; } - - public string GeographicCoverage { get; set; } - public string SourceId { get; set; } public string SourceDescription { get; set; } @@ -47,13 +25,9 @@ public partial class DimResearchDataset public DateTime? Modified { get; set; } - public string NameUnd { get; set; } - - public string DescriptionUnd { get; set; } - public int DimRegisteredDataSourceId { get; set; } - public string VersionInfo { get; set; } + public int VersionInfo { get; set; } public virtual ICollection BrDatasetDatasetRelationshipDimResearchDatasetId2Navigations { get; set; } = new List(); @@ -65,8 +39,6 @@ public partial class DimResearchDataset public virtual DimReferencedatum DimReferencedataAvailabilityNavigation { get; set; } - public virtual DimReferencedatum DimReferencedataLicenseNavigation { get; set; } - public virtual DimRegisteredDataSource DimRegisteredDataSource { get; set; } public virtual DimResearchDataCatalog DimResearchDataCatalog { get; set; } @@ -79,11 +51,11 @@ public partial class DimResearchDataset public virtual ICollection FactFieldValues { get; set; } = new List(); - public virtual ICollection FactRelationFromResearchDatasets { get; set; } = new List(); + public virtual ICollection FactKeywords { get; set; } = new List(); - public virtual ICollection FactRelationToResearchDatasets { get; set; } = new List(); + public virtual ICollection FactReferencedata { get; set; } = new List(); - public virtual ICollection DimKeywords { get; set; } = new List(); + public virtual ICollection FactRelationFromResearchDatasets { get; set; } = new List(); - public virtual ICollection DimReferencedata { get; set; } = new List(); + public virtual ICollection FactRelationToResearchDatasets { get; set; } = new List(); } diff --git a/aspnetcore/src/api/Models/Ttv/DimResearchProject.cs b/aspnetcore/src/api/Models/Ttv/DimResearchProject.cs index e53b410a..a354b50f 100644 --- a/aspnetcore/src/api/Models/Ttv/DimResearchProject.cs +++ b/aspnetcore/src/api/Models/Ttv/DimResearchProject.cs @@ -40,6 +40,8 @@ public partial class DimResearchProject public virtual DimDate EndDateNavigation { get; set; } + public virtual ICollection FactKeywords { get; set; } = new List(); + public virtual DimOrganization ResponsibleOrganizationNavigation { get; set; } public virtual DimName ResponsiblePersonNavigation { get; set; } diff --git a/aspnetcore/src/api/Models/Ttv/FactKeyword.cs b/aspnetcore/src/api/Models/Ttv/FactKeyword.cs index bd1bd806..5ce02b29 100644 --- a/aspnetcore/src/api/Models/Ttv/FactKeyword.cs +++ b/aspnetcore/src/api/Models/Ttv/FactKeyword.cs @@ -16,4 +16,12 @@ public partial class FactKeyword public DateTime? Created { get; set; } public DateTime? Modified { get; set; } + + public int DimResearchDatasetId { get; set; } + + public virtual DimKeyword DimKeyword { get; set; } + + public virtual DimResearchDataset DimResearchDataset { get; set; } + + public virtual DimResearchProject DimResearchProject { get; set; } } diff --git a/aspnetcore/src/api/Models/Ttv/FactReferencedatum.cs b/aspnetcore/src/api/Models/Ttv/FactReferencedatum.cs new file mode 100644 index 00000000..007f9f11 --- /dev/null +++ b/aspnetcore/src/api/Models/Ttv/FactReferencedatum.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; + +namespace api.Models.Ttv; + +public partial class FactReferencedatum +{ + public int DimReferencedataId { get; set; } + + public int DimResearchDatasetId { get; set; } + + public int DimInfrastructureId { get; set; } + + public int DimPublicationId { get; set; } + + public int DimResearchActivityId { get; set; } + + public int DimFundingDecisionId { get; set; } + + public int DimCallProgrammeId { get; set; } + + public string SourceId { get; set; } + + public string SourceDescription { get; set; } + + public DateTime? Created { get; set; } + + public DateTime? Modified { get; set; } + + public virtual DimCallProgramme DimCallProgramme { get; set; } + + public virtual DimFundingDecision DimFundingDecision { get; set; } + + public virtual DimInfrastructure DimInfrastructure { get; set; } + + public virtual DimPublication DimPublication { get; set; } + + public virtual DimReferencedatum DimReferencedata { get; set; } + + public virtual DimResearchActivity DimResearchActivity { get; set; } + + public virtual DimResearchDataset DimResearchDataset { get; set; } +} diff --git a/aspnetcore/src/api/Models/Ttv/TtvContext.cs b/aspnetcore/src/api/Models/Ttv/TtvContext.cs index 240fdbc7..cf0b9ade 100644 --- a/aspnetcore/src/api/Models/Ttv/TtvContext.cs +++ b/aspnetcore/src/api/Models/Ttv/TtvContext.cs @@ -147,6 +147,8 @@ public TtvContext(DbContextOptions options) public virtual DbSet FactKeywords { get; set; } + public virtual DbSet FactReferencedata { get; set; } + public virtual DbSet FactRelations { get; set; } public virtual DbSet FactUpkeeps { get; set; } @@ -733,6 +735,9 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .HasDefaultValue(-1) .HasColumnName("dim_publication_id"); entity.Property(e => e.DimRegisteredDataSourceId).HasColumnName("dim_registered_data_source_id"); + entity.Property(e => e.DimResearchDataCatalogId) + .HasDefaultValue(-1) + .HasColumnName("dim_research_data_catalog_id"); entity.Property(e => e.DimResearchDatasetId) .HasDefaultValue(-1) .HasColumnName("dim_research_dataset_id"); @@ -767,6 +772,11 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("FKdim_descri977501"); + entity.HasOne(d => d.DimResearchDataCatalog).WithMany(p => p.DimDescriptiveItems) + .HasForeignKey(d => d.DimResearchDataCatalogId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("descriptive_datacatalog"); + entity.HasOne(d => d.DimResearchDataset).WithMany(p => p.DimDescriptiveItems) .HasForeignKey(d => d.DimResearchDatasetId) .OnDelete(DeleteBehavior.ClientSetNull) @@ -1323,6 +1333,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .HasColumnType("datetime") .HasColumnName("created"); entity.Property(e => e.DimIdentifierlessDataId).HasColumnName("dim_identifierless_data_id"); + entity.Property(e => e.DimOrganizationId).HasColumnName("dim_organization_id"); entity.Property(e => e.Modified) .HasColumnType("datetime") .HasColumnName("modified"); @@ -1349,10 +1360,18 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) entity.Property(e => e.ValueSv) .HasMaxLength(4000) .HasColumnName("value_sv"); + entity.Property(e => e.ValueUnd) + .HasMaxLength(4000) + .HasColumnName("value_und"); entity.HasOne(d => d.DimIdentifierlessData).WithMany(p => p.InverseDimIdentifierlessData) .HasForeignKey(d => d.DimIdentifierlessDataId) .HasConstraintName("parent_data"); + + entity.HasOne(d => d.DimOrganization).WithMany(p => p.DimIdentifierlessData) + .HasForeignKey(d => d.DimOrganizationId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("identifierlessIsPartOfOrganization"); }); modelBuilder.Entity(entity => @@ -3118,36 +3137,15 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) entity.Property(e => e.DatasetModified) .HasColumnType("datetime") .HasColumnName("dataset_modified"); - entity.Property(e => e.DescriptionEn).HasColumnName("description_en"); - entity.Property(e => e.DescriptionFi).HasColumnName("description_fi"); - entity.Property(e => e.DescriptionSv).HasColumnName("description_sv"); - entity.Property(e => e.DescriptionUnd).HasColumnName("description_und"); entity.Property(e => e.DimReferencedataAvailability).HasColumnName("dim_referencedata_availability"); - entity.Property(e => e.DimReferencedataLicense).HasColumnName("dim_referencedata_license"); entity.Property(e => e.DimRegisteredDataSourceId).HasColumnName("dim_registered_data_source_id"); entity.Property(e => e.DimResearchDataCatalogId).HasColumnName("dim_research_data_catalog_id"); - entity.Property(e => e.GeographicCoverage) - .HasMaxLength(4000) - .HasColumnName("geographic_coverage"); - entity.Property(e => e.InternationalCollaboration).HasColumnName("international_collaboration"); entity.Property(e => e.LocalIdentifier) .HasMaxLength(255) .HasColumnName("local_identifier"); entity.Property(e => e.Modified) .HasColumnType("datetime") .HasColumnName("modified"); - entity.Property(e => e.NameEn) - .HasMaxLength(4000) - .HasColumnName("name_en"); - entity.Property(e => e.NameFi) - .HasMaxLength(4000) - .HasColumnName("name_fi"); - entity.Property(e => e.NameSv) - .HasMaxLength(4000) - .HasColumnName("name_sv"); - entity.Property(e => e.NameUnd) - .HasMaxLength(4000) - .HasColumnName("name_und"); entity.Property(e => e.SourceDescription) .HasMaxLength(255) .HasColumnName("source_description"); @@ -3155,24 +3153,12 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .IsRequired() .HasMaxLength(255) .HasColumnName("source_id"); - entity.Property(e => e.TemporalCoverageEnd) - .HasColumnType("datetime") - .HasColumnName("temporal_coverage_end"); - entity.Property(e => e.TemporalCoverageStart) - .HasColumnType("datetime") - .HasColumnName("temporal_coverage_start"); - entity.Property(e => e.VersionInfo) - .HasMaxLength(255) - .HasColumnName("version_info"); + entity.Property(e => e.VersionInfo).HasColumnName("version_info"); - entity.HasOne(d => d.DimReferencedataAvailabilityNavigation).WithMany(p => p.DimResearchDatasetDimReferencedataAvailabilityNavigations) + entity.HasOne(d => d.DimReferencedataAvailabilityNavigation).WithMany(p => p.DimResearchDatasets) .HasForeignKey(d => d.DimReferencedataAvailability) .HasConstraintName("Availibiity classes"); - entity.HasOne(d => d.DimReferencedataLicenseNavigation).WithMany(p => p.DimResearchDatasetDimReferencedataLicenseNavigations) - .HasForeignKey(d => d.DimReferencedataLicense) - .HasConstraintName("License"); - entity.HasOne(d => d.DimRegisteredDataSource).WithMany(p => p.DimResearchDatasets) .HasForeignKey(d => d.DimRegisteredDataSourceId) .OnDelete(DeleteBehavior.ClientSetNull) @@ -3181,45 +3167,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) entity.HasOne(d => d.DimResearchDataCatalog).WithMany(p => p.DimResearchDatasets) .HasForeignKey(d => d.DimResearchDataCatalogId) .HasConstraintName("FKdim_resear753411"); - - entity.HasMany(d => d.DimKeywords).WithMany(p => p.DimResearchDatasets) - .UsingEntity>( - "BrResearchDatasetDimKeyword", - r => r.HasOne().WithMany() - .HasForeignKey("DimKeywordId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FKbr_researc961356"), - l => l.HasOne().WithMany() - .HasForeignKey("DimResearchDatasetId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("dataset-keywords"), - j => - { - j.HasKey("DimResearchDatasetId", "DimKeywordId").HasName("PK__br_resea__4D226DF29D73B9C7"); - j.ToTable("br_research_dataset_dim_keyword"); - j.HasIndex(new[] { "DimKeywordId" }, "idx_dim_keyword_id"); - j.IndexerProperty("DimResearchDatasetId").HasColumnName("dim_research_dataset_id"); - j.IndexerProperty("DimKeywordId").HasColumnName("dim_keyword_id"); - }); - - entity.HasMany(d => d.DimReferencedata).WithMany(p => p.DimResearchDatasets) - .UsingEntity>( - "BrLanguageCodesForDataset", - r => r.HasOne().WithMany() - .HasForeignKey("DimReferencedataId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FKbr_languag480770"), - l => l.HasOne().WithMany() - .HasForeignKey("DimResearchDatasetId") - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FKbr_languag34243"), - j => - { - j.HasKey("DimResearchDatasetId", "DimReferencedataId").HasName("PK__br_langu__576647BF72E3964D"); - j.ToTable("br_language_codes_for_datasets"); - j.IndexerProperty("DimResearchDatasetId").HasColumnName("dim_research_dataset_id"); - j.IndexerProperty("DimReferencedataId").HasColumnName("dim_referencedata_id"); - }); }); modelBuilder.Entity(entity => @@ -4288,15 +4235,12 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) entity.ToTable("fact_keywords"); - entity.Property(e => e.DimKeywordId) - .HasDefaultValueSql("('-1')") - .HasColumnName("dim_keyword_id"); - entity.Property(e => e.DimResearchProjectId) - .HasDefaultValueSql("('-1')") - .HasColumnName("dim_research_project_id"); + entity.Property(e => e.DimKeywordId).HasColumnName("dim_keyword_id"); + entity.Property(e => e.DimResearchProjectId).HasColumnName("dim_research_project_id"); entity.Property(e => e.Created) .HasColumnType("datetime") .HasColumnName("created"); + entity.Property(e => e.DimResearchDatasetId).HasColumnName("dim_research_dataset_id"); entity.Property(e => e.Modified) .HasColumnType("datetime") .HasColumnName("modified"); @@ -4308,6 +4252,83 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) .IsRequired() .HasMaxLength(255) .HasColumnName("source_id"); + + entity.HasOne(d => d.DimKeyword).WithMany(p => p.FactKeywords) + .HasForeignKey(d => d.DimKeywordId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("FKfact_keywo738006"); + + entity.HasOne(d => d.DimResearchDataset).WithMany(p => p.FactKeywords) + .HasForeignKey(d => d.DimResearchDatasetId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("dataset-keywords"); + + entity.HasOne(d => d.DimResearchProject).WithMany(p => p.FactKeywords) + .HasForeignKey(d => d.DimResearchProjectId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("FKfact_keywo171431"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => new { e.DimReferencedataId, e.DimResearchDatasetId, e.DimInfrastructureId, e.DimPublicationId, e.DimResearchActivityId, e.DimFundingDecisionId, e.DimCallProgrammeId }).HasName("PK__fact_ref__302C51990AF30AC0"); + + entity.ToTable("fact_referencedata"); + + entity.Property(e => e.DimReferencedataId).HasColumnName("dim_referencedata_id"); + entity.Property(e => e.DimResearchDatasetId).HasColumnName("dim_research_dataset_id"); + entity.Property(e => e.DimInfrastructureId).HasColumnName("dim_infrastructure_id"); + entity.Property(e => e.DimPublicationId).HasColumnName("dim_publication_id"); + entity.Property(e => e.DimResearchActivityId).HasColumnName("dim_research_activity_id"); + entity.Property(e => e.DimFundingDecisionId).HasColumnName("dim_funding_decision_id"); + entity.Property(e => e.DimCallProgrammeId).HasColumnName("dim_call_programme_id"); + entity.Property(e => e.Created) + .HasColumnType("datetime") + .HasColumnName("created"); + entity.Property(e => e.Modified) + .HasColumnType("datetime") + .HasColumnName("modified"); + entity.Property(e => e.SourceDescription) + .HasMaxLength(255) + .HasColumnName("source_description"); + entity.Property(e => e.SourceId) + .HasMaxLength(255) + .HasColumnName("source_id"); + + entity.HasOne(d => d.DimCallProgramme).WithMany(p => p.FactReferencedata) + .HasForeignKey(d => d.DimCallProgrammeId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("call_programme_referencedata"); + + entity.HasOne(d => d.DimFundingDecision).WithMany(p => p.FactReferencedata) + .HasForeignKey(d => d.DimFundingDecisionId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("funding_decision_referencedata"); + + entity.HasOne(d => d.DimInfrastructure).WithMany(p => p.FactReferencedata) + .HasForeignKey(d => d.DimInfrastructureId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("infrastructure_referencedata"); + + entity.HasOne(d => d.DimPublication).WithMany(p => p.FactReferencedata) + .HasForeignKey(d => d.DimPublicationId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("publication_referencedata"); + + entity.HasOne(d => d.DimReferencedata).WithMany(p => p.FactReferencedata) + .HasForeignKey(d => d.DimReferencedataId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("FKfact_refer715553"); + + entity.HasOne(d => d.DimResearchActivity).WithMany(p => p.FactReferencedata) + .HasForeignKey(d => d.DimResearchActivityId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("research_activity_referencedata"); + + entity.HasOne(d => d.DimResearchDataset).WithMany(p => p.FactReferencedata) + .HasForeignKey(d => d.DimResearchDatasetId) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("dataset_referencedata"); }); modelBuilder.Entity(entity => diff --git a/aspnetcore/src/api/Services/BiographyService.cs b/aspnetcore/src/api/Services/BiographyService.cs index 2e1be9f8..c2919371 100644 --- a/aspnetcore/src/api/Services/BiographyService.cs +++ b/aspnetcore/src/api/Services/BiographyService.cs @@ -183,28 +183,31 @@ await _ttvContext.FactFieldValues aittaModel.UserParticipatedDataset = await _ttvContext.FactFieldValues .Where(ffv => ffv.DimUserProfile.OrcidId == orcidId && ffv.DimResearchDataset != null && ffv.DimResearchDatasetId > 0 && ffv.Show == true) .Include(ffv => ffv.DimResearchDataset) - .ThenInclude(rd => rd.DimKeywords) + .ThenInclude(rd => rd.FactKeywords) + .ThenInclude(kw => kw.DimKeyword) + .Include(ffv => ffv.DimResearchDataset) + .ThenInclude(rd => rd.DimDescriptiveItems) .Include(ffv => ffv.DimResearchDataset) .ThenInclude(rd => rd.FactDimReferencedataFieldOfSciences) .ThenInclude(fdrfs => fdrfs.DimReferencedata) .Select(ffv => new AittaResearchDataset { DatasetTitle = LanguageFilter( - ffv.DimResearchDataset.NameEn, - ffv.DimResearchDataset.NameFi, - ffv.DimResearchDataset.NameSv + ffv.DimResearchDataset.DimDescriptiveItems.Where(di => di.DescriptiveItemType == "name" && di.DescriptiveItemLanguage == "en").Select(di => di.DescriptiveItem).FirstOrDefault(), + ffv.DimResearchDataset.DimDescriptiveItems.Where(di => di.DescriptiveItemType == "name" && di.DescriptiveItemLanguage == "fi").Select(di => di.DescriptiveItem).FirstOrDefault(), + ffv.DimResearchDataset.DimDescriptiveItems.Where(di => di.DescriptiveItemType == "name" && di.DescriptiveItemLanguage == "sv").Select(di => di.DescriptiveItem).FirstOrDefault() ), Description = GetFirstNSentences( LanguageFilter( - ffv.DimResearchDataset.DescriptionEn, - ffv.DimResearchDataset.DescriptionFi, - ffv.DimResearchDataset.DescriptionSv + ffv.DimResearchDataset.DimDescriptiveItems.Where(di => di.DescriptiveItemType == "description" && di.DescriptiveItemLanguage == "en").Select(di => di.DescriptiveItem).FirstOrDefault(), + ffv.DimResearchDataset.DimDescriptiveItems.Where(di => di.DescriptiveItemType == "description" && di.DescriptiveItemLanguage == "fi").Select(di => di.DescriptiveItem).FirstOrDefault(), + ffv.DimResearchDataset.DimDescriptiveItems.Where(di => di.DescriptiveItemType == "description" && di.DescriptiveItemLanguage == "sv").Select(di => di.DescriptiveItem).FirstOrDefault() ), 1 ), - DatasetCreationDate = ffv.DimResearchDataset.DatasetCreated != null ? ffv.DimResearchDataset.DatasetCreated : null, - Theme = ffv.DimResearchDataset.DimKeywords.Count > 0 ? ffv.DimResearchDataset.DimKeywords.Where(kw => kw.Scheme == "Theme").Select(kw => kw.Keyword).ToList() : null, - Keywords = ffv.DimResearchDataset.DimKeywords.Count > 0 ? ffv.DimResearchDataset.DimKeywords.Where(kw => kw.Scheme == "Avainsana").Select(kw => kw.Keyword).ToList() : null, + DatasetCreationDate = ffv.DimResearchDataset.DatasetCreated != null ? ffv.DimResearchDataset.DatasetCreated : null, + Theme = ffv.DimResearchDataset.FactKeywords.Count > 0 ? ffv.DimResearchDataset.FactKeywords.Where(fk => fk.DimKeyword.Scheme == "Theme").Select(fk => fk.DimKeyword.Keyword).ToList() : null, + Keywords = ffv.DimResearchDataset.FactKeywords.Count > 0 ? ffv.DimResearchDataset.FactKeywords.Where(fk => fk.DimKeyword.Scheme == "Avainsana").Select(fk => fk.DimKeyword.Keyword).ToList() : null, FieldsOfScience = ffv.DimResearchDataset.FactDimReferencedataFieldOfSciences.Select(fdrfs => fdrfs.DimReferencedata.NameEn).ToList() }) .AsNoTracking().ToListAsync(); diff --git a/aspnetcore/src/api/Services/ITtvSqlService.cs b/aspnetcore/src/api/Services/ITtvSqlService.cs index 838a9112..14369fa3 100644 --- a/aspnetcore/src/api/Services/ITtvSqlService.cs +++ b/aspnetcore/src/api/Services/ITtvSqlService.cs @@ -16,7 +16,6 @@ public interface ITtvSqlService string GetSqlQuery_Delete_DimEvents(List dimEventIds); string GetSqlQuery_Delete_DimFieldDisplaySettings(int userprofileId); string GetSqlQuery_Delete_DimFieldsOfScience(List dimFieldOfScienceIds); - string GetSqlQuery_Delete_DimFundingDecisions(List dimFundingDecisionIds); string GetSqlQuery_Delete_DimIdentifierlessData_Children(List dimIdentifierlessDataIds); string GetSqlQuery_Delete_DimIdentifierlessData_Parent(List dimIdentifierlessDataIds); string GetSqlQuery_Delete_DimKeyword(List dimKeywordIds); @@ -28,7 +27,6 @@ public interface ITtvSqlService string GetSqlQuery_Delete_DimPids(List dimPidIds); string GetSqlQuery_Delete_DimResearchActivities(List dimResearchActivityIds); string GetSqlQuery_Delete_DimResearchCommunities(List dimResearchCommunityIds); - string GetSqlQuery_Delete_DimResearchDatasets(List dimResearchDatasetIds); string GetSqlQuery_Delete_DimResearchDescriptions(List dimResearcherDescriptionIds); string GetSqlQuery_Delete_DimResearcherToResearchCommunities(List dimResearcherToResearchCommunityIds); string GetSqlQuery_Delete_DimTelephoneNumbers(List dimTelephoneNumberIds); diff --git a/aspnetcore/src/api/Services/OrganizationHandlerService.cs b/aspnetcore/src/api/Services/OrganizationHandlerService.cs index 411dd1da..325f484b 100644 --- a/aspnetcore/src/api/Services/OrganizationHandlerService.cs +++ b/aspnetcore/src/api/Services/OrganizationHandlerService.cs @@ -123,7 +123,8 @@ public DimIdentifierlessDatum CreateIdentifierlessData_OrganizationName(string n SourceDescription = Constants.SourceDescriptions.ORCID, Created = currentDateTime, Modified = currentDateTime, - UnlinkedIdentifier = (string.IsNullOrWhiteSpace(unlinkedIdentifier) ? null : unlinkedIdentifier) + UnlinkedIdentifier = (string.IsNullOrWhiteSpace(unlinkedIdentifier) ? null : unlinkedIdentifier), + DimOrganizationId = -1 }; } @@ -144,7 +145,8 @@ public DimIdentifierlessDatum CreateIdentifierlessData_OrganizationUnit(DimIdent SourceDescription = Constants.SourceDescriptions.ORCID, Created = currentDateTime, Modified = currentDateTime, - UnlinkedIdentifier = null + UnlinkedIdentifier = null, + DimOrganizationId = -1 }; } diff --git a/aspnetcore/src/api/Services/TtvSqlService.cs b/aspnetcore/src/api/Services/TtvSqlService.cs index ce0ac387..58d048ee 100644 --- a/aspnetcore/src/api/Services/TtvSqlService.cs +++ b/aspnetcore/src/api/Services/TtvSqlService.cs @@ -404,12 +404,12 @@ public string GetSqlQuery_ProfileData(int userprofileId, bool forElasticsearch = dim_profile_only_funding_decision_web_link.url AS 'DimProfileOnlyFundingDecision_DimWebLink_Url', dim_research_dataset.local_identifier AS 'DimResearchDataset_LocalIdentifier', - dim_research_dataset.name_fi AS 'DimResearchDataset_NameFi', - dim_research_dataset.name_en AS 'DimResearchDataset_NameEn', - dim_research_dataset.name_sv AS 'DimResearchDataset_NameSv', - dim_research_dataset.description_fi AS 'DimResearchDataset_DescriptionFi', - dim_research_dataset.description_en AS 'DimResearchDataset_DescriptionEn', - dim_research_dataset.description_sv AS 'DimResearchDataset_DescriptionSv', + dim_research_dataset_descriptive_item_name_fi.descriptive_item AS 'DimResearchDataset_NameFi', + dim_research_dataset_descriptive_item_name_en.descriptive_item AS 'DimResearchDataset_NameEn', + dim_research_dataset_descriptive_item_name_sv.descriptive_item AS 'DimResearchDataset_NameSv', + dim_research_dataset_descriptive_item_description_fi.descriptive_item AS 'DimResearchDataset_DescriptionFi', + dim_research_dataset_descriptive_item_description_en.descriptive_item AS 'DimResearchDataset_DescriptionEn', + dim_research_dataset_descriptive_item_description_sv.descriptive_item AS 'DimResearchDataset_DescriptionSv', dim_research_dataset.dataset_created AS 'DimResearchDataset_DatasetCreated', dim_research_dataset_referencedata_availability.code_value AS 'DimResearchDataset_AccessType', @@ -511,6 +511,12 @@ LEFT JOIN dim_referencedata AS research_activity_fact_contribution_researcher_na LEFT JOIN dim_web_link AS dim_profile_only_funding_decision_web_link ON dim_profile_only_funding_decision_web_link.dim_profile_only_funding_decision_id=dpofd.id AND dim_profile_only_funding_decision_web_link.dim_profile_only_funding_decision_id!=-1 JOIN dim_research_dataset ON ffv.dim_research_dataset_id=dim_research_dataset.id + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_fi ON dim_research_dataset_descriptive_item_name_fi.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_fi.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_fi.descriptive_item_language='fi' AND dim_research_dataset_descriptive_item_name_fi.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_en ON dim_research_dataset_descriptive_item_name_en.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_en.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_en.descriptive_item_language='en' AND dim_research_dataset_descriptive_item_name_en.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_name_sv ON dim_research_dataset_descriptive_item_name_sv.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_name_sv.descriptive_item_type='name' AND dim_research_dataset_descriptive_item_name_sv.descriptive_item_language='sv' AND dim_research_dataset_descriptive_item_name_sv.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_fi ON dim_research_dataset_descriptive_item_description_fi.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_fi.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_fi.descriptive_item_language='fi' AND dim_research_dataset_descriptive_item_description_fi.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_en ON dim_research_dataset_descriptive_item_description_en.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_en.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_en.descriptive_item_language='en' AND dim_research_dataset_descriptive_item_description_en.dim_research_dataset_id!=-1 + LEFT JOIN dim_descriptive_item AS dim_research_dataset_descriptive_item_description_sv ON dim_research_dataset_descriptive_item_description_sv.dim_research_dataset_id=dim_research_dataset.id AND dim_research_dataset_descriptive_item_description_sv.descriptive_item_type='description' AND dim_research_dataset_descriptive_item_description_sv.descriptive_item_language='sv' AND dim_research_dataset_descriptive_item_description_sv.dim_research_dataset_id!=-1 LEFT JOIN dim_referencedata AS dim_research_dataset_referencedata_availability ON dim_research_dataset.dim_referencedata_availability=dim_research_dataset_referencedata_availability.id AND dim_research_dataset.dim_referencedata_availability!=-1 JOIN dim_profile_only_dataset ON ffv.dim_profile_only_dataset_id=dim_profile_only_dataset.id @@ -603,12 +609,6 @@ public string GetSqlQuery_Delete_DimFieldsOfScience(List dimFieldOfScienceI return $"DELETE FROM dim_field_of_science WHERE id IN ({ConvertListOfIntsToCommaSeparatedString(dimFieldOfScienceIds)})"; } - // Return SQL DELETE statement for dim_funding_decision - public string GetSqlQuery_Delete_DimFundingDecisions(List dimFundingDecisionIds) - { - return $"DELETE FROM dim_funding_decision WHERE id IN ({ConvertListOfIntsToCommaSeparatedString(dimFundingDecisionIds)})"; - } - // Return SQL DELETE statement for dim_keyword public string GetSqlQuery_Delete_DimKeyword(List dimKeywordIds) { @@ -663,12 +663,6 @@ public string GetSqlQuery_Delete_DimResearchCommunities(List dimResearchCom return $"DELETE FROM dim_research_community WHERE id IN ({ConvertListOfIntsToCommaSeparatedString(dimResearchCommunityIds)})"; } - // Return SQL DELETE statement for dim_research_dataset - public string GetSqlQuery_Delete_DimResearchDatasets(List dimResearchDatasetIds) - { - return $"DELETE FROM dim_research_dataset WHERE id IN ({ConvertListOfIntsToCommaSeparatedString(dimResearchDatasetIds)})"; - } - // Return SQL DELETE statement for dim_researcher_description public string GetSqlQuery_Delete_DimResearchDescriptions(List dimResearcherDescriptionIds) { diff --git a/aspnetcore/src/api/Services/UserProfileService.cs b/aspnetcore/src/api/Services/UserProfileService.cs index bf762f9d..c7f3d95b 100644 --- a/aspnetcore/src/api/Services/UserProfileService.cs +++ b/aspnetcore/src/api/Services/UserProfileService.cs @@ -2482,7 +2482,6 @@ await _ttvContext.FactFieldValues.Where(ffv => ffv.DimUserProfileId == userprofi List dimEmailAddrressIds = new(); List dimEventIds = new(); List dimFieldOfScienceIds = new(); - List dimFundingDecisionIds = new(); List dimKeywordIds = new(); List dimNameIds = new(); List dimProfileOnlyDatasetIds = new(); @@ -2492,7 +2491,6 @@ await _ttvContext.FactFieldValues.Where(ffv => ffv.DimUserProfileId == userprofi List dimPidIds = new(); List dimResearchActivityIds = new(); List dimResearchCommunityIds = new(); - List dimResearchDatasetIds = new(); List dimResearcherDescriptionIds = new(); List dimResearcherToResearchCommunityIds = new(); List dimTelephoneNumberIds = new(); @@ -2522,7 +2520,6 @@ await ExecuteSqlQueryWithProfiling( if (factFieldValue.DimEmailAddrressId != -1) dimEmailAddrressIds.Add(factFieldValue.DimEmailAddrressId); if (factFieldValue.DimEventId != -1) dimEventIds.Add(factFieldValue.DimEventId); if (factFieldValue.DimReferencedataFieldOfScienceId != -1) dimFieldOfScienceIds.Add(factFieldValue.DimReferencedataFieldOfScienceId); - if (factFieldValue.DimFundingDecisionId != -1) dimFundingDecisionIds.Add(factFieldValue.DimFundingDecisionId); if (factFieldValue.DimKeywordId != -1) dimKeywordIds.Add(factFieldValue.DimKeywordId); if (factFieldValue.DimNameId != -1) dimNameIds.Add(factFieldValue.DimNameId); if (factFieldValue.DimIdentifierlessDataId != -1) dimIdentifierlessDataIds.Add(factFieldValue.DimIdentifierlessDataId); @@ -2558,7 +2555,6 @@ await ExecuteSqlQueryWithProfiling( if (factFieldValue.DimPidIdOrcidPutCode != -1) dimPidIds.Add(factFieldValue.DimPidIdOrcidPutCode); if (factFieldValue.DimResearchActivityId != -1) dimResearchActivityIds.Add(factFieldValue.DimResearchActivityId); if (factFieldValue.DimResearchCommunityId != -1) dimResearchCommunityIds.Add(factFieldValue.DimResearchCommunityId); - if (factFieldValue.DimResearchDatasetId != -1) dimResearchDatasetIds.Add(factFieldValue.DimResearchDatasetId); if (factFieldValue.DimResearcherDescriptionId != -1) dimResearcherDescriptionIds.Add(factFieldValue.DimResearcherDescriptionId); if (factFieldValue.DimResearcherToResearchCommunityId != -1) dimResearcherToResearchCommunityIds.Add(factFieldValue.DimResearcherToResearchCommunityId); if (factFieldValue.DimTelephoneNumberId != -1) dimTelephoneNumberIds.Add(factFieldValue.DimTelephoneNumberId); @@ -2615,13 +2611,6 @@ await ExecuteSqlQueryWithProfiling( sql: _ttvSqlService.GetSqlQuery_Delete_DimFieldsOfScience(dimFieldOfScienceIds) ); } - // Delete funding decisions - if (dimFundingDecisionIds.Count > 0) - { - await ExecuteSqlQueryWithProfiling( - sql: _ttvSqlService.GetSqlQuery_Delete_DimFundingDecisions(dimFundingDecisionIds) - ); - } // Delete Keywords if (dimKeywordIds.Count > 0) { @@ -2697,13 +2686,6 @@ await ExecuteSqlQueryWithProfiling( sql: _ttvSqlService.GetSqlQuery_Delete_DimResearchCommunities(dimResearchCommunityIds) ); } - // Delete research datasets - if (dimResearchDatasetIds.Count > 0) - { - await ExecuteSqlQueryWithProfiling( - sql: _ttvSqlService.GetSqlQuery_Delete_DimResearchDatasets(dimResearchDatasetIds) - ); - } // Delete researcher descriptions if (dimResearcherDescriptionIds.Count > 0) {