Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 2x 2x 2x 2x | // Member controller
const Member = require("../models/Member");
const Borrowing = require("../models/Borrowing");
const MemberController = {
async getAll(req, res) {
try {
const members = await Member.getAll();
res.json(members);
} catch (error) {
res.status(500).json({ error: error.message });
}
},
async getById(req, res) {
try {
const { id } = req.params;
const member = await Member.findById(id);
if (!member) {
return res.status(404).json({ error: "Member not found" });
}
// Get borrowing count
const borrowCount = await Member.getBorrowingCount(id);
member.borrowingCount = borrowCount;
// Get current borrowing records
const borrowRecords = await Borrowing.getByMember(id);
member.borrowingRecords = borrowRecords;
res.json(member);
} catch (error) {
res.status(500).json({ error: error.message });
}
},
async create(req, res) {
try {
const { memberCode, fullName, email, phone, memberType, maxBooks } =
req.body;
if (!memberCode || !fullName || !memberType) {
return res.status(400).json({
error: "Member code, full name, and member type are required",
});
}
// Check for duplicate member code
const existingMember = await Member.findByCode(memberCode);
if (existingMember) {
return res.status(400).json({ error: "Member code already exists" });
}
const result = await Member.create(
memberCode,
fullName,
email || null,
phone || null,
memberType,
maxBooks || 3,
);
res.status(201).json({
success: true,
member_id: result.lastID,
});
} catch (error) {
res.status(500).json({ error: error.message });
}
},
async update(req, res) {
try {
const { id } = req.params;
const { fullName, email, phone, memberType, status, maxBooks } = req.body;
const member = await Member.findById(id);
if (!member) {
return res.status(404).json({ error: "Member not found" });
}
if (!fullName || !memberType || !status) {
return res
.status(400)
.json({ error: "Full name, member type, and status are required" });
}
await Member.update(
id,
fullName,
email || null,
phone || null,
memberType,
status,
maxBooks || 3,
);
res.json({ success: true });
} catch (error) {
res.status(500).json({ error: error.message });
}
},
async delete(req, res) {
try {
const { id } = req.params;
const member = await Member.findById(id);
if (!member) {
return res.status(404).json({ error: "Member not found" });
}
// Check if member has unreturned books
const borrowCount = await Member.getBorrowingCount(id);
if (borrowCount > 0) {
return res
.status(400)
.json({ error: "Cannot delete member with unreturned books" });
}
await Member.delete(id);
res.json({ success: true });
} catch (error) {
res.status(500).json({ error: error.message });
}
},
};
module.exports = MemberController;
|