diff --git "a/\360\235\223\221\360\235\223\252\360\235\223\274\360\235\223\256\360\235\223\265 \360\235\223\241\360\235\223\252\360\235\223\256\360\235\223\255" "b/\360\235\223\221\360\235\223\252\360\235\223\274\360\235\223\256\360\235\223\265 \360\235\223\241\360\235\223\252\360\235\223\256\360\235\223\255" new file mode 100644 index 000000000..1e5bad223 --- /dev/null +++ "b/\360\235\223\221\360\235\223\252\360\235\223\274\360\235\223\256\360\235\223\265 \360\235\223\241\360\235\223\252\360\235\223\256\360\235\223\255" @@ -0,0 +1,122 @@ +const express = require('express'); +const bodyParser = require('body-parser'); +const session = require('express-session'); +const sqlite3 = require('sqlite3').verbose(); + +const app = express(); +app.use(bodyParser.urlencoded({ extended: true })); +app.use(session({ secret: 'secret123', resave: false, saveUninitialized: true })); + +// قاعدة بيانات SQLite +const db = new sqlite3.Database(':memory:'); // مؤقت، احفظ البيانات لاحقاً في ملف + +db.serialize(() => { + db.run(`CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + national_id TEXT UNIQUE, + password TEXT, + role TEXT, + salary REAL DEFAULT 0 + )`); + + db.run(`CREATE TABLE IF NOT EXISTS requests ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER, + type TEXT, + description TEXT, + status TEXT DEFAULT 'pending', + FOREIGN KEY(user_id) REFERENCES users(id) + )`); + + // إضافة مدير افتراضي + db.run(`INSERT INTO users(national_id,password,role,salary) VALUES('0001','admin','manager',0)`); +}); + +// صفحة تسجيل الدخول +app.get('/', (req,res) => { + res.send(` +

تسجيل الدخول

+
+
+
+ +
+ `); +}); + +// تسجيل الدخول +app.post('/login', (req,res) => { + const { national_id, password } = req.body; + db.get(`SELECT * FROM users WHERE national_id=? AND password=?`, [national_id,password], (err,user) => { + if(user){ + req.session.user = user; + res.redirect(user.role==='manager'?'/manager':'/dashboard'); + }else res.send('رقم الهويه أو كلمة المرور خاطئة'); + }); +}); + +// صفحة الموظف +app.get('/dashboard', (req,res)=>{ + if(!req.session.user || req.session.user.role==='manager') return res.redirect('/'); + res.send(` +

مرحباً ${req.session.user.national_id}

+

الراتب: ${req.session.user.salary} ريال

+ +

إرسال طلب

+
+
+
+ +
+ `); +}); + +// إرسال الطلب +app.post('/request', (req,res)=>{ + const { type, description } = req.body; + db.run(`INSERT INTO requests(user_id,type,description) VALUES(?,?,?)`, + [req.session.user.id, type, description], ()=> res.redirect('/dashboard')); +}); + +// صفحة المدير +app.get('/manager', (req,res)=>{ + if(!req.session.user || req.session.user.role!=='manager') return res.send('غير مسموح'); + + db.all(`SELECT r.id, u.national_id, r.type, r.description, r.status FROM requests r JOIN users u ON r.user_id=u.id`, [], (err, requests)=>{ + let html = '

صفحة المدير

'; + + // إضافة موظف + html += `

اضافة موظف

+
+
+
+
+ +
`; + + html += '

الطلبات

'; + res.send(html); + }); +}); + +// إضافة موظف +app.post('/add-user', (req,res)=>{ + const { national_id, password, salary } = req.body; + db.run(`INSERT INTO users(national_id,password,role,salary) VALUES(?,?,?,?)`, + [national_id,password,'employee',salary], ()=> res.redirect('/manager')); +}); + +// اعتماد الطلب +app.get('/approve/:id', (req,res)=>{ + db.run(`UPDATE requests SET status='approved' WHERE id=?`, [req.params.id], ()=> res.redirect('/manager')); +}); + +app.listen(3000, ()=>console.log('Server running on http://localhost:3000'));