Skip to content

Commit

Permalink
feature/481UpdateSettlementBySettlementParticipant
Browse files Browse the repository at this point in the history
  • Loading branch information
ggrg authored Jan 4, 2019
1 parent ccf1fb7 commit 85c0c0b
Show file tree
Hide file tree
Showing 8 changed files with 362 additions and 66 deletions.
10 changes: 5 additions & 5 deletions src/handlers/settlements/{id}.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

const Boom = require('boom')

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

Expand All @@ -57,21 +57,21 @@ module.exports = {
try {
const Enums = await request.server.methods.enums('settlementStates')
request.server.log('info', `get settlement by Id requested with id ${settlementId}`)
let settlementResult = await settlement.getById({ settlementId }, Enums)
let settlementResult = await Settlements.getById({ settlementId }, Enums)
return h.response(settlementResult)
} catch (e) {
request.server.log('error', e)
return Boom.notFound(e.message)
}
},

/**
* summary: Acknowledegement of settlement by updating with Settlements Id.
* description:
* parameters: id, settlementUpdatePayload
* produces: application/json
* responses: 200, 400, 401, 404, 415, default
*/

put: async function updateSettlementById (request) {
const settlementId = request.params.id
try {
Expand All @@ -91,9 +91,9 @@ module.exports = {
transferStates: await request.server.methods.enums('transferStates')
}
if (p.participants) {
return await settlement.putById(settlementId, request.payload, Enums)
return await Settlements.putById(settlementId, request.payload, Enums)
} else if (p.state && p.state === Enums.settlementStates.ABORTED) {
return await settlement.abortById(settlementId, request.payload, Enums)
return await Settlements.abortById(settlementId, request.payload, Enums)
} else {
throw new Error('Invalid request payload input')
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,41 @@ module.exports = {
request.server.log('error', e)
return Boom.badRequest(e)
}
},

/**
* summary: Acknowledegement of settlement by updating with Settlements Id.
* description:
* parameters: id, participantId, settlementUpdatePayload
* produces: application/json
* responses: 200, 400, 401, 404, 415, default
*/
put: async function updateSettlementById (request) {
const settlementId = request.params.settlementId
const participantId = request.params.participantId
try {
const p = request.payload
const universalPayload = {
participants: [
{
id: participantId,
accounts: p.accounts
}
]
}
const Enums = {
ledgerAccountTypes: await request.server.methods.enums('ledgerAccountTypes'),
ledgerEntryTypes: await request.server.methods.enums('ledgerEntryTypes'),
participantLimitTypes: await request.server.methods.enums('participantLimitTypes'),
settlementStates: await request.server.methods.enums('settlementStates'),
settlementWindowStates: await request.server.methods.enums('settlementWindowStates'),
transferParticipantRoleTypes: await request.server.methods.enums('transferParticipantRoleTypes'),
transferStates: await request.server.methods.enums('transferStates')
}
return await Settlements.putById(settlementId, universalPayload, Enums)
} catch (e) {
request.server.log('error', e)
return Boom.badRequest(e)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,42 @@ module.exports = {
request.server.log('error', e)
return Boom.badRequest(e)
}
},

/**
* summary: Acknowledegement of settlement by updating with Settlements Id.
* description:
* parameters: id, participantId, settlementUpdatePayload
* produces: application/json
* responses: 200, 400, 401, 404, 415, default
*/
put: async function updateSettlementById (request) {
const settlementId = request.params.settlementId
const participantId = request.params.participantId
const accountId = request.params.accountId
try {
const accounts = [Object.assign({}, request.payload, { id: accountId })]
const universalPayload = {
participants: [
{
id: participantId,
accounts
}
]
}
const Enums = {
ledgerAccountTypes: await request.server.methods.enums('ledgerAccountTypes'),
ledgerEntryTypes: await request.server.methods.enums('ledgerEntryTypes'),
participantLimitTypes: await request.server.methods.enums('participantLimitTypes'),
settlementStates: await request.server.methods.enums('settlementStates'),
settlementWindowStates: await request.server.methods.enums('settlementWindowStates'),
transferParticipantRoleTypes: await request.server.methods.enums('transferParticipantRoleTypes'),
transferStates: await request.server.methods.enums('transferStates')
}
return await Settlements.putById(settlementId, universalPayload, Enums)
} catch (e) {
request.server.log('error', e)
return Boom.badRequest(e)
}
}
}
118 changes: 61 additions & 57 deletions src/interface/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -418,43 +418,29 @@
}
}
},
"/settlements/{settlementId}/participants/{participantId}/accounts/{accountId}": {
"/settlements/{id}": {
"get": {
"produces": [
"application/json"
],
"deprecated": false,
"summary": "Returns Settlement(s) as per filter criteria.",
"operationId": "getSettlementBySettlementParticipantAccount",
"summary": "Returns Settlement(s) as per parameters/filter criteria.",
"operationId": "getSettlementById",
"parameters": [
{
"in": "path",
"name": "settlementId",
"name": "id",
"required": true,
"type": "integer",
"description": "A valid Settlement Id.\n"
},
{
"in": "path",
"name": "participantId",
"required": true,
"type": "integer",
"description": "A valid Participant Id.\n"
},
{
"in": "path",
"name": "accountId",
"required": true,
"type": "integer",
"description": "A valid Account Id. \n"
}
],
"tags": [
"getSettlementBySettlementParticipantAccount"
"getSettlementById"
],
"responses": {
"200": {
"description": "Settlement, settlement windows and settlement accounts returned by the filtering parameters.",
"description": "Settlement successfully returned by the filtering/Query parameters.",
"schema": {
"$ref": "#/definitions/Settlement"
}
Expand Down Expand Up @@ -499,42 +485,28 @@
"application/json"
],
"deprecated": false,
"summary": "Acknowledegement of settlement by updating the reason and state by Settlements Id, Participant Id and accounts Id.",
"operationId": "updateSettlementBySettlementParticipantAccount",
"summary": "Acknowledegement of settlement by updating with Settlement Id.",
"operationId": "updateSettlementById",
"parameters": [
{
"in": "path",
"name": "settlementId",
"name": "id",
"description": "A valid Settlement Id.",
"required": true,
"type": "integer"
},
{
"in": "path",
"name": "participantId",
"description": "A valid Participant Id.",
"required": true,
"type": "integer"
},
{
"in": "path",
"name": "accountId",
"description": "A valid Account Id.",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "payload",
"description": "A JSON object containing settlement update info.",
"schema": {
"$ref": "#/definitions/SettlementUpdateBySettlementParticipantAccount"
"$ref": "#/definitions/SettlementUpdatebySettlementIdPayload"
},
"required": true
}
],
"tags": [
"updateSettlementBySettlementParticipantAccount"
"updateSettlementById"
],
"responses": {
"200": {
Expand Down Expand Up @@ -576,29 +548,36 @@
}
}
},
"/settlements/{id}": {
"/settlements/{settlementId}/participants/{participantId}": {
"get": {
"produces": [
"application/json"
],
"deprecated": false,
"summary": "Returns Settlement(s) as per parameters/filter criteria.",
"operationId": "getSettlementById",
"summary": "Returns Settlement(s) as per filter criteria.",
"operationId": "getSettlementBySettlementParticipant",
"parameters": [
{
"in": "path",
"name": "id",
"name": "settlementId",
"required": true,
"type": "integer",
"description": "A valid Settlement Id.\n"
},
{
"in": "path",
"name": "participantId",
"required": true,
"type": "integer",
"description": "A valid Participant Id.\n"
}
],
"tags": [
"getSettlementById"
"getSettlementBySettlementParticipant"
],
"responses": {
"200": {
"description": "Settlement successfully returned by the filtering/Query parameters.",
"description": "Settlement, settlement windows and settlement accounts returned by the filtering parameters.",
"schema": {
"$ref": "#/definitions/Settlement"
}
Expand Down Expand Up @@ -643,28 +622,35 @@
"application/json"
],
"deprecated": false,
"summary": "Acknowledegement of settlement by updating with Settlement Id.",
"operationId": "updateSettlementById",
"summary": "Acknowledegement of settlement by updating with Settlements Id and Participant Id.",
"operationId": "updateSettlementBySettlementParticipant",
"parameters": [
{
"in": "path",
"name": "id",
"name": "settlementId",
"description": "A valid Settlement Id.",
"required": true,
"type": "integer"
},
{
"in": "path",
"name": "participantId",
"description": "A valid Participant Id.",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "payload",
"description": "A JSON object containing settlement update info.",
"schema": {
"$ref": "#/definitions/SettlementUpdatebySettlementIdPayload"
"$ref": "#/definitions/SettlementUpdateBySettlementPartricipantPayload"
},
"required": true
}
],
"tags": [
"updateSettlementById"
"updateSettlementBySettlementParticipant"
],
"responses": {
"200": {
Expand Down Expand Up @@ -706,14 +692,14 @@
}
}
},
"/settlements/{settlementId}/participants/{participantId}": {
"/settlements/{settlementId}/participants/{participantId}/accounts/{accountId}": {
"get": {
"produces": [
"application/json"
],
"deprecated": false,
"summary": "Returns Settlement(s) as per filter criteria.",
"operationId": "getSettlementBySettlementParticipant",
"operationId": "getSettlementBySettlementParticipantAccount",
"parameters": [
{
"in": "path",
Expand All @@ -728,10 +714,17 @@
"required": true,
"type": "integer",
"description": "A valid Participant Id.\n"
},
{
"in": "path",
"name": "accountId",
"required": true,
"type": "integer",
"description": "A valid Account Id. \n"
}
],
"tags": [
"getSettlementBySettlementParticipant"
"getSettlementBySettlementParticipantAccount"
],
"responses": {
"200": {
Expand Down Expand Up @@ -780,8 +773,8 @@
"application/json"
],
"deprecated": false,
"summary": "Acknowledegement of settlement by updating with Settlements Id and Participant Id.",
"operationId": "updateSettlementBySettlementParticipant",
"summary": "Acknowledegement of settlement by updating the reason and state by Settlements Id, Participant Id and accounts Id.",
"operationId": "updateSettlementBySettlementParticipantAccount",
"parameters": [
{
"in": "path",
Expand All @@ -797,18 +790,25 @@
"required": true,
"type": "integer"
},
{
"in": "path",
"name": "accountId",
"description": "A valid Account Id.",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "payload",
"description": "A JSON object containing settlement update info.",
"schema": {
"$ref": "#/definitions/SettlementUpdateBySettlementPartricipantPayload"
"$ref": "#/definitions/SettlementUpdateBySettlementParticipantAccount"
},
"required": true
}
],
"tags": [
"updateSettlementBySettlementParticipant"
"updateSettlementBySettlementParticipantAccount"
],
"responses": {
"200": {
Expand Down Expand Up @@ -989,6 +989,10 @@
"reason": {
"type": "string",
"example": "string"
},
"externalReference": {
"type": "string",
"example": "external-reference-abc123"
}
},
"required": [
Expand Down
Loading

0 comments on commit 85c0c0b

Please sign in to comment.