File size: 7,059 Bytes
5979dfe
 
 
 
 
 
 
b7a0842
5979dfe
432e9c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5979dfe
 
 
 
 
 
f79faf8
 
56c8d93
f79faf8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5979dfe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432e9c8
5979dfe
 
dd1d5ac
5979dfe
d873550
dd1d5ac
 
5979dfe
 
 
 
 
 
 
dd1d5ac
5979dfe
 
 
 
 
 
 
dd1d5ac
 
432e9c8
 
 
 
5979dfe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import streamlit as st
import pandas as pd
import json
import asyncio
from datetime import datetime, timezone
from utils import validate_input, make_certificates
import pytz
#salom

# Fayl yo'li
DATA_FILE = 'data.json'

# Faylni o'qish funksiyasi
def load_data():
    try:
        with open(DATA_FILE, 'r') as f:
            return json.load(f)
    except (FileNotFoundError, json.decoder.JSONDecodeError):
        return []

# Faylni yozish funksiyasi
def save_data(data):
    with open(DATA_FILE, 'w') as f:
        json.dump(data, f, indent=4)

async def main():
    st.set_page_config(
        page_title="Sertifikatlarni olish",
        page_icon="๐ŸŽ“",
        layout="wide",
        initial_sidebar_state="auto")
    st.sidebar.title('Conferences')
    st.sidebar.image('image.png')
    with open("O'zMU JF_to'plam_17-18-may_2024_1-qism.pdf", "rb") as file:
         btn = st.sidebar.download_button(
                 label="Download conferences files Part 1",
                 data=file,
                 file_name="conferences_files part1.pdf",
                 mime="pdf",
                 type='primary',
                 use_container_width=True
               )
    with open("O'zMU_JF_to'plam_17_18_may_2024_2_qism.pdf", "rb") as file:
         btn = st.sidebar.download_button(
                 label="Download conferences files Part 2",
                 data=file,
                 file_name="conferences_files part2.pdf",
                 mime="pdf",
                 type='primary',
                 use_container_width=True
               )
    st.sidebar.link_button("๐Ÿ“ง About me", url='https://t.me/shohabbosdev', type='secondary')
    
    st.markdown("""
    <div style='text-align: center;'>
        <h1>Konferensiya ishtirokchilari uchun sertifikat tayyorlash sahifasi</h1>
    </div>
    """, unsafe_allow_html=True)
    st.markdown("<h3 align='center'><i>Ro'yxatga olish formasi</i></h3>", unsafe_allow_html=True)
    st.markdown("---")

    with st.form("Birinchi formamiz", clear_on_submit=True):
        fish = st.text_input("F.I.SH", placeholder="Misol: Ulug'murodov Shoh Abbos Baxodir o'g'li", help='Bu maydonda FISH kiritiladi')
        maqola = st.text_input("Maqola mavzuingiz", placeholder="Misol: Ma'lumotlar xavfsizligini oshirishda blockchayn texnologiyalarning o'rni", max_chars=500, help="Bu qismda maqola mavzusi lo'nda kiritilishi kerak")
        shuba = st.selectbox(
            "Sho'bani tanlang",
            options=(
                "1-sho'ba. Ta'lim tizimini takomillashtirish: dolzarb tendensiyalar va strategik yo'nalishlar",
                "2-sho'ba. Biomuhandislik va biotexnologiyalar sohasida innovatsiyalar",
                "3-sho'ba. Raqamli iqtisod va innovatsion axborot-kommunikatsiya texnologiyalarini joriy etishning dolzarb masalalari",
                "4-sho'ba. Psixologiya, tabiiy va aniq fanlar sohasida dolzarb tadqiqotlar",
                "5-sho'ba. Zamonaviy jamiyatda filologiya, tilshunoslik va didaktika",
                "6-sho'ba. Zamonaviy gumanitar ta'limning dolzarb muammolari"
            ),
            placeholder="O'z sho'bangizni tanlang...", help="O'z sho'bangizni tanlashda qiynalsangiz konferensiya ma'muriyatiga telefon qilishingiz mumkin: https://t.me/UzMU_JF_conf_1_2_3_shuba, https://t.me/UzMU_JF_conf_4_5_6_shuba")
        ustun_1, ustun_2 = st.columns(2)
        email = ustun_1.text_input("Email manzilingizni kiriting", placeholder="Misol: [email protected]", help="Elektron manzil barchangizda bo'ladi degan umiddaman")
        phone = ustun_2.text_input("Telefon raqam", placeholder="+998931189988", help="Telefon raqamni kiriting")
        rozilik = st.checkbox("Yuqoridagi barcha ma'lumotlar to'g'ri va aniq ekanligini tasdiqlaysizmi?")
        taqsdiqlash = st.form_submit_button("Sertifikat olish", type='primary')

        if taqsdiqlash and rozilik:

            is_valid, error_message = validate_input(fish, email, maqola, phone)
            if is_valid:
                existing_data = load_data()

                # Ma'lumotlar mavjudligini tekshirish
                existing_item = next((item for item in existing_data if item["F.I.SH"] == fish or item["Email"] == email or item["Telefon raqam"] == phone), None)
                
                if existing_item:
                    certificate_link = existing_item["Sertifikat manzili"]
                    sertifikat_vaqt_utc = datetime.strptime(existing_item["Sertifikat olingan vaqt"], "%Y-%m-%d %H:%M:%S").replace(tzinfo=timezone.utc)
                    sertifikat_vaqt = sertifikat_vaqt_utc.astimezone(pytz.timezone('Asia/Tashkent'))
                    st.warning(f"Siz ro'yxatdan o'tgansiz! Pastda siz olgan sertifikat nusxasi mavjud. Sertifikat olgan sana: {sertifikat_vaqt.strftime('%Y-%m-%d %H:%M:%S')}", icon='โš ๏ธ')
                    st.markdown(f"[{fish}ning sertifikat fayli]({certificate_link})")
                else:
                    sertifikat_vaqt = datetime.now(pytz.timezone('Asia/Tashkent')).strftime("%Y-%m-%d %H:%M:%S")
                    certificate_link = await make_certificates(fish, maqola)
                    st.success("Ma'lumotlar muvaffaqiyatli saqlandi", icon='๐Ÿ’พ')
                    new_entry = {
                        "F.I.SH": fish,
                        "Maqola mavzusi": maqola,
                        "Sho'ba": shuba,
                        "Email": email,
                        "Telefon raqam": phone,
                        "Sertifikat manzili": certificate_link,
                        "Sertifikat olingan vaqt": sertifikat_vaqt
                    }
                    existing_data.append(new_entry)
                    try:
                        save_data(existing_data)
                    except Exception as e:
                        st.error(f"Ma'lumotlarni saqlashda xatolik yuz berdi: {e}")
                    st.markdown(f"[{fish}ning sertifikat fayli]({certificate_link})")

                table = {
                    "F.I.SH": fish,
                    "Maqola mavzusi": maqola,
                    "Sho'ba": shuba,
                    "Email": email,
                    "Telefon raqam": phone,
                    "Sertifikat manzili": certificate_link,
                    "Sertifikat olingan vaqt": sertifikat_vaqt
                }
                with st.expander("Siz kiritgan ma'lumotlar bilan tanishing๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡"):
                    st.table(table)

                # Barcha ro'yxatdan o'tganlar ma'lumotlarini ko'rsatish
                df = pd.DataFrame(existing_data)
                with st.expander("Umumiy ro'yxat"):
                    # Telefon raqamlarni qisqartirib olish
                    df['Telefon raqam'] = df['Telefon raqam'].apply(lambda x: f"+998***{x[-4:]}")
                    st.dataframe(df)

            else:
                st.error(f"Xatolik nomi: {error_message}", icon='โŒ')
        elif taqsdiqlash and not rozilik:
            st.error("Ma'lumotlarni to'g'ri kiritilganligini tasdiqlang", icon='โœ…')

if __name__ == "__main__":
    asyncio.run(main())