From f5df4f6386136305e55cb24d62cf6ba3d01096ad Mon Sep 17 00:00:00 2001 From: Rup-Narayan-Rajbanshi Date: Thu, 3 Aug 2023 16:52:04 +0545 Subject: [PATCH] Add id for all nested objects for update mutation. --- apps/assessment_registry/enums.py | 4 +- apps/assessment_registry/factories.py | 12 ++--- .../migrations/0017_auto_20230803_1253.py | 44 +++++++++++++++++ ..._scoreanalyticaldensity_figure_provided.py | 19 ++++++++ apps/assessment_registry/models.py | 2 +- apps/assessment_registry/schema.py | 6 +-- apps/assessment_registry/serializers.py | 46 ++++++++++++------ .../tests/test_mutation.py | 47 +++++++++---------- .../assessment_registry/tests/test_schemas.py | 34 +++++++------- schema.graphql | 27 +++++++---- 10 files changed, 164 insertions(+), 77 deletions(-) create mode 100644 apps/assessment_registry/migrations/0017_auto_20230803_1253.py create mode 100644 apps/assessment_registry/migrations/0018_scoreanalyticaldensity_figure_provided.py diff --git a/apps/assessment_registry/enums.py b/apps/assessment_registry/enums.py index 34d83241f7..2b479a8448 100644 --- a/apps/assessment_registry/enums.py +++ b/apps/assessment_registry/enums.py @@ -13,7 +13,7 @@ ScoreRating, ScoreAnalyticalDensity, Question, - SummaryFocusSubSectorIssue, + SummarySubDimmensionIssue, ) AssessmentRegistryCrisisTypeEnum = convert_enum_to_graphene_enum( @@ -133,7 +133,7 @@ (ScoreAnalyticalDensity.sector, AssessmentRegistrySectorTypeEnum), (ScoreAnalyticalDensity.analysis_level_covered, AssessmentRegistryAnalysisLevelTypeEnum), (ScoreAnalyticalDensity.figure_provided, AssessmentRegistryAnalysisFigureTypeEnum), - (SummaryFocusSubSectorIssue.focus, AssessmentRegistryFocusTypeEnum), + (SummarySubDimmensionIssue.focus, AssessmentRegistryFocusTypeEnum), (SummaryIssue.sub_pillar, AssessmentRegistrySummarySubPillarTypeEnum), (SummaryIssue.sub_dimmension, AssessmentRegistrySummarySubDimmensionTypeEnum), ) diff --git a/apps/assessment_registry/factories.py b/apps/assessment_registry/factories.py index 6ca2a7e03e..e71619f244 100644 --- a/apps/assessment_registry/factories.py +++ b/apps/assessment_registry/factories.py @@ -14,8 +14,8 @@ SummaryIssue, Summary, SummaryFocus, - SummarySubSectorIssue, - SummaryFocusSubSectorIssue, + SummarySubPillarIssue, + SummarySubDimmensionIssue, ) @@ -29,9 +29,9 @@ class Meta: model = Summary -class SummarySubSectorIssueFactory(DjangoModelFactory): +class SummarySubPillarIssueFactory(DjangoModelFactory): class Meta: - model = SummarySubSectorIssue + model = SummarySubPillarIssue class SummaryFocusFactory(DjangoModelFactory): @@ -39,9 +39,9 @@ class Meta: model = SummaryFocus -class SummaryFocusSubSectorIssueFactory(DjangoModelFactory): +class SummarySubDimmensionIssueFactory(DjangoModelFactory): class Meta: - model = SummaryFocusSubSectorIssue + model = SummarySubDimmensionIssue class QuestionFactory(DjangoModelFactory): diff --git a/apps/assessment_registry/migrations/0017_auto_20230803_1253.py b/apps/assessment_registry/migrations/0017_auto_20230803_1253.py new file mode 100644 index 0000000000..5fe393d45f --- /dev/null +++ b/apps/assessment_registry/migrations/0017_auto_20230803_1253.py @@ -0,0 +1,44 @@ +# Generated by Django 3.2.17 on 2023-08-03 12:53 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('assessment_registry', '0016_alter_assessmentregistry_protection_info_mgmts'), + ] + + operations = [ + migrations.CreateModel( + name='SummarySubDimmensionIssue', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('modified_at', models.DateTimeField(auto_now=True)), + ('client_id', models.CharField(blank=True, default=None, max_length=128, null=True, unique=True)), + ('focus', models.IntegerField(choices=[(0, 'Food Security'), (1, 'Heath'), (2, 'Shelter'), (3, 'Wash'), (4, 'Protection'), (5, 'Nutrition'), (6, 'Livelihood'), (7, 'Education'), (8, 'Logistics'), (9, 'Inter/Cross Sector')])), + ('text', models.TextField(blank=True)), + ('order', models.IntegerField(blank=True, null=True)), + ('lead_preview_text_ref', models.JSONField(blank=True, default=None, null=True)), + ('assessment_registry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='summary_focus_subsector_issue_ary', to='assessment_registry.assessmentregistry')), + ('created_by', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='summarysubdimmensionissue_created', to=settings.AUTH_USER_MODEL)), + ('modified_by', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='summarysubdimmensionissue_modified', to=settings.AUTH_USER_MODEL)), + ('summary_issue', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='summary_focus_subsector_issue', to='assessment_registry.summaryissue')), + ], + options={ + 'ordering': ['-created_at'], + 'abstract': False, + }, + ), + migrations.RemoveField( + model_name='scoreanalyticaldensity', + name='figure_provided', + ), + migrations.DeleteModel( + name='SummaryFocusSubSectorIssue', + ), + ] diff --git a/apps/assessment_registry/migrations/0018_scoreanalyticaldensity_figure_provided.py b/apps/assessment_registry/migrations/0018_scoreanalyticaldensity_figure_provided.py new file mode 100644 index 0000000000..52cb53c96e --- /dev/null +++ b/apps/assessment_registry/migrations/0018_scoreanalyticaldensity_figure_provided.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.17 on 2023-08-03 12:58 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('assessment_registry', '0017_auto_20230803_1253'), + ] + + operations = [ + migrations.AddField( + model_name='scoreanalyticaldensity', + name='figure_provided', + field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(choices=[(0, 'Total population in the assessed areas'), (1, 'Total population exposed to the shock/event'), (2, 'Total populaiton affected/living in the affected area'), (3, 'Total population facing humanitarian access constraints'), (4, 'Total populaiton in need'), (5, 'Total population in critical need'), (6, 'Total population in severe need'), (7, 'Total population in moderate need'), (9, 'Total population at risk/vulnerable'), (10, 'Total population reached by assistance')]), default=list, size=None), + ), + ] diff --git a/apps/assessment_registry/models.py b/apps/assessment_registry/models.py index 29dc6b893a..7b00f8def8 100644 --- a/apps/assessment_registry/models.py +++ b/apps/assessment_registry/models.py @@ -623,7 +623,7 @@ class SubDimmension(models.IntegerChoices): full_label = models.CharField(max_length=220, blank=True) -class SummaryFocusSubSectorIssue(UserResource): +class SummarySubDimmensionIssue(UserResource): assessment_registry = models.ForeignKey( AssessmentRegistry, on_delete=models.CASCADE, diff --git a/apps/assessment_registry/schema.py b/apps/assessment_registry/schema.py index 2f13b9ef19..f79addb6e7 100644 --- a/apps/assessment_registry/schema.py +++ b/apps/assessment_registry/schema.py @@ -20,7 +20,7 @@ SummarySubPillarIssue, SummaryIssue, SummaryFocus, - SummaryFocusSubSectorIssue, + SummarySubDimmensionIssue, ScoreRating, ScoreAnalyticalDensity, Question, @@ -324,7 +324,7 @@ class SummaryFocusSubDimmensionIssueType(DjangoObjectType, UserResourceMixin): focus_display = graphene.String(required=False) class Meta: - model = SummaryFocusSubSectorIssue + model = SummarySubDimmensionIssue class AssessmentRegistryType( @@ -419,7 +419,7 @@ def resolve_summary_dimmension_meta(root, info, **kwargs): @staticmethod def resolve_summary_sub_dimmension_issue(root, info, **kwargs): - return SummaryFocusSubSectorIssue.objects.filter(assessment_registry=root) + return SummarySubDimmensionIssue.objects.filter(assessment_registry=root) class AssessmentRegistryListType(CustomDjangoListObjectType): diff --git a/apps/assessment_registry/serializers.py b/apps/assessment_registry/serializers.py index 8c89131a01..e770671ce6 100644 --- a/apps/assessment_registry/serializers.py +++ b/apps/assessment_registry/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from user_resource.serializers import UserResourceSerializer -from deep.serializers import ProjectPropertySerializerMixin, TempClientIdMixin +from deep.serializers import ProjectPropertySerializerMixin, TempClientIdMixin, IntegerIDField from .models import ( AssessmentRegistry, @@ -11,7 +11,7 @@ Summary, SummarySubPillarIssue, SummaryFocus, - SummaryFocusSubSectorIssue, + SummarySubDimmensionIssue, ScoreRating, ScoreAnalyticalDensity, Answer, @@ -19,18 +19,22 @@ class MethodologyAttributeSerializer(TempClientIdMixin, serializers.ModelSerializer): + id = IntegerIDField(required=False) + class Meta: model = MethodologyAttribute fields = ( - "client_id", "data_collection_technique", "sampling_approach", "sampling_size", + "id", "client_id", "data_collection_technique", "sampling_approach", "sampling_size", "proximity", "unit_of_analysis", "unit_of_reporting", ) class AdditionalDocumentSerializer(TempClientIdMixin, UserResourceSerializer): + id = IntegerIDField(required=False) + class Meta: model = AdditionalDocument - fields = ("client_id", "document_type", "file", "external_link",) + fields = ("id", "client_id", "document_type", "file", "external_link",) class IssueSerializer(UserResourceSerializer): @@ -55,25 +59,31 @@ def validate(self, data): class SummarySubPillarIssueSerializer(UserResourceSerializer, TempClientIdMixin): + id = IntegerIDField(required=False) + class Meta: model = SummarySubPillarIssue - fields = ("summary_issue", "text", "order", "lead_preview_text_ref") + fields = ("id", "summary_issue", "text", "order", "lead_preview_text_ref") class SummaryMetaSerializer(UserResourceSerializer): + id = IntegerIDField(required=False) + class Meta: model = Summary fields = ( - "total_people_assessed", "total_dead", "total_injured", "total_missing", + "id", "total_people_assessed", "total_dead", "total_injured", "total_missing", "total_people_facing_hum_access_cons", "percentage_of_people_facing_hum_access_cons", ) class SummaryFocusMetaSerializer(UserResourceSerializer): + id = IntegerIDField(required=False) + class Meta: model = SummaryFocus fields = ( - "percentage_of_people_affected", "total_people_affected", "percentage_of_moderate", + "id", "percentage_of_people_affected", "total_people_affected", "percentage_of_moderate", "percentage_of_severe", "percentage_of_critical", "percentage_in_need", "total_moderate", "total_severe", "total_critical", "total_in_need", "total_pop_assessed", "total_not_affected", "total_affected", "total_people_in_need", "total_people_moderately_in_need", @@ -81,28 +91,36 @@ class Meta: ) -class SummaryFocusIssueSerializer(UserResourceSerializer): +class SummarySubDimmensionSerializer(UserResourceSerializer): + id = IntegerIDField(required=False) + class Meta: - model = SummaryFocusSubSectorIssue - fields = ("summary_issue", "focus", "text", "order", "lead_preview_text_ref",) + model = SummarySubDimmensionIssue + fields = ("id", "summary_issue", "focus", "text", "order", "lead_preview_text_ref",) class ScoreRatingSerializer(UserResourceSerializer, TempClientIdMixin): + id = IntegerIDField(required=False) + class Meta: model = ScoreRating - fields = ("client_id", "score_type", "rating", "reason",) + fields = ("id", "client_id", "score_type", "rating", "reason",) class ScoreAnalyticalDensitySerializer(UserResourceSerializer): + id = IntegerIDField(required=False) + class Meta: model = ScoreAnalyticalDensity - fields = ("client_id", "sector", "analysis_level_covered", "figure_provided",) + fields = ("id", "client_id", "sector", "analysis_level_covered", "figure_provided",) class CNAAnswerSerializer(TempClientIdMixin, UserResourceSerializer): + id = IntegerIDField(required=False) + class Meta: model = Answer - fields = ('client_id', 'question', 'answer') + fields = ("id", 'client_id', 'question', 'answer') class AssessmentRegistrySerializer(UserResourceSerializer, ProjectPropertySerializerMixin): @@ -131,7 +149,7 @@ class AssessmentRegistrySerializer(UserResourceSerializer, ProjectPropertySerial summary_dimmension_meta = SummaryFocusMetaSerializer( source='summary_focus', many=True, required=False ) - summary_sub_dimmension_issue = SummaryFocusIssueSerializer( + summary_sub_dimmension_issue = SummarySubDimmensionSerializer( source="summary_focus_subsector_issue_ary", many=True, required=False ) diff --git a/apps/assessment_registry/tests/test_mutation.py b/apps/assessment_registry/tests/test_mutation.py index bb3e26c9ee..c12699ed5b 100644 --- a/apps/assessment_registry/tests/test_mutation.py +++ b/apps/assessment_registry/tests/test_mutation.py @@ -1,7 +1,7 @@ from utils.graphene.tests import GraphQLTestCase from organization.factories import OrganizationFactory -from geo.factories import RegionFactory +from geo.factories import GeoAreaFactory, AdminLevelFactory, RegionFactory from gallery.factories import FileFactory from project.factories import ProjectFactory from user.factories import UserFactory @@ -29,7 +29,6 @@ class TestAssessmentRegistryMutation(GraphQLTestCase): result { id affectedGroups - affectedGroupsDisplay bgCrisisStartDate confidentiality confidentialityDisplay @@ -97,18 +96,18 @@ class TestAssessmentRegistryMutation(GraphQLTestCase): subSectorDisplay } } - summaryFocusMeta { + summaryDimmensionMeta { id percentageInNeed } - summaryFocusSubsectorIssue { + summarySubDimmensionIssue { id } - summaryMeta { + summaryPillarMeta { id totalPeopleAssessed } - summarySubsectorIssue { + summarySubPillarIssue { id } } @@ -124,8 +123,10 @@ def setUp(self): self.lead1 = LeadFactory.create(project=self.project1) self.organization1 = OrganizationFactory.create() self.organization2 = OrganizationFactory.create() - self.region1 = RegionFactory.create() - self.region2 = RegionFactory.create() + self.region = RegionFactory.create() + self.admin_level1 = AdminLevelFactory.create(region=self.region) + self.geo_area1 = GeoAreaFactory.create(admin_level=self.admin_level1) + self.geo_area2 = GeoAreaFactory.create(admin_level=self.admin_level1) self.question1 = QuestionFactory.create( sector=Question.QuestionSector.RELEVANCE.value, sub_sector=Question.QuestionSubSector.RELEVANCE.value, @@ -173,7 +174,7 @@ def _query_check(minput, **kwargs): internationalPartners=[self.organization1.id, self.organization2.id], lead=self.lead1.id, leadOrganizations=[self.organization1.id, self.organization2.id], - locations=[self.region1.id, self.region2.id], + locations=[self.geo_area1.id, self.geo_area2.id], nationalPartners=[self.organization1.id, self.organization2.id], dataCollectionEndDate="2023-01-01", dataCollectionStartDate="2023-01-01", @@ -187,9 +188,9 @@ def _query_check(minput, **kwargs): self.genum(AssessmentRegistry.Language.ENGLISH), self.genum(AssessmentRegistry.Language.SPANISH) ], - bgCountries=[self.region1.id, self.region2.id], + bgCountries=[self.region.id], donors=[self.organization1.id, self.organization2.id], - affectedGroups=self.genum(AssessmentRegistry.AffectedGroupType.ALL_AFFECTED), + affectedGroups=[self.genum(AssessmentRegistry.AffectedGroupType.ALL_AFFECTED)], methodologyAttributes=[ dict( dataCollectionTechnique=self.genum(MethodologyAttribute.CollectionTechniqueType.SECONDARY_DATA_REVIEW), @@ -202,7 +203,7 @@ def _query_check(minput, **kwargs): ], additionalDocuments=[ dict( - documentType=self.genum(AdditionalDocument.DocumentType.EXECUTIVE_SUMMARY), + documentType=self.genum(AdditionalDocument.DocumentType.ASSESSMENT_DATABASE), externalLink="", file=str(self.file.id) ), @@ -210,21 +211,19 @@ def _query_check(minput, **kwargs): scoreAnalyticalDensity=[ dict( sector=self.genum(AssessmentRegistry.SectorType.FOOD_SECURITY), - value=10 ), dict( sector=self.genum(AssessmentRegistry.SectorType.SHELTER), - value=10 ) ], scoreRatings=[ dict( - scoreType=self.genum(ScoreRating.ScoreType.ASSUMPTIONS), + scoreType=self.genum(ScoreRating.ScoreCriteria.ASSUMPTIONS), rating=self.genum(ScoreRating.RatingType.VERY_POOR), reason="test" ), dict( - scoreType=self.genum(ScoreRating.ScoreType.RELEVANCE), + scoreType=self.genum(ScoreRating.ScoreCriteria.RELEVANCE), rating=self.genum(ScoreRating.RatingType.VERY_POOR), reason="test" ) @@ -235,22 +234,22 @@ def _query_check(minput, **kwargs): question=self.question1.id, ) ], - summaryMeta=[ + summaryPillarMeta=[ dict( totalPeopleAssessed=1000 ) ], - summarySubsectorIssue=[ + summarySubPillarIssue=[ dict( summaryIssue=self.summary_issue1.id ) ], - summaryFocusMeta=[ + summaryDimmensionMeta=[ dict( percentageInNeed=10 ) ], - summaryFocusIssue=[ + summarySubDimmensionIssue=[ dict( summaryIssue=self.summary_issue2.id, focus=self.genum(AssessmentRegistry.FocusType.CONTEXT), @@ -264,7 +263,7 @@ def _query_check(minput, **kwargs): self.assertIsNotNone(data['methodologyAttributes']) self.assertIsNotNone(data['additionalDocuments']) self.assertIsNotNone(data['cna']) - self.assertIsNotNone(data['summaryMeta']) - self.assertIsNotNone(data['summaryFocusMeta']) - self.assertIsNotNone(data['summarySubsectorIssue']) - self.assertIsNotNone(data['summaryFocusSubsectorIssue']) + self.assertIsNotNone(data['summaryPillarMeta']) + self.assertIsNotNone(data['summaryDimmensionMeta']) + self.assertIsNotNone(data['summarySubPillarIssue']) + self.assertIsNotNone(data['summarySubDimmensionIssue']) diff --git a/apps/assessment_registry/tests/test_schemas.py b/apps/assessment_registry/tests/test_schemas.py index 2a62d964c1..9e3cd3db01 100644 --- a/apps/assessment_registry/tests/test_schemas.py +++ b/apps/assessment_registry/tests/test_schemas.py @@ -15,10 +15,10 @@ ScoreAnalyticalDensityFactory, AnswerFactory, SummaryMetaFactory, - SummarySubSectorIssueFactory, + SummarySubPillarIssueFactory, SummaryIssueFactory, SummaryFocusFactory, - SummaryFocusSubSectorIssueFactory, + SummarySubDimmensionIssueFactory, ) from lead.models import Lead from project.models import Project @@ -104,16 +104,16 @@ def test_assessment_registry_query(self): } } - summaryFocusMeta { + summaryDimmensionMeta { id } - summaryFocusSubsectorIssue { + summarySubDimmensionIssue { id } - summaryMeta { + summaryPillarMeta { id } - summarySubsectorIssue { + summarySubPillarIssue { id } } @@ -149,35 +149,33 @@ def test_assessment_registry_query(self): # Add some additional Document AdditionalDocumentFactory.create( assessment_registry=assessment_registry, - document_type=AdditionalDocument.DocumentType.EXECUTIVE_SUMMARY, + document_type=AdditionalDocument.DocumentType.ASSESSMENT_DATABASE, file=FileFactory() ) # Add Score Ratings ScoreRatingFactory.create( assessment_registry=assessment_registry, - score_type=ScoreRating.ScoreType.RELEVANCE, + score_type=ScoreRating.ScoreCriteria.RELEVANCE, rating=ScoreRating.RatingType.GOOD ) ScoreRatingFactory.create( assessment_registry=assessment_registry, - score_type=ScoreRating.ScoreType.TIMELINESS, + score_type=ScoreRating.ScoreCriteria.TIMELINESS, rating=ScoreRating.RatingType.GOOD ) ScoreRatingFactory.create( assessment_registry=assessment_registry, - score_type=ScoreRating.ScoreType.GRANULARITY, + score_type=ScoreRating.ScoreCriteria.GRANULARITY, rating=ScoreRating.RatingType.GOOD ) # Add Score Analytical Density ScoreAnalyticalDensityFactory.create( assessment_registry=assessment_registry, sector=AssessmentRegistry.SectorType.FOOD_SECURITY, - value=1 ) ScoreAnalyticalDensityFactory.create( assessment_registry=assessment_registry, sector=AssessmentRegistry.SectorType.SHELTER, - value=5 ) # Add Answer to the question AnswerFactory.create( @@ -193,14 +191,14 @@ def test_assessment_registry_query(self): SummaryMetaFactory.create( assessment_registry=assessment_registry, ) - SummarySubSectorIssueFactory.create( + SummarySubPillarIssueFactory.create( assessment_registry=assessment_registry, summary_issue=summary_issue1 ) SummaryFocusFactory.create( assessment_registry=assessment_registry, ) - SummaryFocusSubSectorIssueFactory.create( + SummarySubDimmensionIssueFactory.create( assessment_registry=assessment_registry, summary_issue=summary_issue2, focus=AssessmentRegistry.FocusType.CONTEXT @@ -240,10 +238,10 @@ def _query_check(assessment_registry, **kwargs): self.assertEqual(len(content['data']['project']['assessmentRegistry']['scoreAnalyticalDensity']), 2) self.assertEqual(len(content['data']['project']['assessmentRegistry']['cna']), 2) - self.assertEqual(len(content['data']['project']['assessmentRegistry']['summaryMeta']), 1) - self.assertEqual(len(content['data']['project']['assessmentRegistry']['summarySubsectorIssue']), 1) - self.assertEqual(len(content['data']['project']['assessmentRegistry']['summaryFocusMeta']), 1) - self.assertEqual(len(content['data']['project']['assessmentRegistry']['summaryFocusSubsectorIssue']), 1) + self.assertEqual(len(content['data']['project']['assessmentRegistry']['summaryPillarMeta']), 1) + self.assertEqual(len(content['data']['project']['assessmentRegistry']['summarySubPillarIssue']), 1) + self.assertEqual(len(content['data']['project']['assessmentRegistry']['summaryDimmensionMeta']), 1) + self.assertEqual(len(content['data']['project']['assessmentRegistry']['summarySubDimmensionIssue']), 1) def test_list_assessment_registry_query(self): query = ''' diff --git a/schema.graphql b/schema.graphql index a30d024541..4e9514ba2b 100644 --- a/schema.graphql +++ b/schema.graphql @@ -4,6 +4,7 @@ schema { } input AdditionalDocumentInputType { + id: ID clientId: String documentType: AssessmentRegistryDocumentTypeEnum! file: ID @@ -656,7 +657,7 @@ input AssessmentRegistryCreateInputType { summaryPillarMeta: [SummaryMetaInputType!] summarySubPillarIssue: [SummarySubPillarIssueInputType!] summaryDimmensionMeta: [SummaryFocusMetaInputType!] - summarySubDimmensionIssue: [SummaryFocusIssueInputType!] + summarySubDimmensionIssue: [SummarySubDimmensionInputType!] } enum AssessmentRegistryCrisisTypeEnum { @@ -1231,6 +1232,7 @@ input BulkUserGroupMembershipInputType { } input CNAAnswerInputType { + id: ID clientId: String question: ID! answer: Boolean! @@ -2682,6 +2684,7 @@ type MergedAsOrganizationType { } input MethodologyAttributeInputType { + id: ID clientId: String dataCollectionTechnique: AssessmentRegistryDataCollectionTechniqueTypeEnum samplingApproach: AssessmentRegistrySamplingApproachTypeEnum @@ -3607,6 +3610,7 @@ type SaveUserSavedLeadFilter { } input ScoreAnalyticalDensityInputType { + id: ID clientId: String sector: AssessmentRegistrySectorTypeEnum! analysisLevelCovered: [AssessmentRegistryAnalysisLevelTypeEnum!] @@ -3634,6 +3638,7 @@ type ScoreOptionsType { } input ScoreRatingInputType { + id: ID clientId: String scoreType: AssessmentRegistryScoreCriteriaTypeEnum! rating: AssessmentRegistryRatingType @@ -3672,15 +3677,8 @@ type SectionType { widgets: [WidgetType!] } -input SummaryFocusIssueInputType { - summaryIssue: ID! - focus: AssessmentRegistryFocusTypeEnum! - text: String - order: Int - leadPreviewTextRef: GenericScalar -} - input SummaryFocusMetaInputType { + id: ID percentageOfPeopleAffected: Int totalPeopleAffected: Int percentageOfModerate: Int @@ -3749,6 +3747,7 @@ type SummaryFocusSubDimmensionIssueType { } input SummaryMetaInputType { + id: ID totalPeopleAssessed: Int totalDead: Int totalInjured: Int @@ -3776,7 +3775,17 @@ type SummaryOptionType { subPillar: [AssessmentRegistrySummarySubPillarTypeEnum!]! } +input SummarySubDimmensionInputType { + id: ID + summaryIssue: ID! + focus: AssessmentRegistryFocusTypeEnum! + text: String + order: Int + leadPreviewTextRef: GenericScalar +} + input SummarySubPillarIssueInputType { + id: ID summaryIssue: ID! text: String order: Int