Spaces:
Running
Running
File size: 2,158 Bytes
4baa7c7 | 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 | const User = require('../models/userModel');
//address functions
exports.addAddress = async (req, res) => {
try {
const user = await User.findByIdAndUpdate(
req.user.id,
{ $push: { addresses: req.body } },
{ new: true },
);
// Get the newly added address (last item in array)
const newAddress = user.addresses[user.addresses.length - 1];
res.status(201).json({
status: 'success',
message: 'Address added successfully',
address: newAddress,
});
} catch (err) {
res.status(500).json({ status: 'error', error: err.message });
}
};
exports.getAddresses = async (req, res) => {
try {
const user = await User.findById(req.user.id).select('addresses').lean();
res.json({
status: 'success',
addresses: user.addresses || [],
});
} catch (err) {
res.status(500).json({ status: 'error', error: err.message });
}
};
exports.updateAddress = async (req, res) => {
try {
const user = await User.findOneAndUpdate(
{ _id: req.user.id, 'addresses._id': req.params.id },
{ $set: { 'addresses.$': { ...req.body, _id: req.params.id } } },
{ new: true },
);
if (!user) {
return res.status(404).json({
status: 'error',
message: 'Address not found',
});
}
const updatedAddress = user.addresses.find(
(addr) => addr._id.toString() === req.params.id,
);
res.json({
status: 'success',
message: 'Address updated successfully',
address: updatedAddress,
});
} catch (err) {
res.status(500).json({ status: 'error', error: err.message });
}
};
exports.deleteAddress = async (req, res) => {
try {
const user = await User.findByIdAndUpdate(
req.user.id,
{ $pull: { addresses: { _id: req.params.id } } },
{ new: true },
);
if (!user) {
return res.status(404).json({
status: 'error',
message: 'User not found',
});
}
res.json({
status: 'success',
message: 'Address deleted successfully',
});
} catch (err) {
res.status(500).json({ status: 'error', error: err.message });
}
};
|