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('این استاتوس اشتباه است'),
+1
View File
@@ -119,6 +119,7 @@ module.exports._sr = {
unauthenticated: 'غیرمجاز',
recovery_link: 'لینک بازیابی فرستاده شد',
success_save: 'با موفقیت ثبت شد',
success_update: 'با موفقیت ثبت شد',
success_remove: 'با موفقیت حذف شد',
cart_empty: 'سبد خرید خالی است',
already_has_address: 'آدرس قبلا اضافه شده',
+33 -42
View File
@@ -34,73 +34,68 @@ const awardRequest = require('../controllers/GPS.AwardRequest')
const userGPS = require('../controllers/GPS.User')
const renewal = require('../controllers/GPS.Renewal')
/// //////////////////////////////////////////////////////// routes
/// ///////////////////////////// GPS
/// /////////////// Renewal
router.get('/gps/renew',hasPermission('gps'), renewal.findAllAdmin)
router.get('/gps/renew', hasPermission('gps'), renewal.findAllAdmin)
/// /////////////// User
router.get('/gps/users',hasPermission('gps'), userGPS.getUsersForAdmin)
router.get('/gps/users/pending',hasPermission('gps'), userGPS.getPendingUsersForAdmin)
router.get('/gps/users/:id',hasPermission('gps'), userGPS.getUserForAdmin)
router.post('/gps/users',hasPermission('gps'), userGPS.addUserByAdmin)
router.patch('/gps/users/:id/:status',hasPermission('gps'), userGPS.activeUser)
router.get('/gps/users', hasPermission('gps'), userGPS.getUsersForAdmin)
router.get('/gps/users/pending', hasPermission('gps'), userGPS.getPendingUsersForAdmin)
router.get('/gps/users/:id', hasPermission('gps'), userGPS.getUserForAdmin)
router.put('/gps/users/:id', hasPermission('gps'), userGPS.updateUserByAdmin)
router.post('/gps/users', hasPermission('gps'), userGPS.addUserByAdmin)
router.patch('/gps/users/:id/:status', hasPermission('gps'), userGPS.activeUser)
/// ////////////// Award
router.post('/gps/award',hasPermission('gps'), award.createAward)
router.get('/gps/award',hasPermission('gps'), award.findAllAdmin)
router.get('/gps/award/:id',hasPermission('gps'), award.findOne)
router.put('/gps/award/:id',hasPermission('gps'), award.update)
router.delete('/gps/award/:id',hasPermission('gps'), award.delete)
router.post('/gps/award', hasPermission('gps'), award.createAward)
router.get('/gps/award', hasPermission('gps'), award.findAllAdmin)
router.get('/gps/award/:id', hasPermission('gps'), award.findOne)
router.put('/gps/award/:id', hasPermission('gps'), award.update)
router.delete('/gps/award/:id', hasPermission('gps'), award.delete)
/// ////////////// Award request
router.get('/gps/award-request',hasPermission('gps'), awardRequest.findAllAdmin)
router.get('/gps/award-request/:id',hasPermission('gps'), awardRequest.findOne)
router.put('/gps/award-request/:id',hasPermission('gps'), awardRequest.update)
router.get('/gps/award-request', hasPermission('gps'), awardRequest.findAllAdmin)
router.get('/gps/award-request/:id', hasPermission('gps'), awardRequest.findOne)
router.put('/gps/award-request/:id', hasPermission('gps'), awardRequest.update)
/// ////////////// Withdraw
router.get('/gps/withdraw',hasPermission('gps'), withdraw.getAllForAdmin)
router.patch('/gps/withdraw/:id/:type',hasPermission('gps'), withdraw.updateReq)
router.get('/gps/withdraw', hasPermission('gps'), withdraw.getAllForAdmin)
router.patch('/gps/withdraw/:id/:type', hasPermission('gps'), withdraw.updateReq)
/// ////////////// Installed device
router.patch('/gps/register-device/:id/:type', installedDevice.updateInstalled)
router.get('/gps/register-device', installedDevice.getAllForAdmin)
/// ////////////// Device
router.post('/gps/device',hasPermission('gps'), device.addCode)
router.post('/gps/device/exel',hasPermission('gps'), device.importExel)
router.get('/gps/device/exel',hasPermission('gps'), device.downloadAll)
router.get('/gps/device',hasPermission('gps'), device.getAll)
router.get('/gps/device/imei/:imei',hasPermission('gps'), device.getOneByIMEI)
router.get('/gps/device/id/:id',hasPermission('gps'), device.getOne)
router.put('/gps/device/:id',hasPermission('gps'), device.updateDevice)
router.post('/gps/device', hasPermission('gps'), device.addCode)
router.post('/gps/device/exel', hasPermission('gps'), device.importExel)
router.get('/gps/device/exel', hasPermission('gps'), device.downloadAll)
router.get('/gps/device', hasPermission('gps'), device.getAll)
router.get('/gps/device/imei/:imei', hasPermission('gps'), device.getOneByIMEI)
router.get('/gps/device/id/:id', hasPermission('gps'), device.getOne)
router.put('/gps/device/:id', hasPermission('gps'), device.updateDevice)
/// /////////////////////////////////////////////////////////
/// ///////////// survey
router.get('/surveys',hasPermission('surveys'), surveyController.getAllForAdmin)
router.get('/surveys/:id',hasPermission('surveys'), surveyController.getOneForAdmin)
router.get('/surveys', hasPermission('surveys'), surveyController.getAllForAdmin)
router.get('/surveys/:id', hasPermission('surveys'), surveyController.getOneForAdmin)
/// ///////////// Brand
router.post('/brand',hasPermission('brands'), brandController.createbrand)
router.get('/brand/:id',hasPermission('brands'), brandController.getbrand)
router.put('/brand/:id',hasPermission('brands'), brandController.updatebrand)
router.delete('/brand/:id',hasPermission('brands'), brandController.deletebrand)
router.post('/brand', hasPermission('brands'), brandController.createbrand)
router.get('/brand/:id', hasPermission('brands'), brandController.getbrand)
router.put('/brand/:id', hasPermission('brands'), brandController.updatebrand)
router.delete('/brand/:id', hasPermission('brands'), brandController.deletebrand)
/// ///////////// Complaint
router.get('/complaint',hasPermission('complaint'), complaintController.getsComplaint)
router.get('/complaint/:id',hasPermission('complaint'), complaintController.get)
router.put('/complaint/:id',hasPermission('apply'), complaintController.put)
router.get('/complaint', hasPermission('complaint'), complaintController.getsComplaint)
router.get('/complaint/:id', hasPermission('complaint'), complaintController.get)
router.put('/complaint/:id', hasPermission('apply'), complaintController.put)
/// ///////////// warranty terms
router.post('/warranty', hasPermission('warranty-terms'), warrantyTermsController.create)
@@ -164,7 +159,6 @@ router.put('/user/changePanatechInfo/:id', hasPermission('customers'), userContr
router.put('/user/update/:id', hasPermission('customers'), userController.update_user_by_admin)
router.post('/user', hasPermission('customers'), userController.add_user)
/// ///////////// serials exel file
router.post('/addExel', hasPermission('serials-exel'), serialsExelController.addExel)
router.delete('/removeExel/:name', hasPermission('serials-exel'), serialsExelController.removeExel)
@@ -266,7 +260,4 @@ router.get('/smsBroadcasts', hasPermission('sms'), smsBroadcastController.getAll
router.get('/smsBroadcasts/:id', hasPermission('sms'), smsBroadcastController.getOneForAdmin)
router.get('/usersForSMS', hasPermission('sms'), userController.get_all_users_for_admin)
module.exports = router