import { AccountService } from '@everisinnovationbot/banc_sabadell_services'; import { AccountDFManager } from '@everisinnovationbot/dialog_flow_managers'; import { SuggestionDFManager } from "../../managers/dialogflow/suggestion.manager"; import { AccountManager } from '@everisinnovationbot/shared'; import { FormatManager } from '@everisinnovationbot/shared'; export class IntentsAccountsDFManager { private static accountService: AccountService = new AccountService(); public static async getIntentAccountBalance(conv, last4numbers) { // Get the value of last4numbers from context or params let _last4numbers = last4numbers ? last4numbers : (conv.contexts.input.last4numbersctx ? conv.contexts.input.last4numbersctx.parameters.last4numbersctx : null); // Set the lifespan context to 5 again conv.contexts.set('last4numbersctx', 5, { 'last4numbersctx': _last4numbers }); conv.contexts.set('parentoperativectx', 5, { 'parentoperativectx': 'accounts' }); let account = await this.accountService.getAccount(_last4numbers, conv.user.access.token); if (account) { const response = AccountDFManager.generateBalanceAccountResponse(account); conv.ask(response); conv.ask(SuggestionDFManager.generateAccountSuggestions()); } else { this.accountNullResponse(conv) } } public static async getIntentAccountMovements(conv, last4numbers) { let _last4numbers = last4numbers ? last4numbers : (conv.contexts.input.last4numbersctx ? conv.contexts.input.last4numbersctx.parameters.last4numbersctx : null); let account = await this.getAccount(conv, _last4numbers); if (account) { let movements = await this.accountService.getMovementsAccounts(account.productNumber, conv.user.access.token); if (conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')) { if (movements.length > 1) { const accountMovementsTable = AccountDFManager.generateMovementsAccountTable(movements); const accountMovementsTableSimpleResponse = AccountDFManager.generateMovementsAccountTableSimpleResponse(movements); conv.ask(accountMovementsTableSimpleResponse); conv.ask(accountMovementsTable); } else { const accountMovementsSimpleResponse = AccountDFManager.generateMovementsAccountSimpleResponse(movements); conv.ask(accountMovementsSimpleResponse); } } else { const accountMovementsSimpleResponse = AccountDFManager.generateMovementsAccountSimpleResponse(movements); conv.ask(accountMovementsSimpleResponse); } conv.ask(SuggestionDFManager.generateAccountSuggestions()); } else { this.accountNullResponse(conv) } } public static async getIntentAccountSelected(conv, option, last4numbers) { conv.contexts.set('parentoperativectx', 5, { 'parentoperativectx': 'accounts' }); let accounts = await this.accountService.getAccounts(conv.user.access.token); const selectedAccount = option ? AccountManager.getAccountByOption(accounts, option) : AccountManager.getAccountByLast4(accounts, last4numbers); if (selectedAccount) { const response = AccountDFManager.generateSelectedAccountSimpleResponse(selectedAccount); let last4numbersCtx = option ? FormatManager.getLast4numbers(option) : last4numbers; conv.contexts.set('last4numbersctx', 5, { 'last4numbersctx': last4numbersCtx }); conv.ask(response); conv.ask(SuggestionDFManager.generateAccountSuggestions()); } else { IntentsAccountsDFManager.accountNullResponse(conv) } } public static async getAccount(conv, _last4numbers) { conv.contexts.set('last4numbersctx', 5, { 'last4numbersctx': _last4numbers }); conv.contexts.set('parentoperativectx', 5, { 'parentoperativectx': 'accounts' }); let account = await this.accountService.getAccount(_last4numbers, conv.user.access.token); return account; } public static accountNullResponse(conv) { const response = AccountDFManager.generateAccountNullResponse(); conv.ask(response); } }