// ============================================ // BRIAN SCHOOL RESULTS MANAGEMENT SYSTEM // Auto Seed Database // ============================================ import { db } from './firebase-config.js'; import { doc, getDoc, setDoc, addDoc, collection, serverTimestamp } from "https://www.gstatic.com/firebasejs/12.19.0/firebase-firestore.js"; export const SUBJECT_GRADES = [ { grade: 'A', min: 40.5, max: 50, remark: 'Excellent' }, { grade: 'B', min: 30.5, max: 40, remark: 'Very Good' }, { grade: 'C', min: 20.5, max: 30, remark: 'Good' }, { grade: 'D', min: 10.5, max: 20, remark: 'Satisfactory' }, { grade: 'E', min: 0, max: 10, remark: 'Fail' } ]; export const TOTAL_GRADES = [ { grade: 'A', min: 243, max: 300, division: 'I', remark: 'Excellent' }, { grade: 'B', min: 183, max: 242, division: 'II', remark: 'Very Good' }, { grade: 'C', min: 123, max: 182, division: 'III', remark: 'Good' }, { grade: 'D', min: 63, max: 122, division: 'IV', remark: 'Satisfactory' }, { grade: 'E', min: 0, max: 62, division: '0', remark: 'Fail' } ]; export const SUBJECTS = [ { code: 'MATH', name: 'Mathematics', order: 1, active: true }, { code: 'ENG', name: 'English', order: 2, active: true }, { code: 'KIS', name: 'Kiswahili', order: 3, active: true }, { code: 'SCI', name: 'Science and Technology', order: 4, active: true }, { code: 'SOC', name: 'Social Studies', order: 5, active: true }, { code: 'CIV', name: 'Civic and Moral Education', order: 6, active: true } ]; export const CLASSES = [ { code: 'STD1', name: 'Standard One', order: 1 }, { code: 'STD2', name: 'Standard Two', order: 2 }, { code: 'STD3', name: 'Standard Three', order: 3 }, { code: 'STD4', name: 'Standard Four', order: 4 }, { code: 'STD5', name: 'Standard Five', order: 5 }, { code: 'STD6', name: 'Standard Six', order: 6 }, { code: 'STD7', name: 'Standard Seven', order: 7 } ]; export const STREAMS = [ { code: 'A', name: 'Stream A', order: 1 }, { code: 'B', name: 'Stream B', order: 2 } ]; export async function seedDatabase(adminUid, adminEmail, adminName) { adminName = adminName || 'Brian Admin'; try { var schoolRef = doc(db, 'settings', 'school'); var schoolSnap = await getDoc(schoolRef); if (schoolSnap.exists()) { console.log('Database imesha-seedwa tayari.'); return { seeded: false, message: 'Tayari imeseedwa' }; } console.log('Inaanza kuunda database...'); await setDoc(schoolRef, { schoolName: 'Brian Primary School', schoolCode: 'BPS', region: 'Dar es Salaam', district: 'Kinondoni', emisCode: 'PS0101001', academicYear: '2026', schoolMotto: 'Elimu ni Ufunguo wa Maisha', headTeacher: adminName, phone: '+255 700 000 000', email: adminEmail, address: 'S.L.P 123, Dar es Salaam', examTitle: 'Mtihani wa Muhula wa Kwanza 2026', passMark: 20.5, reportFooter: 'Hii ni ripoti ya shule - sio NECTA', logoUrl: '', createdAt: serverTimestamp() }); console.log('settings/school OK'); await setDoc(doc(db, 'settings', 'subjectGrades'), { grades: SUBJECT_GRADES, updatedAt: serverTimestamp() }); console.log('settings/subjectGrades OK'); await setDoc(doc(db, 'settings', 'totalGrades'), { grades: TOTAL_GRADES, updatedAt: serverTimestamp() }); console.log('settings/totalGrades OK'); await setDoc(doc(db, 'settings', 'subjects'), { list: SUBJECTS, updatedAt: serverTimestamp() }); console.log('settings/subjects OK'); await setDoc(doc(db, 'settings', 'classes'), { list: CLASSES, updatedAt: serverTimestamp() }); console.log('settings/classes OK'); await setDoc(doc(db, 'settings', 'streams'), { list: STREAMS, updatedAt: serverTimestamp() }); console.log('settings/streams OK'); await setDoc(doc(db, 'users', adminUid), { name: adminName, email: adminEmail, role: 'superadmin', active: true, createdAt: serverTimestamp() }); console.log('users OK'); await addDoc(collection(db, 'activity_logs'), { uid: adminUid, email: adminEmail, action: 'database_seeded', details: 'Database created automatically', timestamp: serverTimestamp() }); console.log('Database imekamilika!'); return { seeded: true, message: 'Database imeundwa kikamilifu' }; } catch (err) { console.error('Seed error:', err); throw err; } } export async function loadSettings() { var results = await Promise.all([ getDoc(doc(db, 'settings', 'school')), getDoc(doc(db, 'settings', 'subjectGrades')), getDoc(doc(db, 'settings', 'totalGrades')), getDoc(doc(db, 'settings', 'subjects')), Dashboard - Brian School Results

Inapakia dashboard...