2021-07-20 18:18:27 +02:00
|
|
|
# standard imports
|
|
|
|
import datetime
|
|
|
|
import logging
|
|
|
|
|
|
|
|
# third-party imports
|
|
|
|
import celery
|
|
|
|
|
|
|
|
# local imports
|
2021-08-06 18:29:01 +02:00
|
|
|
from cic_ussd.account.transaction import from_wei
|
2021-07-20 18:18:27 +02:00
|
|
|
from cic_ussd.notifications import Notifier
|
|
|
|
from cic_ussd.phone_number import Support
|
|
|
|
|
|
|
|
celery_app = celery.current_app
|
|
|
|
logg = logging.getLogger(__file__)
|
|
|
|
notifier = Notifier()
|
|
|
|
|
|
|
|
|
|
|
|
@celery_app.task
|
2021-08-06 18:29:01 +02:00
|
|
|
def transaction(notification_data: dict):
|
2021-07-20 18:18:27 +02:00
|
|
|
"""
|
|
|
|
:param notification_data:
|
|
|
|
:type notification_data:
|
|
|
|
:return:
|
|
|
|
:rtype:
|
|
|
|
"""
|
2021-08-06 18:29:01 +02:00
|
|
|
role = notification_data.get('role')
|
|
|
|
amount = from_wei(notification_data.get('token_value'))
|
|
|
|
balance = notification_data.get('available_balance')
|
2021-07-20 18:18:27 +02:00
|
|
|
phone_number = notification_data.get('phone_number')
|
|
|
|
preferred_language = notification_data.get('preferred_language')
|
|
|
|
token_symbol = notification_data.get('token_symbol')
|
2021-08-06 18:29:01 +02:00
|
|
|
transaction_account_metadata = notification_data.get('metadata_id')
|
2021-07-20 18:18:27 +02:00
|
|
|
transaction_type = notification_data.get('transaction_type')
|
|
|
|
timestamp = datetime.datetime.now().strftime('%d-%m-%y, %H:%M %p')
|
|
|
|
|
|
|
|
if transaction_type == 'tokengift':
|
|
|
|
notifier.send_sms_notification(
|
|
|
|
key='sms.account_successfully_created',
|
|
|
|
phone_number=phone_number,
|
|
|
|
preferred_language=preferred_language,
|
2021-08-06 18:29:01 +02:00
|
|
|
support_phone=Support.phone_number)
|
2021-07-20 18:18:27 +02:00
|
|
|
|
|
|
|
if transaction_type == 'transfer':
|
2021-08-06 18:29:01 +02:00
|
|
|
if role == 'recipient':
|
|
|
|
notifier.send_sms_notification('sms.received_tokens',
|
|
|
|
phone_number=phone_number,
|
|
|
|
preferred_language=preferred_language,
|
|
|
|
amount=amount,
|
|
|
|
token_symbol=token_symbol,
|
|
|
|
tx_sender_information=transaction_account_metadata,
|
|
|
|
timestamp=timestamp,
|
|
|
|
balance=balance)
|
|
|
|
if role == 'sender':
|
|
|
|
notifier.send_sms_notification('sms.sent_tokens',
|
|
|
|
phone_number=phone_number,
|
|
|
|
preferred_language=preferred_language,
|
|
|
|
amount=amount,
|
|
|
|
token_symbol=token_symbol,
|
|
|
|
tx_recipient_information=transaction_account_metadata,
|
|
|
|
timestamp=timestamp,
|
|
|
|
balance=balance)
|