const Note = require('../Models/Note'); const Category = require('../Models/Category'); const jwt = require('jsonwebtoken'); // NoteController - จัดการ Logic การทำงานของโน้ต class NoteController { // แสดงหน้าแรกที่มีโน้ตทั้งหมด static async index(req, res) { // ดึงข้อมูลโน้ตทั้งหมด Note.getAll((err, notes) => { if (err) { console.log(err); return res.status(500).send('เกิดข้อผิดพลาดในการดึงข้อมูล'); } // ดึงข้อมูล categories สำหรับ dropdown Category.getAll((err, categories) => { if (err) { console.log(err); return res.status(500).send('เกิดข้อผิดพลาดในการดึงข้อมูล'); } // ส่งข้อมูลไปแสดงที่หน้า dashboard res.render('dashboard', { data: notes, categories: categories, user: req.user }); }); }); } // Get all notes (API) static apiIndex(req, res) { Note.getAll((err, notes) => { if (err) { console.log(err); return res.status(500).json({ error: 'Database error' }); } res.json(notes); }); } // สร้างโน้ตใหม่ static create(req, res) { // เตรียมข้อมูลจากฟอร์ม const noteData = { title: req.body.title, content: req.body.content, userId: req.user.id, // ได้จาก middleware authentication categoryId: req.body.category_id || null }; // บันทึกลงฐานข้อมูล Note.create(noteData, (err, result) => { if (err) { console.log(err); return res.status(500).send('เกิดข้อผิดพลาดในการบันทึกโน้ต'); } // กลับไปหน้า dashboard เมื่อบันทึกสำเร็จ res.redirect('/dashboard'); }); } // Create a new note (API) static apiCreate(req, res) { const noteData = { title: req.body.title, content: req.body.content, userId: req.user.id, categoryId: req.body.category_id || null }; Note.create(noteData, (err, result) => { if (err) { console.log(err); return res.status(500).json({ error: 'Failed to create note' }); } res.status(201).json(result); }); } // อัพเดทโน้ต static update(req, res) { console.log('ข้อมูลที่ส่งมา:', req.body); // ตรวจสอบว่ามี note_id หรือไม่ const id = req.body.note_id; if (!id) { console.log('ไม่พบ note_id'); return res.status(400).json({ error: 'ต้องระบุ Note ID' }); } // เตรียมข้อมูลสำหรับอัพเดท const noteData = { title: req.body.title, content: req.body.content, categoryId: req.body.category_id || null }; console.log('ข้อมูลที่จะอัพเดท:', { id, noteData }); // อัพเดทลงฐานข้อมูล Note.update(id, noteData, (err, result) => { if (err) { console.log('เกิดข้อผิดพลาดในการอัพเดท:', err); return res.status(500).json({ error: 'เกิดข้อผิดพลาดในการอัพเดทโน้ต', details: err.message }); } console.log('อัพเดทสำเร็จ:', result); res.json({ success: true, message: 'อัพเดทโน้ตสำเร็จ' }); }); } // Update a note (API) static apiUpdate(req, res) { const id = req.params.id; const noteData = { title: req.body.title, content: req.body.content, categoryId: req.body.category_id || null }; Note.update(id, noteData, (err, result) => { if (err) { console.log(err); return res.status(500).json({ error: 'Failed to update note' }); } res.json(result); }); } // ลบโน้ต static delete(req, res) { const id = req.params.id; Note.delete(id, (err, result) => { if (err) { console.log(err); return res.status(500).send('เกิดข้อผิดพลาดในการลบโน้ต'); } res.redirect('/dashboard'); }); } // Delete a note (API) static apiDelete(req, res) { const id = req.params.id; Note.delete(id, (err, result) => { if (err) { console.log(err); return res.status(500).json({ error: 'Failed to delete note' }); } res.json(result); }); } // Search notes by title or content (web) static search(req, res) { const searchTerm = req.query.searchTerm; if (!searchTerm) { return res.redirect('/dashboard'); } Note.search(searchTerm, (err, notes) => { if (err) { console.log(err); return res.status(500).send('Database error'); } Category.getAll((err, categories) => { if (err) { console.log(err); return res.status(500).send('Database error'); } res.render('dashboard', { data: notes, categories: categories, searchTerm: searchTerm, user: req.user }); }); }); } // แสดงโน้ตของผู้ใช้ที่ล็อกอินอยู่ static myNotes(req, res) { const userId = req.user.id; // ดึงโน้ตของผู้ใช้ Note.getByUserId(userId, (err, notes) => { if (err) { console.log(err); return res.status(500).send('เกิดข้อผิดพลาดในการดึงข้อมูล'); } // ดึง categories สำหรับ dropdown Category.getAll((err, categories) => { if (err) { console.log(err); return res.status(500).send('เกิดข้อผิดพลาดในการดึงข้อมูล'); } res.render('dashboard', { data: notes, categories: categories, myNotes: true, user: req.user }); }); }); } } module.exports = NoteController;