Views
No views yet
c.execute('''CREATE TABLE IF NOT EXISTS tournaments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT, teams TEXT, matches TEXT, standings TEXT, status TEXT DEFAULT 'نشط')''')
c.execute('''CREATE TABLE IF NOT EXISTS registrations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tournament_id INTEGER, team_name TEXT, user_tg TEXT, nickname TEXT, logo TEXT)''')
c.execute('''CREATE TABLE IF NOT EXISTS results (
id INTEGER PRIMARY KEY AUTOINCREMENT,
tournament_id INTEGER, home_team TEXT, away_team TEXT, score TEXT,
home_goals INTEGER, away_goals INTEGER, screenshot TEXT, sender TEXT, date TEXT)''')
c.execute('''CREATE TABLE IF NOT EXISTS complaints (
id INTEGER PRIMARY KEY AUTOINCREMENT,
against_user TEXT, reason TEXT, evidence TEXT, sender TEXT, date TEXT, status TEXT DEFAULT 'جديد')''')
c.execute('''CREATE TABLE IF NOT EXISTS custom_sections (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT, content TEXT, type TEXT, created_at TEXT)''')
c.execute('''CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY, value TEXT)''')
# إضافة إعدادات الصيانة
c.execute('''CREATE TABLE IF NOT EXISTS maintenance (
id INTEGER PRIMARY KEY AUTOINCREMENT,
is_active INTEGER DEFAULT 0,
end_time TEXT,
created_by TEXT,
created_at TEXT)''')
conn.commit()
conn.close()if maint and maint[0] == 1:
if maint[1]:
end_time = datetime.fromisoformat(maint[1])
if datetime.now() > end_time:
# انتهت فترة الصيانة
end_maintenance()
return False
return True
return False<div class="tabs" id="mainTabs">
<button class="tab-btn active" data-tab="myLeagues">🏆 بطولاتي</button>
<button class="tab-btn" data-tab="register">📝 تسجيل نادي</button>
<button class="tab-btn" data-tab="teams">🌍 الفرق المسجلة</button>
<button class="tab-btn" data-tab="results">📸 إرسال نتيجة</button>
<button class="tab-btn" data-tab="complaint">📢 شكوى</button>
<button class="tab-btn" data-tab="budget">💰 الميزانية</button>
<button class="tab-btn" data-tab="custom">✨ أقسام مخصصة</button>
<button class="tab-btn" data-tab="dev">🔧 المطورين</button>
</div>
<div id="myLeagues" class="tab-content active"><div class="card"><div class="card-title">🏆 بطولاتي</div><div id="myLeaguesList"></div></div><div id="tournamentView"></div></div>
<div id="register" class="tab-content"><div class="card"><div class="card-title">📝 تسجيل نادي</div><select id="regTournament"></select><div id="teamsGrid" class="grid-teams"></div><div id="regForm"><input type="text" id="userTG" placeholder="يوزر تلجرام"><input type="text" id="nickname" placeholder="لقبك"><input type="text" id="teamLogo" placeholder="رابط شعار الفريق (اختياري)"><button onclick="registerTeam()">✅ تسجيل</button></div><div id="regMsg"></div></div></div>
<div id="teams" class="tab-content"><div class="card"><div class="card-title">🌍 الفرق المسجلة</div><div id="teamsList"></div></div></div>
<div id="results" class="tab-content"><div class="card"><div class="card-title">📸 إرسال نتيجة + سكرين شوت</div><select id="resultTournament"></select><select id="myTeamSelect"></select><input type="text" id="opponent" placeholder="الخصم"><input type="text" id="scoreInput" placeholder="النتيجة (2-1)"><input type="file" id="screenshotFile" accept="image/*"><div id="preview"></div><button onclick="sendResult()">📤 إرسال النتيجة</button><div id="resultMsg"></div></div></div>
<div id="complaint" class="tab-content"><div class="card"><div class="card-title">📢 تقديم شكوى</div><input type="text" id="againstUser" placeholder="يوزر الشخص المشكو في حقه"><textarea id="complaintReason" rows="3" placeholder="سبب الشكوى بالتفصيل"></textarea><input type="file" id="evidenceFile" accept="image/*"><div id="evidencePreview"></div><button onclick="submitComplaint()">📨 إرسال الشكوى</button><div id="complaintMsg"></div></div></div>
<div id="budget" class="tab-content"><div class="card"><div class="card-title">💰 ميزانية الأندية</div><div class="alert warning" style="text-align:center; font-size:1.5rem;">🛠️ قيد الصيانة والتطوير 🛠️<br>سيتم إضافة نظام الميزانية قريباً</div></div></div>
<div id="custom" class="tab-content"><div class="card"><div class="card-title">✨ أقسام مخصصة</div><div id="customSections"></div></div></div>
<div id="dev" class="tab-content"><div class="card"><div class="card-title">🔐 المطورين</div><input type="password" id="devPass" placeholder="كلمة السر"><button onclick="devLogin()">دخول</button><div id="devPanel" style="display:none;"><div class="card-title">⚙️ لوحة التحكم</div><div id="devNotifications" class="alert success"></div><hr><div class="card-title">🏆 إنشاء بطولة</div><input type="text" id="tourName" placeholder="اسم البطولة"><input type="number" id="teamCount" placeholder="عدد الفرق"><button onclick="showTeamsInput()">التالي</button><div id="teamsInput"></div><hr><div class="card-title">🔒 إغلاق الموقع مؤقتاً (للصيانة)</div><div class="alert warning">⚠️ تنبيه: عند تفعيل الصيانة، المستخدمين العاديين سيشاهدون "الموقع في صيانة" أما المطورين فسيتمكنون من الدخول والتعديل بشكل طبيعي</div><input type="number" id="maintenanceHours" placeholder="عدد ساعات الإغلاق"><button onclick="closeSite()">🔒 بدء الصيانة</button><button onclick="openSite()">🔓 إنهاء الصيانة</button><div id="maintenanceStatus"></div><hr><div class="card-title">📋 البطولات الحالية</div><div id="allTournaments"></div><hr><div class="card-title">📨 الشكاوى</div><div id="allComplaints"></div><hr><div class="card-title">📸 النتائج المرسلة</div><div id="allResults"></div><hr><div class="card-title">✨ إنشاء قسم مخصص</div><input type="text" id="sectionName" placeholder="اسم القسم"><textarea id="sectionContent" rows="3" placeholder="محتوى القسم (HTML)"></textarea><button onclick="createCustomSection()">إنشاء القسم</button><hr><button onclick="deleteAll()" style="background:#dc2626;">🗑️ حذف كل البطولات</button></div></div></div>check = c.execute('SELECT * FROM registrations WHERE tournament_id = ? AND team_name = ?',
(data['tournament_id'], data['team_name'])).fetchone()
if check:
conn.close()
return jsonify({'error': 'هذا الفريق محجوز'})
check2 = c.execute('SELECT * FROM registrations WHERE tournament_id = ? AND user_tg = ?',
(data['tournament_id'], data['user_tg'])).fetchone()
if check2:
conn.close()
return jsonify({'error': 'أنت مسجل بالفعل'})
c.execute('INSERT INTO registrations (tournament_id, team_name, user_tg, nickname, logo) VALUES (?, ?, ?, ?, ?)',
(data['tournament_id'], data['team_name'], data['user_tg'], data['nickname'], data.get('logo', '')))
conn.commit()
conn.close()
return jsonify({'success': True})c.execute('''INSERT INTO results (tournament_id, home_team, away_team, score, home_goals, away_goals, screenshot, sender, date)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)''',
(data['tournament_id'], data['home_team'], data['away_team'], data['score'],
data['home_goals'], data['away_goals'], data.get('screenshot'), data['sender'], datetime.now().isoformat()))
tour = c.execute('SELECT standings FROM tournaments WHERE id = ?', (data['tournament_id'],)).fetchone()
standings = json.loads(tour[0]) if tour[0] else {}
if data['home_team'] not in standings:
standings[data['home_team']] = {'team': data['home_team'], 'played': 0, 'win': 0, 'draw': 0, 'lose': 0, 'gf': 0, 'ga': 0, 'pts': 0}
if data['away_team'] not in standings:
standings[data['away_team']] = {'team': data['away_team'], 'played': 0, 'win': 0, 'draw': 0, 'lose': 0, 'gf': 0, 'ga': 0, 'pts': 0}
standings[data['home_team']]['gf'] += data['home_goals']
standings[data['home_team']]['ga'] += data['away_goals']
standings[data['away_team']]['gf'] += data['away_goals']
standings[data['away_team']]['ga'] += data['home_goals']
standings[data['home_team']]['played'] += 1
standings[data['away_team']]['played'] += 1
if data['home_goals'] > data['away_goals']:
standings[data['home_team']]['win'] += 1
standings[data['home_team']]['pts'] += 3
standings[data['away_team']]['lose'] += 1
elif data['home_goals'] < data['away_goals']:
standings[data['away_team']]['win'] += 1
standings[data['away_team']]['pts'] += 3
standings[data['home_team']]['lose'] += 1
else:
standings[data['home_team']]['draw'] += 1
standings[data['home_team']]['pts'] += 1
standings[data['away_team']]['draw'] += 1
standings[data['away_team']]['pts'] += 1
c.execute('UPDATE tournaments SET standings = ? WHERE id = ?', (json.dumps(standings), data['tournament_id']))
conn.commit()
conn.close()
return jsonify({'success': True})