import requests, json
import sys

class locgo:
    def __init__(self):
        pass
        
    def Info(self):
        try:
            response= requests.post('https://www.locgoh5.top/vn-app-server/app/v1/user/personalHomepage',headers = self.headers, json={}).json()
            print(f"{'Tên':<12}: {response['data']['nickName']}")
            print(f"{'Bảo lãnh':<12}: {response['data']['avlBalance']:,.0f}")
            print(f"{'Số dư':<12}: {response['data']['freezeBalance']:,.0f}")
            print(f"{'Lợi nhuận':<12}: {response['data']['income']:,.0f}")
            print(f"{'Tổng tiền':<12}: {response['data']['totalBalance']:,.0f}")
            print(f"{'Bank':<12}: {response['data']['smsPhone']}")
            print('-'*15)
        except:
            print('loi')
        
    def listbank(self):
        self.listso = []
        
        response= requests.post('https://www.locgoh5.top/vn-app-server/app/v1/user-phone/page',headers = self.headers, json={}).json()['data']['list']
        for i in response:
            print(f"{'Tài Khoản':<15}: {i['phone']}")
            print(f"{'Nhân Hàng':<15}: {i['associatedBank']}")
            print(f"{'Thu Nhập':<15}: {i['dayIncome']:,.0f}")
            print(f"{'Đơn Nhận':<15}: {i['dayDsOrderQty']}")
            print(f"{'Đơn Thanh Toán':<15}: {i['dayDfOrderQty']}")
            print(f"{'Số Dư ':<15}: {i['actualBalance']:,.0f}")
            a = 99
            b = 99
            if i['phone'] in self.lsgd.keys():
                a = self.lsgd[i['phone']]['nhan']
                b = self.lsgd[i['phone']]['rut']
                
            print(f"{'Đơn Nhận':<15}: {a} Phút Trước")
            print(f"{'Đơn Thanh Toán':<15}: {b} Phút Trước")
            print('='*17)
        
    def lsgdd(self):
        from datetime import datetime, timedelta

        result = {}
        now = datetime.now()
        response= requests.post('https://www.locgoh5.top/vn-app-server/app/v1/order/searchOrder',headers = self.headers, json={"groupBy":"","orderBy":"","orderByType":"","pageNum":1,"pageSize":10,"orderType":None,"orderOrigin":1,"platformOrderNo":"","startTime":"","endTime":""}).json()['data']['list']
        for item in response[::-1]:
            phone = item['phone']
                
            order_time = datetime.strptime(item['orderTime'], "%Y-%m-%d %H:%M:%S")
            order_time_real = order_time - timedelta(hours=1)
            minutes_ago = int((now - order_time_real).total_seconds() / 60)

            if phone not in result:
                result[phone] = {'nhan': 99, 'rut': 99}
                
            if item['orderTypeName'] == 'Đơn thu tiền':
                result[phone]['nhan'] = minutes_ago
            elif item['orderTypeName'] == 'Đơn rút tiền':
                result[phone]['rut'] = minutes_ago
        
        self.lsgd = result

    def run(self):
        # 👉 mở file ghi
        old_stdout = sys.stdout
        f = open("choquoc.txt", "w", encoding="utf-8")
        sys.stdout = f

        list_authorization = """Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6IjM2NTAzMDAwNCIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMDM2NSIsImxvZ2luTmFtZSI6IlF14buRYyBoZW8iLCJpZCI6MzQ3LCJwYXlDb2RlIjoiVk4iLCJkZXZpY2VJZCI6IkNPSEdEVUM1STMzMiIsImludml0YXRpb25Db2RlIjoiQ0syNU1OIiwic3ViIjoiQVVOMDAwMDAwMDAwMDAwMzY1IiwiaWF0IjoxNzc1MTM5NDYzLCJleHAiOjE4MDY2NzU0NjN9.8hl5efGzRPiWe8K612WtXL6-nm31hO_D2yvv4dKPBg4WyzrCPVHIYR_x4KjD9la5r0XxXtVgpahmVwDkrSq-bQ|COHGDUC5I332
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijg5ODQ3ODc1MyIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMDcyOSIsImxvZ2luTmFtZSI6IlF14buRYyB0MyIsImlkIjo3MDEsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ09IR0RVWDA2SjVVIiwiaW52aXRhdGlvbkNvZGUiOiJDTDNONVMiLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDA3MjkiLCJpYXQiOjE3NzUxMzk0NjMsImV4cCI6MTgwNjY3NTQ2M30.SjIdmnskloGEPQM_wax2aqe_NIopjesZmrGVgU2Kop1wRjvWtJbHx4vH7mEq2QrvS30fFY-Qe-ypUKLLkrhTWA|COHGDUX06J5U
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijg5ODA3ODQ3NCIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMDYzNyIsImxvZ2luTmFtZSI6IkxlZSBrYW5nIHF14buRYyIsImlkIjo2MTAsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ09IR0RWSDBEQlBVIiwiaW52aXRhdGlvbkNvZGUiOiJDTFZTOEciLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDA2MzciLCJpYXQiOjE3NzUxMzk0NjMsImV4cCI6MTgwNjY3NTQ2M30.9Z44es5EQRmEvztCRZVwpTpg7OeDYUSdQAHQ5uS_5I6Gr_6GHGPRjum5ojuxGnxGmAh13D_T1dDHlqc52zkOuA|COHGDVH0DBPU
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijk0ODYwMjkyMSIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMDc1MSIsImxvZ2luTmFtZSI6IlF14buRYyA0IiwiaWQiOjcyMywicGF5Q29kZSI6IlZOIiwiZGV2aWNlSWQiOiJDT0hHRFYzMkcxTTYiLCJpbnZpdGF0aW9uQ29kZSI6IkNMNk8zQiIsInN1YiI6IkFVTjAwMDAwMDAwMDAwMDc1MSIsImlhdCI6MTc3NTEzOTQ2NCwiZXhwIjoxODA2Njc1NDY0fQ.NwDWbpxA15ol3eE_xYuMFUABasN9jtNrWAiBzCSOJUi-fXyFcIJAS8nQJfphFkYSKMhi87zNMMpVGyKiZf5xHA|COHGDV32G1M6
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6IjM5MjA0MDY3MCIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMTQ4OSIsImxvZ2luTmFtZSI6IlF14buRYyBi4bqvYyBzxqFuIiwiaWQiOjE0NTcsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ09IR0RXTTQ2NFBFIiwiaW52aXRhdGlvbkNvZGUiOiJDTlNFVE4iLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDE0ODkiLCJpYXQiOjE3NzUxMzk0NjQsImV4cCI6MTgwNjY3NTQ2NH0.GuZNMD0eaw2dNjE-IpLsLIxvPNqYnJQtUK5KsuIbjy6bAustO1GXauc_zvRw-LARYdraIwMENZwoUkoGsz7Esw|COHGDWM464PE
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6IjM4NTU2NjMwOCIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMTQ4MiIsImxvZ2luTmFtZSI6IlF14buRYyDhu4luIiwiaWQiOjE0NTAsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ09IR0RXM0ExRzhZIiwiaW52aXRhdGlvbkNvZGUiOiJDTlIySTMiLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDE0ODIiLCJpYXQiOjE3NzUxMzk0NjQsImV4cCI6MTgwNjY3NTQ2NH0.qt16p__ZdhUsQA49giYjyghy2wHc2k9fnNnLmqgYbnYPGs7V84yNMajUBJWJ-c8itT0nJTSRRv5_j9cdbFiHnA|COHGDW3A1G8Y
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijg1Mjg3OTE2NSIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMTAzOCIsImxvZ2luTmFtZSI6IlF14buRYyBs4bunaSIsImlkIjoxMDEwLCJwYXlDb2RlIjoiVk4iLCJkZXZpY2VJZCI6IkNPSEdEWE1aOE5FNiIsImludml0YXRpb25Db2RlIjoiQ01VTjlMIiwic3ViIjoiQVVOMDAwMDAwMDAwMDAxMDM4IiwiaWF0IjoxNzc1MTM5NDY0LCJleHAiOjE4MDY2NzU0NjR9.WMxJG7vCVjI4oqpxSWnvpLjjYd9CjTwi6ji1LC9N2iahzqWNNY44VNQ2xsMMj9pZ-oFN9T7rUN5rpKrR939BeQ|COHGDXMZ8NE6
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijg2ODAzMDE2MyIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMTUyOCIsImxvZ2luTmFtZSI6IkFxdW9jIiwiaWQiOjE0OTYsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ09IR0RYNVZHMUYyIiwiaW52aXRhdGlvbkNvZGUiOiJDTlgxTzEiLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDE1MjgiLCJpYXQiOjE3NzUxMzk0NjUsImV4cCI6MTgwNjY3NTQ2NX0.2FJ7Tbo5nyci00Dtr5e4cIeoA1nO1_xr1hiM1TYx5Ta0cwP3XENvE4KGcbiyLTRrtDr8WvO6ncCtVu-fl8Z_OQ|COHGDX5VG1F2
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijg1NDU1OTc4NiIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMDkyNiIsImxvZ2luTmFtZSI6IkhlbyBoYXkgaG8iLCJpZCI6ODk4LCJwYXlDb2RlIjoiVk4iLCJkZXZpY2VJZCI6IkNPSEdEWU9TN0JURSIsImludml0YXRpb25Db2RlIjoiQ01INFBaIiwic3ViIjoiQVVOMDAwMDAwMDAwMDAwOTI2IiwiaWF0IjoxNzc1MTM5NDY1LCJleHAiOjE4MDY2NzU0NjV9.oATfyQPziQ6X34aPs287QUTJGMdwny_szh19wN_e29aEwZqx7nCxPCN0N0jzhebPUvYaPhhaMzYwABkeaXXWvg|COHGDYOS7BTE
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6IjM0NTYyMjk2MSIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMTM4NyIsImxvZ2luTmFtZSI6IlF14buRYyDEkW_DoG4iLCJpZCI6MTM1NSwicGF5Q29kZSI6IlZOIiwiZGV2aWNlSWQiOiJDT0hHRFk3R1gwU1kiLCJpbnZpdGF0aW9uQ29kZSI6IkNOTEI3RSIsInN1YiI6IkFVTjAwMDAwMDAwMDAwMTM4NyIsImlhdCI6MTc3NTEzOTQ2NSwiZXhwIjoxODA2Njc1NDY1fQ.6WDtEFGHLGX4ijf7VsVz-ukx7uqtX2bBk4x2AiW4TRmS_E7Ilt1SJiJLREdVm9NwAAZCIVN_SpHn3ITjftVmIA|COHGDY7GX0SY
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6IjgyODM2MzY4MiIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMDg3NCIsImxvZ2luTmFtZSI6IkFuaCBxdeG7kWMga2FrYSIsImlkIjo4NDYsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ09IR0RaVUMwSVZNIiwiaW52aXRhdGlvbkNvZGUiOiJDTUVPTUwiLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDA4NzQiLCJpYXQiOjE3NzUxMzk0NjYsImV4cCI6MTgwNjY3NTQ2Nn0.6dHgws6et_JY4qfbuzxnWC8Mz5IzYEifQr8Ibi82Qo6thk8QIVpdSlpB1Wihk8G0tfopHqFVjfRaHtTE-DCJZA|COHGDZUC0IVM
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6IjM3MzE5MDMxNyIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMTUyNyIsImxvZ2luTmFtZSI6IlF14buRYyBxdeG7kWMiLCJpZCI6MTQ5NSwicGF5Q29kZSI6IlZOIiwiZGV2aWNlSWQiOiJDT0hHRDBESDhJQUEiLCJpbnZpdGF0aW9uQ29kZSI6IkNOWDBQUiIsInN1YiI6IkFVTjAwMDAwMDAwMDAwMTUyNyIsImlhdCI6MTc3NTEzOTQ2NiwiZXhwIjoxODA2Njc1NDY2fQ.d12m8WucUo9cdOV6FhJ-NJZfuIC0BoHqryjTCoSQKlIkCctIGOIXKl1jrRngKr5FO9NjWRwQ2PiUCDEERMlwow|COHGD0DH8IAA
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijk4NzA3NTUyOCIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMDY4MCIsImxvZ2luTmFtZSI6Ikh1w6JuIGjDrXAiLCJpZCI6NjUyLCJwYXlDb2RlIjoiVk4iLCJkZXZpY2VJZCI6IkNPSEdEMFlMRE5ERSIsImludml0YXRpb25Db2RlIjoiQ0xZNk1IIiwic3ViIjoiQVVOMDAwMDAwMDAwMDAwNjgwIiwiaWF0IjoxNzc1MTM5NDY2LCJleHAiOjE4MDY2NzU0NjZ9.ineDlo9b1L1F_yYwyzEkJe3L-ZfBIV32YMj-K7O2hGeLQoUCyeduspAVf5jsZBAuzT8imZ75mU6XR3AZd7e-AQ|COHGD0YLDNDE
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijk2MjkyMzk4MSIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMjI4NCIsImxvZ2luTmFtZSI6IlF14buRYyB0aMO0aSIsImlkIjoyMjM4LCJwYXlDb2RlIjoiVk4iLCJkZXZpY2VJZCI6IkNQWUNDNTg2WFJQVSIsImludml0YXRpb25Db2RlIjoiQ1BUNzM5Iiwic3ViIjoiQVVOMDAwMDAwMDAwMDAyMjg0IiwiaWF0IjoxNzc2NDIwMDkwLCJleHAiOjE4MDc5NTYwOTB9.giyDMOl0CqfvYJoWY48GlfnimoAT6H1YHrdW7pHkMNm-XINRBkR8cDmAJQFCRLfWXo3KZQjQCAYqFW863q0Zpw|CPYCC586XRPU
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijk2ODk4ODIxNiIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMjI4OCIsImxvZ2luTmFtZSI6IlF14buRYyBo4bujaSIsImlkIjoyMjQyLCJwYXlDb2RlIjoiVk4iLCJkZXZpY2VJZCI6IkNQWUNDNkkxSkNTWSIsImludml0YXRpb25Db2RlIjoiQ1BVQktFIiwic3ViIjoiQVVOMDAwMDAwMDAwMDAyMjg4IiwiaWF0IjoxNzc2NDIwMDkwLCJleHAiOjE4MDc5NTYwOTB9.wsF5-ZQ9Dbamlpkq3Z5YU37rrAFYf_INERWzJzt-bi8mPmTEo0_iChto7hJQsK_v8eXAqSJdBovj-BqD_jonew|CPYCC6I1JCSY
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6IjM4NTU2NjMwNyIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMjYxNSIsImxvZ2luTmFtZSI6IjAzOCA1NTY2MzA3IiwiaWQiOjI1NjksInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ1FLTVgzUVdZUVZNIiwiaW52aXRhdGlvbkNvZGUiOiJDUUdTQ0UiLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDI2MTUiLCJpYXQiOjE3NzY5NTk5MTAsImV4cCI6MTgwODQ5NTkxMH0.2N3macfnGpE-22PqfMjN9aGQ1qsVfF59Lraepy8HXP6chjKKursmSQB51bSJ2qcR4DTMd4QkK7OGT8SrKEq_Pg|CQKMX3QWYQVM
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijk2MjkyMzk4MCIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMjU2OSIsImxvZ2luTmFtZSI6IjA5NiAyOTIzOTgwIiwiaWQiOjI1MjMsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ1FLTVgzN01SOTZRIiwiaW52aXRhdGlvbkNvZGUiOiJDUURPWDIiLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDI1NjkiLCJpYXQiOjE3NzY5NTk5MTEsImV4cCI6MTgwODQ5NTkxMX0.1J8twCmJ1TwEliQ6MJN_ntTznrOcXES5ucndSfWwSODsr2vb8frKSuUwT9F3BMpd5f24c6hcuGryfS7WVQdoNw|CQKMX37MR96Q
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijg2ODAzMDE2MiIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMjU1NyIsImxvZ2luTmFtZSI6IjA4NiA4MDMwMTYyIiwiaWQiOjI1MTEsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ1FLTVg0UTZaTk4yIiwiaW52aXRhdGlvbkNvZGUiOiJDUURGRk0iLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDI1NTciLCJpYXQiOjE3NzY5NTk5MTEsImV4cCI6MTgwODQ5NTkxMX0.ZQwkLKxMi65obXQgSrHVkbIkYYJuoibwd92EccrJyjbpp8xAQHhwrJyMylHNtJDPyffboDMkl_LyvKXnk3ANSA|CQKMX4Q6ZNN2
Bearer_eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQ.eyJqdGkiOiJyUVJrJHlOOjclKkJ3fUwtVU5ILVBPPVdFVy1YRi1dTX40Izt5R2E6YV9GeyIsImlzcyI6InBheW1lbnQiLCJwaG9uZSI6Ijk2OTQ5ODI1NSIsInVzZXJObyI6IkFVTjAwMDAwMDAwMDAwMjQ3OCIsImxvZ2luTmFtZSI6IlF1b29jIiwiaWQiOjI0MzIsInBheUNvZGUiOiJWTiIsImRldmljZUlkIjoiQ1FLTVg0MzNHUllRIiwiaW52aXRhdGlvbkNvZGUiOiJDUDhEMjYiLCJzdWIiOiJBVU4wMDAwMDAwMDAwMDI0NzgiLCJpYXQiOjE3NzY5NTk5MTEsImV4cCI6MTgwODQ5NTkxMX0.EDRHENG54I9wseC-W8Byx92ZYxJHm3a_uQ3AB9FfrwkeVeI8jshttW6rzNzCLZoc50gcbTjAzU8gL81w3taxWw|CQKMX433GRYQ""".split('\n')
        
        for i in list_authorization:
            self.headers ={
                "content-length": "2",
                "sec-ch-ua-platform": "\"Android\"",
                "authorization": i.split('|')[0],
                "client-platform": "H5",
                "accept-language": "vi-VN",
                "sec-ch-ua": "\"Google Chrome\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"",
                "sec-ch-ua-mobile": "?1",
                "deviceid": i.split('|')[1],
                "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36",
                "dnt": "1",
                "request-paycode": "VN",
                "content-type": "application/json",
                "accept": "*/*",
                "origin": "https://h5.locgoh5.top",
                "sec-fetch-site": "same-site",
                "sec-fetch-mode": "cors",
                "sec-fetch-dest": "empty",
                "referer": "https://h5.locgoh5.top/",
                "priority": "u=1, i"
            }

            self.Info()
            self.lsgdd()
            self.listbank()

        # 👉 trả lại stdout
        sys.stdout = old_stdout
        f.close()

locgo().run()

input_file = "choquoc.txt"
output_file = "choquoc.html"

def parse_number(value):
    try:
        return int(value.replace(",", "").strip())
    except:
        return 0


def parse_minutes(text):
    try:
        if "Phút" in text:
            return int(text.split()[0])
    except:
        pass
    return 0


def add_key_safe(obj, key, value):
    if key not in obj:
        obj[key] = value
    else:
        new_key = key + " Time"
        i = 2
        while new_key in obj:
            new_key = f"{key} Time {i}"
            i += 1
        obj[new_key] = value


def parse_data(text):
    lines = text.splitlines()
    accounts = []
    current_account = None
    current_bank = None
    in_bank = False

    for line in lines:
        line = line.strip()
        if not line:
            continue

        if line == "---------------":
            in_bank = True
            current_bank = {}
            continue

        if line == "=================":
            if current_bank:
                current_account["banks"].append(current_bank)
                current_bank = {}
            continue

        if ":" in line:
            k, v = line.split(":", 1)
            k, v = k.strip(), v.strip()

            if k == "Tên":
                if current_account:
                    accounts.append(current_account)
                current_account = {"info": {}, "banks": []}
                add_key_safe(current_account["info"], k, v)
                in_bank = False
                continue

            if not current_account:
                continue

            if not in_bank:
                add_key_safe(current_account["info"], k, v)
            else:
                if current_bank is None:
                    current_bank = {}
                add_key_safe(current_bank, k, v)

    if current_bank and current_account:
        current_account["banks"].append(current_bank)
    if current_account:
        accounts.append(current_account)

    return accounts


def format_number(n):
    return f"{n:,}"


def calculate_summary(data):
    total_profit = 0
    total_money = 0
    total_balance = 0
    total_guarantee = 0

    for acc in data:
        info = acc["info"]
        total_profit += parse_number(info.get("Lợi nhuận", "0"))
        total_money += parse_number(info.get("Tổng tiền", "0"))
        total_balance += parse_number(info.get("Số dư", "0"))
        total_guarantee += parse_number(info.get("Bảo lãnh", "0"))

    return {
        "profit": total_profit,
        "money": total_money,
        "balance": total_balance,
        "guarantee": total_guarantee
    }


def generate_html(data):
    labels = []
    profits = []

    for acc in data:
        labels.append(acc["info"].get("Tên", ""))
        profits.append(parse_number(acc["info"].get("Lợi nhuận", "0")))

    summary = calculate_summary(data)

    html = """
<!DOCTYPE html>
<html lang="vi">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<title>Dashboard</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

<style>
body { font-family: Arial; background:#f5f6fa; padding:15px; }
.dark { background:#1e272e; color:white; }

button { padding:10px; margin:5px; border-radius:8px; border:none; font-size:16px; }

input { width:100%; padding:12px; font-size:18px; margin:10px 0; border-radius:10px; }

.account { background:white; padding:15px; margin-bottom:20px; border-radius:12px; }
.dark .account { background:#2f3640; }

.header { font-size:20px; font-weight:bold; }

.grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }

.box { background:#dcdde1; padding:10px; border-radius:8px; }
.dark .box { background:#353b48; }

.bank { margin-top:10px; padding:10px; border-radius:8px; }

.highlight { border:2px solid gold; }
.small { font-size:13px; }
</style>
</head>

<body>

<button onclick="toggleDark()">🌙 Dark</button>
<button onclick="sortData('money')">💰 Tiền</button>
<button onclick="sortData('profit')">📈 Lợi nhuận</button>
<button onclick="sortData('balance')">🏦 Số dư</button>

<input id="search" placeholder="🔍 Tìm theo tên...">
"""

    # SUMMARY
    html += """
<div style="background:#192a56;color:white;padding:20px;border-radius:12px;margin-bottom:15px;text-align:center">
<div style="font-size:20px;">📈 Tổng lợi nhuận</div>
<div style="font-size:32px;font-weight:bold;margin:10px 0;">
""" + format_number(summary["profit"]) + """
</div>

<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:15px;">
"""

    html += "<div style='background:#273c75;padding:10px;border-radius:8px'>💰<br>" + format_number(summary["money"]) + "</div>"
    html += "<div style='background:#273c75;padding:10px;border-radius:8px'>🏦<br>" + format_number(summary["balance"]) + "</div>"
    html += "<div style='background:#273c75;padding:10px;border-radius:8px'>🔒<br>" + format_number(summary["guarantee"]) + "</div>"

    html += "</div></div>"

    html += """
<canvas id="chart"></canvas>
<div id="list">
"""

    top = sorted(data, key=lambda x: parse_number(x["info"].get("Tổng tiền", "0")), reverse=True)[:3]
    top_names = set(x["info"].get("Tên") for x in top)

    for acc in data:
        info = acc["info"]
        name = info.get("Tên", "")
        money = parse_number(info.get("Tổng tiền", "0"))
        profit = parse_number(info.get("Lợi nhuận", "0"))
        balance = parse_number(info.get("Số dư", "0"))

        cls = "account highlight" if name in top_names else "account"

        html += '<div class="%s" data-name="%s" data-money="%d" data-profit="%d" data-balance="%d">' % (
            cls, name.lower(), money, profit, balance
        )

        html += '<div class="header">%s</div>' % name

        html += '<div class="grid">'
        for k, v in info.items():
            html += '<div class="box"><b>%s</b><br>%s</div>' % (k, v)
        html += '</div>'

        # BANK
        for bank in acc["banks"]:
            order_in = parse_number(bank.get("Đơn Nhận", "0"))
            order_out = parse_number(bank.get("Đơn Thanh Toán", "0"))

            max_time = 0
            for k, v in bank.items():
                if "Time" in k:
                    m = parse_minutes(v)
                    if m > max_time:
                        max_time = m

            # màu
            if max_time > 60:
                bg = "#ff4d4d"; icon="🔴"; text="white"
            elif max_time > 30:
                bg = "#fbc531"; icon="🟡"; text="black"
            else:
                bg = "#4cd137"; icon="🟢"; text="white"

            html += '<div class="bank" style="background:%s;color:%s">' % (bg, text)
            html += '<div><b>%s BANK</b></div>' % icon

            for k, v in bank.items():
                if "Time" in k:
                    m = parse_minutes(v)
                    if m > 60:
                        c="darkred"
                    elif m > 30:
                        c="darkred"
                    else:
                        c="darkred"
                    html += '<div class="small" style="color:%s">%s: %s</div>' % (c, k, v)
                else:
                    html += '<div><b>%s:</b> %s</div>' % (k, v)

            html += '<div><b>Đơn Nhận:</b> %d</div>' % order_in
            html += '<div><b>Đơn Thanh Toán:</b> %d</div>' % order_out
            html += '</div>'

        html += '</div>'

    html += """
</div>

<script>
new Chart(document.getElementById('chart'), {
    type: 'bar',
    data: {
        labels: """ + str(labels) + """,
        datasets: [{
            label: 'Lợi nhuận',
            data: """ + str(profits) + """
        }]
    }
});

function toggleDark() {
    document.body.classList.toggle('dark');
}

document.getElementById('search').onkeyup = function() {
    let v = this.value.toLowerCase();
    document.querySelectorAll('.account').forEach(a => {
        a.style.display = a.dataset.name.includes(v) ? 'block' : 'none';
    });
}

function sortData(type) {
    let list = document.getElementById('list');
    let items = Array.from(list.children);
    items.sort((a,b)=> b.dataset[type] - a.dataset[type]);
    items.forEach(i=>list.appendChild(i));
}
</script>

</body>
</html>
"""

    return html


# RUN
with open(input_file, "r", encoding="utf-8") as f:
    raw = f.read()

data = parse_data(raw)



url = "https://methanhmup.site/choquoc.php"

datta = {
    "data": generate_html(data)
}

res = requests.post(url, data=datta)

print(res.text)

with open(output_file, "w", encoding="utf-8") as f:
    f.write(generate_html(data))

print("XONG ROI")