Skip to content

Commit 85c0c0b

Browse files
authored
feature/481UpdateSettlementBySettlementParticipant
1 parent ccf1fb7 commit 85c0c0b

8 files changed

Lines changed: 362 additions & 66 deletions

File tree

‎src/handlers/settlements/{id}.js‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
const Boom = require('boom')
3737

38-
const settlement = require('../../domain/settlement/index')
38+
const Settlements = require('../../domain/settlement')
3939
const Logger = require('@mojaloop/central-services-shared').Logger
4040
const Path = require('path')
4141

@@ -57,21 +57,21 @@ module.exports = {
5757
try {
5858
const Enums = await request.server.methods.enums('settlementStates')
5959
request.server.log('info', `get settlement by Id requested with id ${settlementId}`)
60-
let settlementResult = await settlement.getById({ settlementId }, Enums)
60+
let settlementResult = await Settlements.getById({ settlementId }, Enums)
6161
return h.response(settlementResult)
6262
} catch (e) {
6363
request.server.log('error', e)
6464
return Boom.notFound(e.message)
6565
}
6666
},
67+
6768
/**
6869
* summary: Acknowledegement of settlement by updating with Settlements Id.
6970
* description:
7071
* parameters: id, settlementUpdatePayload
7172
* produces: application/json
7273
* responses: 200, 400, 401, 404, 415, default
7374
*/
74-
7575
put: async function updateSettlementById (request) {
7676
const settlementId = request.params.id
7777
try {
@@ -91,9 +91,9 @@ module.exports = {
9191
transferStates: await request.server.methods.enums('transferStates')
9292
}
9393
if (p.participants) {
94-
return await settlement.putById(settlementId, request.payload, Enums)
94+
return await Settlements.putById(settlementId, request.payload, Enums)
9595
} else if (p.state && p.state === Enums.settlementStates.ABORTED) {
96-
return await settlement.abortById(settlementId, request.payload, Enums)
96+
return await Settlements.abortById(settlementId, request.payload, Enums)
9797
} else {
9898
throw new Error('Invalid request payload input')
9999
}

‎src/handlers/settlements/{settlementId}/participants/{participantId}.js‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,41 @@ module.exports = {
6565
request.server.log('error', e)
6666
return Boom.badRequest(e)
6767
}
68+
},
69+
70+
/**
71+
* summary: Acknowledegement of settlement by updating with Settlements Id.
72+
* description:
73+
* parameters: id, participantId, settlementUpdatePayload
74+
* produces: application/json
75+
* responses: 200, 400, 401, 404, 415, default
76+
*/
77+
put: async function updateSettlementById (request) {
78+
const settlementId = request.params.settlementId
79+
const participantId = request.params.participantId
80+
try {
81+
const p = request.payload
82+
const universalPayload = {
83+
participants: [
84+
{
85+
id: participantId,
86+
accounts: p.accounts
87+
}
88+
]
89+
}
90+
const Enums = {
91+
ledgerAccountTypes: await request.server.methods.enums('ledgerAccountTypes'),
92+
ledgerEntryTypes: await request.server.methods.enums('ledgerEntryTypes'),
93+
participantLimitTypes: await request.server.methods.enums('participantLimitTypes'),
94+
settlementStates: await request.server.methods.enums('settlementStates'),
95+
settlementWindowStates: await request.server.methods.enums('settlementWindowStates'),
96+
transferParticipantRoleTypes: await request.server.methods.enums('transferParticipantRoleTypes'),
97+
transferStates: await request.server.methods.enums('transferStates')
98+
}
99+
return await Settlements.putById(settlementId, universalPayload, Enums)
100+
} catch (e) {
101+
request.server.log('error', e)
102+
return Boom.badRequest(e)
103+
}
68104
}
69105
}

‎src/handlers/settlements/{settlementId}/participants/{participantId}/accounts/{accountId}.js‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,42 @@ module.exports = {
5454
request.server.log('error', e)
5555
return Boom.badRequest(e)
5656
}
57+
},
58+
59+
/**
60+
* summary: Acknowledegement of settlement by updating with Settlements Id.
61+
* description:
62+
* parameters: id, participantId, settlementUpdatePayload
63+
* produces: application/json
64+
* responses: 200, 400, 401, 404, 415, default
65+
*/
66+
put: async function updateSettlementById (request) {
67+
const settlementId = request.params.settlementId
68+
const participantId = request.params.participantId
69+
const accountId = request.params.accountId
70+
try {
71+
const accounts = [Object.assign({}, request.payload, { id: accountId })]
72+
const universalPayload = {
73+
participants: [
74+
{
75+
id: participantId,
76+
accounts
77+
}
78+
]
79+
}
80+
const Enums = {
81+
ledgerAccountTypes: await request.server.methods.enums('ledgerAccountTypes'),
82+
ledgerEntryTypes: await request.server.methods.enums('ledgerEntryTypes'),
83+
participantLimitTypes: await request.server.methods.enums('participantLimitTypes'),
84+
settlementStates: await request.server.methods.enums('settlementStates'),
85+
settlementWindowStates: await request.server.methods.enums('settlementWindowStates'),
86+
transferParticipantRoleTypes: await request.server.methods.enums('transferParticipantRoleTypes'),
87+
transferStates: await request.server.methods.enums('transferStates')
88+
}
89+
return await Settlements.putById(settlementId, universalPayload, Enums)
90+
} catch (e) {
91+
request.server.log('error', e)
92+
return Boom.badRequest(e)
93+
}
5794
}
5895
}

‎src/interface/swagger.json‎

Lines changed: 61 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -418,43 +418,29 @@
418418
}
419419
}
420420
},
421-
"/settlements/{settlementId}/participants/{participantId}/accounts/{accountId}": {
421+
"/settlements/{id}": {
422422
"get": {
423423
"produces": [
424424
"application/json"
425425
],
426426
"deprecated": false,
427-
"summary": "Returns Settlement(s) as per filter criteria.",
428-
"operationId": "getSettlementBySettlementParticipantAccount",
427+
"summary": "Returns Settlement(s) as per parameters/filter criteria.",
428+
"operationId": "getSettlementById",
429429
"parameters": [
430430
{
431431
"in": "path",
432-
"name": "settlementId",
432+
"name": "id",
433433
"required": true,
434434
"type": "integer",
435435
"description": "A valid Settlement Id.\n"
436-
},
437-
{
438-
"in": "path",
439-
"name": "participantId",
440-
"required": true,
441-
"type": "integer",
442-
"description": "A valid Participant Id.\n"
443-
},
444-
{
445-
"in": "path",
446-
"name": "accountId",
447-
"required": true,
448-
"type": "integer",
449-
"description": "A valid Account Id. \n"
450436
}
451437
],
452438
"tags": [
453-
"getSettlementBySettlementParticipantAccount"
439+
"getSettlementById"
454440
],
455441
"responses": {
456442
"200": {
457-
"description": "Settlement, settlement windows and settlement accounts returned by the filtering parameters.",
443+
"description": "Settlement successfully returned by the filtering/Query parameters.",
458444
"schema": {
459445
"$ref": "#/definitions/Settlement"
460446
}
@@ -499,42 +485,28 @@
499485
"application/json"
500486
],
501487
"deprecated": false,
502-
"summary": "Acknowledegement of settlement by updating the reason and state by Settlements Id, Participant Id and accounts Id.",
503-
"operationId": "updateSettlementBySettlementParticipantAccount",
488+
"summary": "Acknowledegement of settlement by updating with Settlement Id.",
489+
"operationId": "updateSettlementById",
504490
"parameters": [
505491
{
506492
"in": "path",
507-
"name": "settlementId",
493+
"name": "id",
508494
"description": "A valid Settlement Id.",
509495
"required": true,
510496
"type": "integer"
511497
},
512-
{
513-
"in": "path",
514-
"name": "participantId",
515-
"description": "A valid Participant Id.",
516-
"required": true,
517-
"type": "integer"
518-
},
519-
{
520-
"in": "path",
521-
"name": "accountId",
522-
"description": "A valid Account Id.",
523-
"required": true,
524-
"type": "integer"
525-
},
526498
{
527499
"in": "body",
528500
"name": "payload",
529501
"description": "A JSON object containing settlement update info.",
530502
"schema": {
531-
"$ref": "#/definitions/SettlementUpdateBySettlementParticipantAccount"
503+
"$ref": "#/definitions/SettlementUpdatebySettlementIdPayload"
532504
},
533505
"required": true
534506
}
535507
],
536508
"tags": [
537-
"updateSettlementBySettlementParticipantAccount"
509+
"updateSettlementById"
538510
],
539511
"responses": {
540512
"200": {
@@ -576,29 +548,36 @@
576548
}
577549
}
578550
},
579-
"/settlements/{id}": {
551+
"/settlements/{settlementId}/participants/{participantId}": {
580552
"get": {
581553
"produces": [
582554
"application/json"
583555
],
584556
"deprecated": false,
585-
"summary": "Returns Settlement(s) as per parameters/filter criteria.",
586-
"operationId": "getSettlementById",
557+
"summary": "Returns Settlement(s) as per filter criteria.",
558+
"operationId": "getSettlementBySettlementParticipant",
587559
"parameters": [
588560
{
589561
"in": "path",
590-
"name": "id",
562+
"name": "settlementId",
591563
"required": true,
592564
"type": "integer",
593565
"description": "A valid Settlement Id.\n"
566+
},
567+
{
568+
"in": "path",
569+
"name": "participantId",
570+
"required": true,
571+
"type": "integer",
572+
"description": "A valid Participant Id.\n"
594573
}
595574
],
596575
"tags": [
597-
"getSettlementById"
576+
"getSettlementBySettlementParticipant"
598577
],
599578
"responses": {
600579
"200": {
601-
"description": "Settlement successfully returned by the filtering/Query parameters.",
580+
"description": "Settlement, settlement windows and settlement accounts returned by the filtering parameters.",
602581
"schema": {
603582
"$ref": "#/definitions/Settlement"
604583
}
@@ -643,28 +622,35 @@
643622
"application/json"
644623
],
645624
"deprecated": false,
646-
"summary": "Acknowledegement of settlement by updating with Settlement Id.",
647-
"operationId": "updateSettlementById",
625+
"summary": "Acknowledegement of settlement by updating with Settlements Id and Participant Id.",
626+
"operationId": "updateSettlementBySettlementParticipant",
648627
"parameters": [
649628
{
650629
"in": "path",
651-
"name": "id",
630+
"name": "settlementId",
652631
"description": "A valid Settlement Id.",
653632
"required": true,
654633
"type": "integer"
655634
},
635+
{
636+
"in": "path",
637+
"name": "participantId",
638+
"description": "A valid Participant Id.",
639+
"required": true,
640+
"type": "integer"
641+
},
656642
{
657643
"in": "body",
658644
"name": "payload",
659645
"description": "A JSON object containing settlement update info.",
660646
"schema": {
661-
"$ref": "#/definitions/SettlementUpdatebySettlementIdPayload"
647+
"$ref": "#/definitions/SettlementUpdateBySettlementPartricipantPayload"
662648
},
663649
"required": true
664650
}
665651
],
666652
"tags": [
667-
"updateSettlementById"
653+
"updateSettlementBySettlementParticipant"
668654
],
669655
"responses": {
670656
"200": {
@@ -706,14 +692,14 @@
706692
}
707693
}
708694
},
709-
"/settlements/{settlementId}/participants/{participantId}": {
695+
"/settlements/{settlementId}/participants/{participantId}/accounts/{accountId}": {
710696
"get": {
711697
"produces": [
712698
"application/json"
713699
],
714700
"deprecated": false,
715701
"summary": "Returns Settlement(s) as per filter criteria.",
716-
"operationId": "getSettlementBySettlementParticipant",
702+
"operationId": "getSettlementBySettlementParticipantAccount",
717703
"parameters": [
718704
{
719705
"in": "path",
@@ -728,10 +714,17 @@
728714
"required": true,
729715
"type": "integer",
730716
"description": "A valid Participant Id.\n"
717+
},
718+
{
719+
"in": "path",
720+
"name": "accountId",
721+
"required": true,
722+
"type": "integer",
723+
"description": "A valid Account Id. \n"
731724
}
732725
],
733726
"tags": [
734-
"getSettlementBySettlementParticipant"
727+
"getSettlementBySettlementParticipantAccount"
735728
],
736729
"responses": {
737730
"200": {
@@ -780,8 +773,8 @@
780773
"application/json"
781774
],
782775
"deprecated": false,
783-
"summary": "Acknowledegement of settlement by updating with Settlements Id and Participant Id.",
784-
"operationId": "updateSettlementBySettlementParticipant",
776+
"summary": "Acknowledegement of settlement by updating the reason and state by Settlements Id, Participant Id and accounts Id.",
777+
"operationId": "updateSettlementBySettlementParticipantAccount",
785778
"parameters": [
786779
{
787780
"in": "path",
@@ -797,18 +790,25 @@
797790
"required": true,
798791
"type": "integer"
799792
},
793+
{
794+
"in": "path",
795+
"name": "accountId",
796+
"description": "A valid Account Id.",
797+
"required": true,
798+
"type": "integer"
799+
},
800800
{
801801
"in": "body",
802802
"name": "payload",
803803
"description": "A JSON object containing settlement update info.",
804804
"schema": {
805-
"$ref": "#/definitions/SettlementUpdateBySettlementPartricipantPayload"
805+
"$ref": "#/definitions/SettlementUpdateBySettlementParticipantAccount"
806806
},
807807
"required": true
808808
}
809809
],
810810
"tags": [
811-
"updateSettlementBySettlementParticipant"
811+
"updateSettlementBySettlementParticipantAccount"
812812
],
813813
"responses": {
814814
"200": {
@@ -989,6 +989,10 @@
989989
"reason": {
990990
"type": "string",
991991
"example": "string"
992+
},
993+
"externalReference": {
994+
"type": "string",
995+
"example": "external-reference-abc123"
992996
}
993997
},
994998
"required": [

0 commit comments

Comments
 (0)