From 32ec34435dbf55fb25b91583372ab5e846c0d11a Mon Sep 17 00:00:00 2001 From: profitroll Date: Fri, 16 Dec 2022 11:27:32 +0100 Subject: [PATCH] Migrated to DB/OOP --- modules/handlers/contact.py | 71 ++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/modules/handlers/contact.py b/modules/handlers/contact.py index 462a13a..cc40020 100644 --- a/modules/handlers/contact.py +++ b/modules/handlers/contact.py @@ -4,44 +4,51 @@ from datetime import datetime from app import app, isAnAdmin from pyrogram import filters from modules.utils import configGet, jsonLoad, locale, logWrite +from modules.database import col_applications +from classes.holo_user import HoloUser # Contact getting ============================================================================================================== @app.on_message(~ filters.scheduled & filters.contact & filters.private) async def get_contact(app, msg): - if (path.exists(f"{configGet('data', 'locations')}{sep}users{sep}{msg.from_user.id}.json") and jsonLoad(f"{configGet('data', 'locations')}{sep}users{sep}{msg.from_user.id}.json")["approved"]) or (await isAnAdmin(msg.from_user.id) is True): + + holo_user = HoloUser(msg.from_user) + + if holo_user.application_approved() or (await isAnAdmin(holo_user.id) is True): + if msg.contact.user_id != None: - try: - user_data = jsonLoad(f"{configGet('data', 'locations')}{sep}users{sep}{msg.contact.user_id}.json") - application = jsonLoad(f"{configGet('data', 'locations')}{sep}applications.json")[str(msg.contact.user_id)] - application_content = [] - i = 1 - for question in application["application"]: - if i == 2: - age = relativedelta(datetime.now(), datetime.strptime(application['application']['2'], '%d.%m.%Y')) - application_content.append(f"{locale('question'+str(i), 'message', 'question_titles')} {application['application']['2']} ({age.years} р.)") - else: - application_content.append(f"{locale('question'+str(i), 'message', 'question_titles')} {application['application'][question]}") - i += 1 - if user_data["sent"]: - if user_data["approved"]: - application_status = locale("application_status_accepted", "message").format((await app.get_users(application["approved_by"])).first_name, datetime.fromtimestamp(application["approval_date"]).strftime("%d.%m.%Y, %H:%M")) - elif application["rejected"]: - application_status = locale("application_status_rejected", "message").format((await app.get_users(application["rejected_by"])).first_name, datetime.fromtimestamp(application["refusal_date"]).strftime("%d.%m.%Y, %H:%M")) - else: - application_status = locale("application_status_on_hold", "message") - else: - if user_data["approved"]: - application_status = locale("application_status_accepted", "message").format((await app.get_users(application["approved_by"])).first_name, datetime.fromtimestamp(application["approval_date"]).strftime("%d.%m.%Y, %H:%M")) - elif application["rejected"]: - application_status = locale("application_status_rejected", "message").format((await app.get_users(application["rejected_by"])).first_name, datetime.fromtimestamp(application["refusal_date"]).strftime("%d.%m.%Y, %H:%M")) - else: - application_status = locale("application_status_not_send", "message") - logWrite(f"User {msg.from_user.id} requested application of {msg.contact.user_id}") - await msg.reply_text(locale("contact", "message").format(str(msg.contact.user_id), "\n".join(application_content), application_status)) - except FileNotFoundError: - logWrite(f"User {msg.from_user.id} requested application of {msg.contact.user_id} but user does not exists") + + application = col_applications.find_one({"user": msg.contact.user_id}) + + if application is None: + logWrite(f"User {holo_user.id} requested application of {msg.contact.user_id} but user does not exists") await msg.reply_text(locale("contact_invalid", "message")) + return + + application_content = [] + i = 1 + + for question in application['application']: + + if i == 2: + age = relativedelta(datetime.now(), application['application']['2']) + application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {application['application']['2'].strftime('%d.%m.%Y')} ({age.years} р.)") + elif i == 3: + if application['application']['3']['countryCode'] == "UA": + application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {application['application']['3']['name']}") + else: + application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {application['application']['3']['name']} ({application['application']['3']['adminName1']}, {application['application']['3']['countryName']})") + else: + application_content.append(f"{locale(f'question{i}', 'message', 'question_titles')} {application['application'][question]}") + + i += 1 + + application_status = locale("application_status_accepted", "message").format((await app.get_users(application["admin"])).first_name, application["date"].strftime("%d.%m.%Y, %H:%M")) + + logWrite(f"User {holo_user.id} requested application of {msg.contact.user_id}") + await msg.reply_text(locale("contact", "message").format(str(msg.contact.user_id), "\n".join(application_content), application_status)) + + else: - logWrite(f"User {msg.from_user.id} requested application of someone but user is not telegram user") + logWrite(f"User {holo_user.id} requested application of someone but user is not telegram user") await msg.reply_text(locale("contact_not_member", "message")) # ============================================================================================================================== \ No newline at end of file