Link measures to third parties
Add a many-to-many relationship between measures and third parties, surfaced as a measures tab on the third party detail page and a third parties tab on the measure detail page. Each side gets a paginated list with a link/unlink dialog. Also remove the right-hand drawer on the measure detail page and expose the state as a badge in the page header, mirroring how the compliance page surfaces its active flag. Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -95,6 +95,14 @@ type Measure implements Node {
|
||||
filter: DocumentFilter
|
||||
): DocumentConnection! @goField(forceResolver: true)
|
||||
|
||||
thirdParties(
|
||||
first: Int
|
||||
after: CursorKey
|
||||
last: Int
|
||||
before: CursorKey
|
||||
orderBy: ThirdPartyOrder
|
||||
): ThirdPartyConnection! @goField(forceResolver: true)
|
||||
|
||||
createdAt: Datetime!
|
||||
updatedAt: Datetime!
|
||||
|
||||
@@ -126,6 +134,12 @@ extend type Mutation {
|
||||
deleteMeasureDocumentMapping(
|
||||
input: DeleteMeasureDocumentMappingInput!
|
||||
): DeleteMeasureDocumentMappingPayload!
|
||||
createMeasureThirdPartyMapping(
|
||||
input: CreateMeasureThirdPartyMappingInput!
|
||||
): CreateMeasureThirdPartyMappingPayload!
|
||||
deleteMeasureThirdPartyMapping(
|
||||
input: DeleteMeasureThirdPartyMappingInput!
|
||||
): DeleteMeasureThirdPartyMappingPayload!
|
||||
}
|
||||
|
||||
input CreateMeasureInput {
|
||||
@@ -187,3 +201,23 @@ type DeleteMeasureDocumentMappingPayload {
|
||||
deletedMeasureId: ID!
|
||||
deletedDocumentId: ID!
|
||||
}
|
||||
|
||||
input CreateMeasureThirdPartyMappingInput {
|
||||
measureId: ID!
|
||||
thirdPartyId: ID!
|
||||
}
|
||||
|
||||
input DeleteMeasureThirdPartyMappingInput {
|
||||
measureId: ID!
|
||||
thirdPartyId: ID!
|
||||
}
|
||||
|
||||
type CreateMeasureThirdPartyMappingPayload {
|
||||
measureEdge: MeasureEdge!
|
||||
thirdPartyEdge: ThirdPartyEdge!
|
||||
}
|
||||
|
||||
type DeleteMeasureThirdPartyMappingPayload {
|
||||
deletedMeasureId: ID!
|
||||
deletedThirdPartyId: ID!
|
||||
}
|
||||
|
||||
@@ -179,6 +179,7 @@ input ThirdPartyOrder
|
||||
|
||||
input ThirdPartyFilter {
|
||||
firstLevel: Boolean
|
||||
query: String
|
||||
}
|
||||
|
||||
input ThirdPartyComplianceReportOrder
|
||||
@@ -255,6 +256,15 @@ type ThirdParty implements Node {
|
||||
orderBy: ThirdPartyRiskAssessmentOrder
|
||||
): ThirdPartyRiskAssessmentConnection! @goField(forceResolver: true)
|
||||
|
||||
measures(
|
||||
first: Int
|
||||
after: CursorKey
|
||||
last: Int
|
||||
before: CursorKey
|
||||
orderBy: MeasureOrder
|
||||
filter: MeasureFilter
|
||||
): MeasureConnection! @goField(forceResolver: true)
|
||||
|
||||
businessOwner: Profile @goField(forceResolver: true)
|
||||
securityOwner: Profile @goField(forceResolver: true)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user