add user edit for admin

This commit is contained in:
mahyargdz
2024-12-31 16:14:08 +03:30
parent 27e27a9eb7
commit 7203e27762
3 changed files with 137 additions and 42 deletions
+103
View File
@@ -361,6 +361,109 @@ module.exports.getUserForAdmin = async (req, res) => {
}
}
module.exports.updateUserByAdmin = [
[
body('first_name')
.optional()
.notEmpty()
.withMessage(_faSr.required.first_name)
.bail()
.isLength({ min: 2 })
.withMessage(_faSr.min_char.min2)
.bail()
.custom((value, { req }) => {
if (removeWhiteSpaces(value).length < 2) return Promise.reject(_faSr.min_char.min2)
if (!isPersian(value)) return Promise.reject(new Error('لطفا با حروف فارسی تایپ کنید'))
else return true
}),
body('last_name')
.optional()
.notEmpty()
.withMessage(_faSr.required.last_name)
.bail()
.isLength({ min: 2 })
.withMessage(_faSr.min_char.min2)
.bail()
.custom((value, { req }) => {
if (removeWhiteSpaces(value).length < 2) return Promise.reject(_faSr.min_char.min2)
if (!isPersian(value)) return Promise.reject(new Error('لطفا با حروف فارسی تایپ کنید'))
else return true
}),
body('national_code')
.optional()
.notEmpty()
.withMessage(_faSr.required.national_code)
.bail()
.custom((value, { req }) => {
if (checkNationalCode(value)) return true
else return Promise.reject(_faSr.format.national_code)
})
.bail()
.custom((value, { req }) => {
const nationalCode = value.trim()
return User.findOne({ national_code: nationalCode, _id: { $ne: req.params.id } }).then(user => {
if (user && user.national_code === nationalCode)
return Promise.reject(new Error('کاربر با این کد ملی از قبل وجود دارد'))
else return true
})
}),
body('shopName').optional().notEmpty().withMessage(_faSr.required.address),
body('mobile_number')
.optional()
.notEmpty()
.withMessage(_faSr.required.phone_number)
.bail()
.custom((value, { req }) => {
const mobileNStatus = checkMobileNumber(value)
if (!mobileNStatus) return Promise.reject(_faSr.format.phone_number)
else return Promise.resolve()
})
.bail()
.custom((value, { req }) => {
const mobileNumber = value.trim()
return User.findOne({ mobile_number: mobileNumber, _id: { $ne: req.params.id } }).then(user => {
if (user && user.mobile_number === mobileNumber)
return Promise.reject(new Error('کاربر با این شماره موبایل از قبل وجود دارد'))
else return true
})
}),
body('cell_number').optional().notEmpty().withMessage(_faSr.required.phone_number).bail(),
body('birthDate').optional().notEmpty().withMessage(_faSr.required.birthdate).bail(),
body('address').optional().notEmpty().withMessage(_faSr.required.address).bail()
],
checkValidations(validationResult),
async (req, res) => {
try {
const { first_name, last_name, national_code, mobile_number, shopName, birthDate, address, cell_number } =
req.body
const data = {
first_name: nameOptimizer(first_name),
last_name,
national_code: national_code.trim(),
mobile_number: normalizeMobileNumber(mobile_number),
shopName,
birthDate,
address,
cell_number
}
// const existMobile = await User.findOne({ mobile_number, _id: { $ne: req.params.id } })
// if (existMobile) return res.status(400).json({ msg: 'این شماره موبایل قبلا ثبت شده است' })
const updateUser = await User.findByIdAndUpdate(req.params.id, data, { new: true })
if (!updateUser) return res.status(404).json({ msg: _sr.fa.not_found.user_id })
return res.status(200).json({ message: _faSr.response.success_update, user: updateUser })
} catch (error) {
const registerFailurMsg = 'مشکلی پیش آمده، لطفا مجددا تلاش کنید'
res500(res, registerFailurMsg)
}
}
]
module.exports.activeUser = [
[
param('status').notEmpty().isBoolean().withMessage('این استاتوس اشتباه است'),