def UserProfile(user_id):
    if g.user == None:
        return render_template('login.html')
    response = requests.get(f"{api_url}/users/{user_id}")
    if response.status_code == 404:
        return render_template('error.html', user=g.user)
    updataUserSessionData()
    user = users[user_id]
    accounts = populateAccountsListByUserID(user_id, api_url)

    # Ledger data
    journalList = []
    accountBalances = {}
    if (accounts):
        for account in accounts:
            approvedSrcJournals = Helper.populateJournalsList(
                api_url,
                f"?SourceAccountNumber={account.accountNumber}&Status=Approved"
            )
            approvedDestJournals = Helper.populateJournalsList(
                api_url,
                f"?DestAccountNumber={account.accountNumber}&Status=Approved")
            balance = 0
            if approvedSrcJournals is not None:
                for journalEntry in approvedSrcJournals:
                    exists = False
                    for entry in journalList:
                        if journalEntry.Journal_ID == entry.Journal_ID:
                            exists = True
                            break
                    if not exists:
                        journalList.append(journalEntry)
                    balance -= sum(journalEntry.Debits)
            if approvedDestJournals is not None:
                for journalEntry in approvedDestJournals:
                    exists = False
                    for entry in journalList:
                        if journalEntry.Journal_ID == entry.Journal_ID:
                            exists = True
                            break
                    if not exists:
                        journalList.append(journalEntry)
                    balance += sum(journalEntry.Debits)
            accountBalances.update({f"{account.accountNumber}": balance})
    # end ledger data

    canEdit = getUserEditStatus(g.user, user_id)
    return render_template('profile.html',
                           title='User Profile Page',
                           userData=users[user_id],
                           accounts=accounts,
                           accountBalances=accountBalances,
                           journalList=journalList,
                           url=app_url,
                           api=api_url,
                           canEdit=canEdit,
                           sessionUser=g.user)
def journalList():
    if g.user == None:
        return render_template('login.html')
    journals = Helper.populateJournalsList(api_url)
    form = JournalActionForm()
    return render_template('chart_of_journals.html',
                           form=form,
                           sessionUser=g.user,
                           title='Journal Entries',
                           journals=journals,
                           app_url=app_url,
                           api_url=api_url)