Skip to content

Commit

Permalink
Merge pull request #3 from PSNAppz/1.0.0
Browse files Browse the repository at this point in the history
Disbursement & Disbursement Envelope Status API
  • Loading branch information
venky-ganapathy authored Aug 8, 2024
2 parents ee1b731 + c7f4b62 commit 8b99718
Show file tree
Hide file tree
Showing 26 changed files with 858 additions and 212 deletions.
8 changes: 8 additions & 0 deletions openg2p-g2p-bridge-api/src/openg2p_g2p_bridge_api/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,15 @@
AccountStatementController,
DisbursementController,
DisbursementEnvelopeController,
DisbursementEnvelopeStatusController,
DisbursementStatusController,
)
from .services import (
AccountStatementService,
DisbursementEnvelopeService,
DisbursementEnvelopeStatusService,
DisbursementService,
DisbursementStatusService,
)

_logger = logging.getLogger(_config.logging_default_logger_name)
Expand All @@ -33,9 +37,13 @@ def initialize(self, **kwargs):
DisbursementEnvelopeService()
DisbursementService()
AccountStatementService()
DisbursementStatusService()
DisbursementEnvelopeStatusService()
DisbursementEnvelopeController().post_init()
DisbursementController().post_init()
AccountStatementController().post_init()
DisbursementStatusController().post_init()
DisbursementEnvelopeStatusController().post_init()

def migrate_database(self, args):
super().migrate_database(args)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from .account_statement import AccountStatementController
from .disbursement import DisbursementController
from .disbursement_envelope import DisbursementEnvelopeController
from .disbursement_envelope_status import DisbursementEnvelopeStatusController
from .disbursement_status import DisbursementStatusController
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ def __init__(self, **kwargs):
self.router.add_api_route(
"/create_disbursements",
self.create_disbursements,
responses={200: {"model": DisbursementRequest}},
responses={200: {"model": DisbursementResponse}},
methods=["POST"],
)
self.router.add_api_route(
"/cancel_disbursements",
self.cancel_disbursements,
responses={200: {"model": DisbursementRequest}},
responses={200: {"model": DisbursementResponse}},
methods=["POST"],
)

Expand All @@ -50,14 +50,14 @@ async def create_disbursements(
_logger.error("Error creating disbursements")
error_response: DisbursementResponse = (
await self.disbursement_service.construct_disbursement_error_response(
e.code, e.disbursement_payloads
disbursement_request, e.code, e.disbursement_payloads
)
)
return error_response

disbursement_response: DisbursementResponse = (
await self.disbursement_service.construct_disbursement_success_response(
disbursement_payloads
disbursement_request, disbursement_payloads
)
)
_logger.info("Disbursements created successfully")
Expand All @@ -78,14 +78,14 @@ async def cancel_disbursements(
_logger.error("Error cancelling disbursements")
error_response: DisbursementResponse = (
await self.disbursement_service.construct_disbursement_error_response(
e.code, e.disbursement_payloads
disbursement_request, e.code, e.disbursement_payloads
)
)
return error_response

disbursement_response: DisbursementResponse = (
await self.disbursement_service.construct_disbursement_success_response(
disbursement_payloads
disbursement_request, disbursement_payloads
)
)
_logger.info("Disbursements cancelled successfully")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ def __init__(self, **kwargs):
self.router.add_api_route(
"/create_disbursement_envelope",
self.create_disbursement_envelope,
responses={200: {"model": DisbursementEnvelopeRequest}},
responses={200: {"model": DisbursementEnvelopeResponse}},
methods=["POST"],
)
self.router.add_api_route(
"/cancel_disbursement_envelope",
self.cancel_disbursement_envelope,
responses={200: {"model": DisbursementEnvelopeRequest}},
responses={200: {"model": DisbursementEnvelopeResponse}},
methods=["POST"],
)

Expand All @@ -48,12 +48,12 @@ async def create_disbursement_envelope(
except DisbursementEnvelopeException as e:
_logger.error("Error creating disbursement envelope")
error_response: DisbursementEnvelopeResponse = await self.disbursement_envelope_service.construct_disbursement_envelope_error_response(
e.code
disbursement_envelope_request, e.code
)
return error_response

disbursement_envelope_response: DisbursementEnvelopeResponse = await self.disbursement_envelope_service.construct_disbursement_envelope_success_response(
disbursement_envelope_payload
disbursement_envelope_request, disbursement_envelope_payload
)
_logger.info("Disbursement envelope created successfully")
return disbursement_envelope_response
Expand All @@ -71,12 +71,12 @@ async def cancel_disbursement_envelope(
except DisbursementEnvelopeException as e:
_logger.error("Error cancelling disbursement envelope")
error_response: DisbursementEnvelopeResponse = await self.disbursement_envelope_service.construct_disbursement_envelope_error_response(
e.code
disbursement_envelope_request, e.code
)
return error_response

disbursement_envelope_response: DisbursementEnvelopeResponse = await self.disbursement_envelope_service.construct_disbursement_envelope_success_response(
disbursement_envelope_payload
disbursement_envelope_request, disbursement_envelope_payload
)
_logger.info("Disbursement envelope cancelled successfully")
return disbursement_envelope_response
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import logging

from openg2p_fastapi_common.controller import BaseController
from openg2p_g2p_bridge_models.errors.exceptions import DisbursementStatusException
from openg2p_g2p_bridge_models.schemas import (
DisbursementEnvelopeBatchStatusPayload,
DisbursementEnvelopeStatusRequest,
DisbursementEnvelopeStatusResponse,
)

from ..config import Settings
from ..services import DisbursementEnvelopeStatusService

_config = Settings.get_config()
_logger = logging.getLogger(_config.logging_default_logger_name)


class DisbursementEnvelopeStatusController(BaseController):
def __init__(self, **kwargs):
super().__init__(**kwargs)

self.disbursement_envelope_status_service = (
DisbursementEnvelopeStatusService.get_component()
)
self.router.tags += ["G2P Bridge Disbursement Envelope Status"]

self.router.add_api_route(
"/get_disbursement_envelope_status",
self.get_disbursement_envelope_status,
responses={200: {"model": DisbursementEnvelopeStatusResponse}},
methods=["POST"],
)

async def get_disbursement_envelope_status(
self, disbursement_envelope_status_request: DisbursementEnvelopeStatusRequest
) -> DisbursementEnvelopeStatusResponse:
_logger.info("Getting disbursement envelope batch status payload")
try:
disbursement_envelope_batch_status_payload: DisbursementEnvelopeBatchStatusPayload = await self.disbursement_envelope_status_service.get_disbursement_envelope_batch_status(
disbursement_envelope_status_request
)
disbursement_status_response: DisbursementEnvelopeStatusResponse = await self.disbursement_envelope_status_service.construct_disbursement_envelope_success_response(
disbursement_envelope_status_request,
disbursement_envelope_batch_status_payload,
)
return disbursement_status_response

except DisbursementStatusException as e:
_logger.error(f"Error in getting disbursement envelope status: {e}")
error_response: DisbursementEnvelopeStatusResponse = await self.disbursement_envelope_status_service.construct_disbursement_envelope_status_error_response(
disbursement_envelope_status_request,
e.code,
)
return error_response
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import logging
from typing import List

from openg2p_fastapi_common.controller import BaseController
from openg2p_g2p_bridge_models.errors.exceptions import DisbursementException
from openg2p_g2p_bridge_models.schemas import (
DisbursementStatusPayload,
DisbursementStatusRequest,
DisbursementStatusResponse,
)

from ..config import Settings
from ..services import DisbursementStatusService

_config = Settings.get_config()
_logger = logging.getLogger(_config.logging_default_logger_name)


class DisbursementStatusController(BaseController):
def __init__(self, **kwargs):
super().__init__(**kwargs)

self.disbursement_service = DisbursementStatusService.get_component()
self.router.tags += ["G2P Bridge Disbursement Status"]

self.router.add_api_route(
"/get_disbursement_status",
self.get_disbursement_status,
responses={200: {"model": DisbursementStatusResponse}},
methods=["POST"],
)

async def get_disbursement_status(
self, disbursement_status_request: DisbursementStatusRequest
) -> DisbursementStatusResponse:
_logger.info("Retrieving disbursement envelope status")
try:
disbursement_status_payloads: List[
DisbursementStatusPayload
] = await self.disbursement_service.get_disbursement_status_payloads(
disbursement_status_request
)
disbursement_status_response: DisbursementStatusResponse = await self.disbursement_service.construct_disbursement_status_success_response(
disbursement_status_request, disbursement_status_payloads
)
_logger.info("Disbursements cancelled successfully")
return disbursement_status_response
except DisbursementException as e:
error_response: DisbursementStatusResponse = await self.disbursement_service.construct_disbursement_status_error_response(
disbursement_status_request, e.code
)
return error_response
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from .account_statement import AccountStatementService
from .disbursement import DisbursementService
from .disbursement_envelope import DisbursementEnvelopeService
from .disbursement_envelope_status import DisbursementEnvelopeStatusService
from .disbursement_status import DisbursementStatusService
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from openg2p_fastapi_common.service import BaseService
from openg2p_g2p_bridge_models.errors.codes import G2PBridgeErrorCodes
from openg2p_g2p_bridge_models.models import AccountStatement, AccountStatementLob
from openg2p_g2p_bridge_models.schemas import AccountStatementResponse, ResponseStatus
from openg2p_g2p_bridge_models.schemas import AccountStatementResponse
from openg2p_g2pconnect_common_lib.schemas import StatusEnum, SyncResponseHeader
from sqlalchemy.ext.asyncio import async_sessionmaker

from ..config import Settings
Expand Down Expand Up @@ -53,17 +54,25 @@ async def construct_account_statement_success_response(
) -> AccountStatementResponse:
_logger.info("Constructing account statement success response")
return AccountStatementResponse(
response_status=ResponseStatus.SUCCESS,
statement_id=statement_id,
error_code="",
header=SyncResponseHeader(
message_id="",
message_ts=datetime.now().isoformat(),
action="",
status=StatusEnum.succ,
),
message=statement_id,
)

async def construct_account_statement_error_response(
self, code: G2PBridgeErrorCodes
) -> AccountStatementResponse:
_logger.error("Constructing account statement error response")
return AccountStatementResponse(
response_status=ResponseStatus.FAILURE,
statement_id="",
error_code=code.value,
header=SyncResponseHeader(
message_id="",
message_ts=datetime.now().isoformat(),
action="",
status=StatusEnum.rjct,
),
message=code.value,
)
Loading

0 comments on commit 8b99718

Please sign in to comment.