modified: controllers/application/academy/academyCategoryController.js

modified:   controllers/application/academy/academyControllers.js
	modified:   controllers/application/academy/helpers/chatHelpers.js
	modified:   controllers/application/academy/middlewares/404.js
	modified:   controllers/application/academy/middlewares/adminAuth.js
	modified:   controllers/application/academy/middlewares/auth.js
	modified:   controllers/application/academy/middlewares/blockCheck.js
	modified:   controllers/application/academy/middlewares/exception.js
	modified:   controllers/application/academy/middlewares/index.js
	modified:   controllers/application/academy/middlewares/isHalfRegister.js
	modified:   controllers/application/academy/middlewares/isRegister.js
	modified:   controllers/application/academy/middlewares/lastOnline.js
	modified:   controllers/application/academy/middlewares/upload.js
	modified:   controllers/application/academy/models/AcademyCategoryModel.js
	modified:   controllers/application/academy/models/AcademyContentModel.js
	modified:   controllers/application/academy/models/AcademyLikeModel.js
	modified:   controllers/application/academy/models/AcademyModel.js
	modified:   controllers/application/academy/models/AcademyPaymentModel.js
	modified:   controllers/application/academy/models/AdminModel.js
	modified:   controllers/application/academy/models/AdvertisingCategoryModel.js
	modified:   controllers/application/academy/models/AdvertisingCommentModel.js
	modified:   controllers/application/academy/models/AdvertisingFeaturesModel.js
	modified:   controllers/application/academy/models/AdvertisingLikeModel.js
	modified:   controllers/application/academy/models/AdvertisingModel.js
	modified:   controllers/application/academy/models/AdvertisingProfile.js
	modified:   controllers/application/academy/models/AdvertisingRatingModel.js
	modified:   controllers/application/academy/models/AdvertisingTypeModel.js
	modified:   controllers/application/academy/models/CommentModel.js
	modified:   controllers/application/academy/models/CourseComentModel.js
	modified:   controllers/application/academy/models/CourseModel.js
	modified:   controllers/application/academy/models/CoursePaymentModel.js
	modified:   controllers/application/academy/models/ExpertiseModel.js
	modified:   controllers/application/academy/models/IsPaymentCourseModel.js
	modified:   controllers/application/academy/models/LikeModel.js
	modified:   controllers/application/academy/models/MessageModel.js
	modified:   controllers/application/academy/models/NotificationModel.js
	modified:   controllers/application/academy/models/OfferModel.js
	modified:   controllers/application/academy/models/OfferTypeModel.js
	modified:   controllers/application/academy/models/PaymentModel.js
	modified:   controllers/application/academy/models/PostModel.js
	modified:   controllers/application/academy/models/ProjectModel.js
	modified:   controllers/application/academy/models/RequestModel.js
	modified:   controllers/application/academy/models/SettingsModel.js
	modified:   controllers/application/academy/models/StateCity.js
	modified:   controllers/application/academy/models/TaxModel.js
	modified:   controllers/application/academy/models/TicketMessageModel.js
	modified:   controllers/application/academy/models/TicketModel.js
	modified:   controllers/application/academy/models/TypeAndPriceModel.js
	modified:   controllers/application/academy/models/UserModel.js
	modified:   controllers/application/academy/models/VersionModel.js
	modified:   controllers/application/academy/models/license.js
	modified:   controllers/application/advertising/advertisingController.js
	modified:   controllers/application/citysController.js
	modified:   controllers/application/expertise/expertiseController.js
	modified:   controllers/application/financial/financialController.js
	modified:   controllers/application/login/changePasswordController.js
	modified:   controllers/application/login/loginController.js
	modified:   controllers/application/login/loginWithUserName.js
	modified:   controllers/application/login/verifyController.js
	modified:   controllers/application/messages/messageController.js
	modified:   controllers/application/notification/notificationController.js
	modified:   controllers/application/offer/offerController.js
	modified:   controllers/application/payment/paymentController.js
	modified:   controllers/application/payment/paymentControllerWeb.js
	modified:   controllers/application/posts/likeController.js
	modified:   controllers/application/posts/postController.js
	modified:   controllers/application/profile/profileController.js
	modified:   controllers/application/projects/createProjectController.js
	modified:   controllers/application/projects/getProjectController.js
	modified:   controllers/application/projects/projectTypesController.js
	modified:   controllers/application/projects/requestProjectController.js
	modified:   controllers/application/projects/updateProjectController.js
	modified:   controllers/application/provincesController.js
	modified:   controllers/application/register/registerController.js
	modified:   controllers/application/register/userFullNameController.js
	modified:   controllers/application/register/userTypeController.js
	modified:   controllers/application/register/usernameController.js
	modified:   controllers/application/register/verifyController.js
	modified:   controllers/application/search-web/searchController.js
	modified:   controllers/application/search/searchController.js
	modified:   controllers/application/settings/settingsController.js
	modified:   controllers/application/tickets/ticketsController.js
	modified:   controllers/application/users/getUserController.js
	modified:   controllers/application/verify/addressController.js
	modified:   controllers/application/verify/authController.js
	modified:   controllers/application/verify/colorsController.js
	modified:   controllers/application/verify/conversationController.js
	modified:   controllers/application/verify/cooperationTypeController.js
	modified:   controllers/application/verify/expertiseController.js
	modified:   controllers/application/verify/genderController.js
	modified:   controllers/application/verify/servicesController.js
	modified:   controllers/application/verify/setNationalCardImageController.js
	modified:   controllers/application/verify/setProfileImageController.js
	modified:   controllers/application/verify/sizesController.js
	modified:   controllers/application/version/versionController.js
	modified:   controllers/application/workroom/workroomController.js
	modified:   controllers/panel/advertising/academyCategoryController.js
	modified:   controllers/panel/advertising/advertisingController.js
	modified:   controllers/panel/comments/advertisingCommentController.js
	modified:   controllers/panel/comments/commentController.js
	modified:   controllers/panel/expertise/expertiseController.js
	modified:   controllers/panel/financial/financialController.js
	modified:   controllers/panel/login/loginController.js
	modified:   controllers/panel/posts/postController.js
	modified:   controllers/panel/projects/projectController.js
	modified:   controllers/panel/projects/projectTypesController.js
	modified:   controllers/panel/settings/settingsController.js
	modified:   controllers/panel/shops/shopsController.js
	modified:   controllers/panel/tickets/ticketsController.js
	modified:   controllers/panel/users/usersController.js
	modified:   controllers/panel/version/versionController.js
	modified:   helpers/chatHelpers.js
	modified:   index.js
	deleted:    logs/sms-irs/13-03-2024.log
	modified:   middlewares/404.js
	modified:   middlewares/adminAuth.js
	modified:   middlewares/auth.js
	modified:   middlewares/blockCheck.js
	modified:   middlewares/exception.js
	modified:   middlewares/index.js
	modified:   middlewares/isHalfRegister.js
	modified:   middlewares/isRegister.js
	modified:   middlewares/lastOnline.js
	modified:   middlewares/upload.js
	modified:   models/AcademyCategoryModel.js
	modified:   models/AcademyContentModel.js
	modified:   models/AcademyLikeModel.js
	modified:   models/AcademyModel.js
	modified:   models/AcademyPaymentModel.js
	modified:   models/AdminModel.js
	modified:   models/AdvertisingCategoryModel.js
	modified:   models/AdvertisingCommentModel.js
	modified:   models/AdvertisingFeaturesModel.js
	modified:   models/AdvertisingLikeModel.js
	modified:   models/AdvertisingModel.js
	modified:   models/AdvertisingProfile.js
	modified:   models/AdvertisingRatingModel.js
	modified:   models/AdvertisingTypeModel.js
	modified:   models/CommentModel.js
	modified:   models/CourseComentModel.js
	modified:   models/CourseModel.js
	modified:   models/CoursePaymentModel.js
	modified:   models/ExpertiseModel.js
	modified:   models/IsPaymentCourseModel.js
	modified:   models/LikeModel.js
	modified:   models/MessageModel.js
	modified:   models/NotificationModel.js
	modified:   models/OfferModel.js
	modified:   models/OfferTypeModel.js
	modified:   models/PaymentModel.js
	modified:   models/PostModel.js
	modified:   models/ProjectModel.js
	modified:   models/RequestModel.js
	modified:   models/SettingsModel.js
	modified:   models/StateCity.js
	modified:   models/TaxModel.js
	modified:   models/TicketMessageModel.js
	modified:   models/TicketModel.js
	modified:   models/TypeAndPriceModel.js
	modified:   models/UserModel.js
	modified:   models/VersionModel.js
	modified:   models/license.js
	modified:   routes/application/academy/index.js
	modified:   routes/application/advertising/index.js
	modified:   routes/application/city/index.js
	modified:   routes/application/expertise/index.js
	modified:   routes/application/financial/index.js
	modified:   routes/application/login/index.js
	modified:   routes/application/messages/index.js
	modified:   routes/application/notification/index.js
	modified:   routes/application/offers/index.js
	modified:   routes/application/posts/index.js
	modified:   routes/application/profile/index.js
	modified:   routes/application/projects/index.js
	modified:   routes/application/provinces/index.js
	modified:   routes/application/register/index.js
	modified:   routes/application/search-web/index.js
	modified:   routes/application/search/index.js
	modified:   routes/application/settings/index.js
	modified:   routes/application/tickets/index.js
	modified:   routes/application/users/index.js
	modified:   routes/application/verify/index.js
	modified:   routes/application/version/index.js
	modified:   routes/application/workroom/index.js
	modified:   routes/index.js
	modified:   routes/panel/advertising/index.js
	modified:   routes/panel/comments/index.js
	modified:   routes/panel/expertise/index.js
	modified:   routes/panel/financial/index.js
	modified:   routes/panel/login/index.js
	modified:   routes/panel/posts/index.js
	modified:   routes/panel/projects/index.js
	modified:   routes/panel/settings/index.js
	modified:   routes/panel/shops/index.js
	modified:   routes/panel/tickets/index.js
	modified:   routes/panel/users/index.js
	modified:   routes/panel/version/index.js
	modified:   scripts/dns/db.modstagram.com
	modified:   scripts/dns/db.modstagram.ir
	modified:   scripts/dns/named.conf.local.snippet
	modified:   scripts/nginx/api.modstagram.com.conf
	modified:   scripts/nginx/app.modstagram.com.conf
	modified:   scripts/nginx/blog.modstagram.com.conf
	modified:   scripts/nginx/cdn.modstagram.com.conf
	modified:   scripts/nginx/cdn.modstagram.com.http.conf
	modified:   scripts/nginx/modstagram-redirects.conf
	modified:   scripts/nginx/modstagram.com.conf
	modified:   scripts/nginx/panel.modstagram.com.conf
	modified:   scripts/nginx/pay.modstagram.com.conf
	modified:   scripts/server-setup.sh
	modified:   services/AdvertisingCron.js
	modified:   services/ProjectCron.js
	modified:   services/TokenService.js
	deleted:    storage/courses/videos/course-69f8b2da55f31efffa601c57-1778257437373.mp4
	deleted:    storage/courses/videos/course-69f8b2da55f31efffa601c57-1778257586892.mp4
	deleted:    storage/courses/videos/course-69f8b2da55f31efffa601c57-1778257829783.mp4
	deleted:    storage/courses/videos/course-69f8b2da55f31efffa601c57-1778257903018.mp4
	deleted:    storage/posts/videos/1766758940571-0-video_2025-05-21_16-30-58.mp4
	deleted:    storage/posts/videos/1766781626514-0-video_2025-05-21_16-30-58.mp4
	deleted:    storage/posts/videos/1766824222908-0-Find 'modeling videos' on TikTok - TikTok Search_7.mp4
	deleted:    storage/posts/videos/1766824281937-0-Find 'modeling videos' on TikTok - TikTok Search_6.mp4
	deleted:    storage/posts/videos/1766824360366-0-Find 'bridal makeup' on TikTok - TikTok Search_4.mp4
	deleted:    storage/posts/videos/1766824425868-0-Find 'Makeup' on TikTok - TikTok Search_25.mp4
	deleted:    storage/posts/videos/1766824503238-0-Find 'Makeup' on TikTok - TikTok Search.mp4
	deleted:    storage/posts/videos/1766824554864-0-Jalal.hafed (@jalal.hafed) Official.mp4
	deleted:    storage/posts/videos/1766824618322-0-Find 'Hairdressing' on TikTok - TikTok Search_3.mp4
	deleted:    storage/posts/videos/1766824689078-0-Find 'Beauty clinic' on TikTok - TikTok Search_22.mp4
	deleted:    storage/posts/videos/1766824721659-0-Find 'Beauty clinic' on TikTok - TikTok Search_13.mp4
	deleted:    storage/posts/videos/1766824796958-0-Find 'photography' on TikTok - TikTok Search_6.mp4
	deleted:    storage/posts/videos/1766825351987-0-aaaa.mp4
	deleted:    storage/posts/videos/1766825448136-0-sasasa.mp4
	deleted:    storage/posts/videos/1766825535111-0-qqq.mp4
	deleted:    "storage/posts/videos/1766825855902-0-Nail desin by Labella beauty salon\360\237\214\270\360\237\222\205\360\237\217\273  #nail #nailart #manicure #manicure\360\237\222\205 #salon #pedicure #labella.mp4"
	deleted:    storage/posts/videos/1766825905907-0-dsdsdsdsdsds.mp4
	deleted:    "storage/posts/videos/1766826114243-0-Every piece of jewelry tells a story\360\237\217\271  @mirjaliligold @mohseneh_b.mp4"
	deleted:    "storage/posts/videos/1766826180365-0-Romeo, save me\360\237\246\242.mp4"
	deleted:    storage/posts/videos/1766826458195-0-aaaaa.mp4
	deleted:    storage/posts/videos/1766826609640-0-asasa.mp4
	deleted:    storage/posts/videos/1766826685281-0-s.mp4
	deleted:    storage/posts/videos/1766826815345-0-asasa.mp4
	deleted:    storage/posts/videos/1766826842822-0-aaa.mp4
	deleted:    "storage/posts/videos/1766827337926-0-Snow, mountains, and me\342\200\246 a story that never gets old!  #backstage #stylish #snow #style#streetstyle.mp4"
	deleted:    "storage/posts/videos/1766828100639-0-\330\263\330\263\330\263\330\263.mp4"
	deleted:    storage/posts/videos/1766828130001-0-aaa.mp4
	deleted:    storage/posts/videos/1766828157845-0-ssss.mp4
	deleted:    storage/posts/videos/1766828203643-0-aaaa.mp4
	deleted:    "storage/posts/videos/1766828345460-0-You deserve to be happy, and you can\342\200\231t stay where your heart doesn\342\200\231t belong  #\330\252\331\210\331\204\330\257\331\205_\331\205\330\250\330\247\330\261\332\251 #\330\242\330\250\333\214 #\330\247\331\207\331\210\330\247\330\262 #\330\252\331\210\331\204\330\257 #\330\250\331\204\330\247\332\257\330\261 @gallery.nilai.mp4"
	deleted:    storage/posts/videos/1766828424672-0-1111.mp4
	deleted:    storage/posts/videos/1766828464781-0-sss.mp4
	deleted:    storage/posts/videos/1766828486889-0-aaaa.mp4
	deleted:    storage/posts/videos/1766828514279-0-sss.mp4
	deleted:    storage/posts/videos/1766828727356-0-ddd.mp4
	deleted:    "storage/posts/videos/1766828816020-0-Jewlery project  Brand- @houseofme_official  Dop- @_alishariatt  Videographer- @peyman_bozorgomid  Assistant- @amir.kh.k  Model- @ana.elitee  #jewleryphotography #fashionreels #\330\261\333\214\331\204.mp4"
	deleted:    "storage/posts/videos/1766828848513-0-Some of my favorite shots Models- @saharjalilii @setayesh.ghalenoeii @parmisaadat @paaarand @asalllbayat @bitakhaajoii  #photographer #\330\271\332\251\330\247\330\263\333\214_\331\201\330\264\331\206 #photosoftheday.mp4"
	deleted:    "storage/posts/videos/1766831745457-0-\330\263\330\263\330\263.mp4"
	deleted:    "storage/posts/videos/1766831795030-0-\330\264\330\264\330\264\330\264.mp4"
	deleted:    "storage/posts/videos/1766833279276-0-\330\247\330\262 \332\206\330\264\330\247\331\205 \331\207\331\204\330\252 \330\257\330\247\330\257\331\205\342\200\214 \331\210\331\204\333\214 .....mp4"
	deleted:    "storage/posts/videos/1766835292259-0-\330\263\333\214\330\263.mp4"
	deleted:    storage/posts/videos/1766835327424-0-a.mp4
	deleted:    storage/posts/videos/1766835787091-0-s.mp4
	deleted:    storage/posts/videos/1767012113143-0-aaa.mp4
	deleted:    "storage/posts/videos/1767012137018-0-Makeup by-\360\237\221\207\360\237\217\275\360\237\215\267 @pegah.mua  @kiavash_royalvideo.mp4"
	deleted:    storage/posts/videos/1767012672738-0-dddd.mp4
	deleted:    storage/posts/videos/1767012722043-0-Instagram.mp4
	deleted:    "storage/posts/videos/1768740975998-0-Faouzia\343\200\212Desert Rose\343\200\213.mp4"
	deleted:    storage/posts/videos/1768741493380-0-a.mp4
	deleted:    "storage/posts/videos/1771318409261-0-\330\266\330\265\330\266\330\265\330\266\330\265\330\266.mp4"
	deleted:    "storage/posts/videos/1771319189820-0-\330\263\330\263\330\263\330\263.mp4"
	deleted:    storage/posts/videos/1771937200099-0-WhatsApp Video 2025-05-17 at 11.50.09.mp4
	deleted:    storage/posts/videos/1772005435124-0-qqqq.mp4
	deleted:    storage/posts/videos/1772005611958-0-aaaaa.mp4
	deleted:    storage/posts/videos/1772006456443-0-qqqqww.mp4
	deleted:    storage/posts/videos/1772006543741-0-1111.mp4
	deleted:    storage/posts/videos/1772006606627-0-wewewe.mp4
	deleted:    storage/posts/videos/1772006663579-0-wwww.mp4
	deleted:    storage/posts/videos/1772006685382-0-333.mp4
	deleted:    storage/posts/videos/1772006740696-0-www.mp4
	deleted:    storage/posts/videos/1772006786181-0-4444.mp4
	deleted:    storage/posts/videos/1772009213487-0-aaaa.mp4
	deleted:    storage/posts/videos/1772009260843-0-sss.mp4
	deleted:    "storage/posts/videos/1772013946491-0-\330\250\330\250\330\250\330\250\330\250.mp4"
	deleted:    "storage/posts/videos/1772089789739-0-\330\266\330\266\330\266\330\266.mp4"
	deleted:    storage/posts/videos/1772090631353-0-qqqq.mp4
	deleted:    "storage/posts/videos/1772092053138-0-\330\265\330\265\330\265.mp4"
	deleted:    storage/posts/videos/1772101142214-0-2222.mp4
	deleted:    "storage/posts/videos/1772101261385-0-\330\266\330\266\330\266\330\266.mp4"
	deleted:    storage/posts/videos/1772101312006-0-Instagram.mp4
	deleted:    "storage/posts/videos/1772101434744-0-\330\263\333\214\330\263\333\214\330\263\333\214.mp4"
	deleted:    "storage/posts/videos/1772203614700-0-\330\263\330\247\331\205\330\250\330\261\331\207 \330\250\331\204\331\210\331\206\330\257 \330\250\330\261\330\247\333\214 \331\201\330\247\330\267\331\205\331\207 \330\271\330\262\333\214\330\262\331\205\360\237\222\225.mp4"
	deleted:    "storage/posts/videos/1772203641829-0-\330\257\332\251\331\204\330\261\331\207 \331\210 \330\261\331\206\332\257 \331\210 \332\251\331\210\330\252\330\247\331\207\333\214 \330\250\330\261\330\247\333\214 \330\263\331\210\330\257\330\247 \331\202\330\264\331\206\332\257\331\205\360\237\222\225.mp4"
	deleted:    "storage/posts/videos/1772203698315-0-\330\247\333\214\331\206 \332\251\330\247\330\261 \330\262\333\214\330\250\330\247\331\205\331\210\331\206 \330\250\330\261\330\247\333\214 \330\255\330\250\333\214\330\250\331\207 \330\256\330\247\331\206\331\205 \330\271\330\262\333\214\330\262\360\237\222\225.mp4"
	deleted:    "storage/posts/videos/1772205300232-0-\330\264\330\264\330\264\330\264.mp4"
	deleted:    "storage/posts/videos/1772205333900-0-\330\265\330\265\330\265\330\265\330\265.mp4"
	deleted:    "storage/posts/videos/1772207461030-0-\330\265\330\265\330\265.mp4"
	deleted:    "storage/posts/videos/1772207616124-0-\330\264\330\264\330\264.mp4"
	deleted:    "storage/posts/videos/1772207684446-0-\330\253\330\253\330\253\330\253.mp4"
	deleted:    "storage/posts/videos/1772208440984-0-\331\201\331\201\331\201.mp4"
	deleted:    "storage/posts/videos/1772208506469-0-\330\253\330\253\330\253\330\253.mp4"
	deleted:    "storage/posts/videos/1772208627195-0-\330\264\330\264\330\264\330\264.mp4"
	deleted:    "storage/posts/videos/1772208646258-0-\330\250\330\263\333\214\330\263.mp4"
	deleted:    storage/posts/videos/1772208704438-0-111.mp4
	deleted:    "storage/posts/videos/1772211057722-0-\330\266\330\266\330\266.mp4"
	deleted:    "storage/posts/videos/1772211118907-0-\330\265\330\265\330\265\330\265.mp4"
	deleted:    "storage/posts/videos/1772211184550-0-\330\253\330\253\330\253.mp4"
	deleted:    "storage/posts/videos/1772211618341-0-\330\265\330\265\330\265\330\265.mp4"
	deleted:    storage/posts/videos/1772211740270-0-4444.mp4
This commit is contained in:
Amirreza
2026-07-05 15:59:26 +03:30
parent 06f6260df3
commit b3bb0d0ff3
306 changed files with 23083 additions and 23100 deletions

View File

@@ -1,112 +1,112 @@
/* eslint-disable camelcase */
const { ProvinceModel, CityModel } = require('../../../models/StateCity')
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setAddress = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { province_id, city_id, address, lat, lng, show_location } = req.body
// اعتبارسنجی داده‌ها
if (!province_id || !city_id || !address || !lat || !lng || show_location === 'undefined') {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
// یافتن کاربر با شماره موبایل
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// یافتن استان و شهر
const province = await ProvinceModel.findOne({ id: province_id })
const city = await CityModel.findOne({ id: city_id })
if (!province || !city) {
return res.status(404).json({
error: true,
message: 'استان یا شهر موردنظر یافت نشد'
})
}
user.province = province
user.city = city
user.address = address
user.lat = lat
user.lng = lng
user.show_location = show_location
await user.save()
return res.json({
message: 'آدرس با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateAddress = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { province_id, city_id, address, lat, lng, show_location } = req.body
// اعتبارسنجی داده‌ها
if (!province_id || !city_id || !address || !lat || !lng || show_location === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// یافتن کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// یافتن استان و شهر با استفاده از شناسه استان و شهر
const province = await ProvinceModel.findOne({ id: province_id })
const city = await CityModel.findOne({ id: city_id })
if (!province || !city) {
return res.status(404).json({
error: true,
message: 'استان یا شهر مورد نظر یافت نشد'
})
}
// به‌روزرسانی اطلاعات آدرس کاربر
user.province = province
user.city = city
user.address = address
user.lat = lat
user.lng = lng
user.show_location = show_location
await user.save()
return res.json({
message: 'آدرس با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setAddress, updateAddress
}
/* eslint-disable camelcase */
const { ProvinceModel, CityModel } = require('../../../models/StateCity')
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setAddress = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { province_id, city_id, address, lat, lng, show_location } = req.body
// اعتبارسنجی داده‌ها
if (!province_id || !city_id || !address || !lat || !lng || show_location === 'undefined') {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
// یافتن کاربر با شماره موبایل
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// یافتن استان و شهر
const province = await ProvinceModel.findOne({ id: province_id })
const city = await CityModel.findOne({ id: city_id })
if (!province || !city) {
return res.status(404).json({
error: true,
message: 'استان یا شهر موردنظر یافت نشد'
})
}
user.province = province
user.city = city
user.address = address
user.lat = lat
user.lng = lng
user.show_location = show_location
await user.save()
return res.json({
message: 'آدرس با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateAddress = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { province_id, city_id, address, lat, lng, show_location } = req.body
// اعتبارسنجی داده‌ها
if (!province_id || !city_id || !address || !lat || !lng || show_location === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// یافتن کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// یافتن استان و شهر با استفاده از شناسه استان و شهر
const province = await ProvinceModel.findOne({ id: province_id })
const city = await CityModel.findOne({ id: city_id })
if (!province || !city) {
return res.status(404).json({
error: true,
message: 'استان یا شهر مورد نظر یافت نشد'
})
}
// به‌روزرسانی اطلاعات آدرس کاربر
user.province = province
user.city = city
user.address = address
user.lat = lat
user.lng = lng
user.show_location = show_location
await user.save()
return res.json({
message: 'آدرس با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setAddress, updateAddress
}

View File

@@ -1,108 +1,108 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const { check, validationResult } = require('express-validator')
const jwt = require('jsonwebtoken')
const saveAuthValidationRules = () => {
return [
check('shaba').notEmpty().withMessage('شماره شبا نمی‌تواند خالی باشد')
.matches(/^(?=.{24}$)[0-9]*$/).withMessage('فرمت شماره شبا صحیح نیست'),
check('birthday').notEmpty().withMessage('تاریخ تولد نمی‌تواند خالی باشد'),
check('national_code').notEmpty().withMessage('کد ملی نمی‌تواند خالی باشد')
.isLength({ min: 10, max: 10 }).withMessage('کد ملی باید 10 رقم باشد')
]
}
const saveAuth = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const errors = validationResult(req)
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() })
}
const { shaba, birthday, national_code } = req.body
if (!shaba || !birthday || !national_code) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// بررسی تکراری بودن کد ملی
const existingUserWithNationalCode = await UserModel.findOne({ national_code })
if (existingUserWithNationalCode && existingUserWithNationalCode._id.toString() !== user._id.toString()) {
return res.status(409).json({
error: true,
message: 'کد ملی تکراری است'
})
}
user.shaba = shaba
user.birthday = birthday
user.national_code = national_code
await user.save()
return res.json({
message: 'اطلاعات با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateShaba = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const errors = validationResult(req)
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() })
}
const { shaba } = req.body
if (!shaba) {
return res.status(422).json({
error: true,
message: 'شبا ارسال نشده است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// فقط شبا را به‌روزرسانی کنید
user.shaba = shaba
await user.save()
return res.json({
message: 'شبا با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
saveAuth, saveAuthValidationRules, updateShaba
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const { check, validationResult } = require('express-validator')
const jwt = require('jsonwebtoken')
const saveAuthValidationRules = () => {
return [
check('shaba').notEmpty().withMessage('شماره شبا نمی‌تواند خالی باشد')
.matches(/^(?=.{24}$)[0-9]*$/).withMessage('فرمت شماره شبا صحیح نیست'),
check('birthday').notEmpty().withMessage('تاریخ تولد نمی‌تواند خالی باشد'),
check('national_code').notEmpty().withMessage('کد ملی نمی‌تواند خالی باشد')
.isLength({ min: 10, max: 10 }).withMessage('کد ملی باید 10 رقم باشد')
]
}
const saveAuth = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const errors = validationResult(req)
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() })
}
const { shaba, birthday, national_code } = req.body
if (!shaba || !birthday || !national_code) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// بررسی تکراری بودن کد ملی
const existingUserWithNationalCode = await UserModel.findOne({ national_code })
if (existingUserWithNationalCode && existingUserWithNationalCode._id.toString() !== user._id.toString()) {
return res.status(409).json({
error: true,
message: 'کد ملی تکراری است'
})
}
user.shaba = shaba
user.birthday = birthday
user.national_code = national_code
await user.save()
return res.json({
message: 'اطلاعات با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateShaba = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const errors = validationResult(req)
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() })
}
const { shaba } = req.body
if (!shaba) {
return res.status(422).json({
error: true,
message: 'شبا ارسال نشده است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// فقط شبا را به‌روزرسانی کنید
user.shaba = shaba
await user.save()
return res.json({
message: 'شبا با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
saveAuth, saveAuthValidationRules, updateShaba
}

View File

@@ -1,80 +1,80 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setColors = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { eye_color, hair_color } = req.body
if (!eye_color || !hair_color) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.eye_color = eye_color
user.hair_color = hair_color
await user.save()
return res.json({
message: 'رنگ ها با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateColors = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { eye_color, hair_color } = req.body
// اعتبارسنجی داده‌ها
if (!eye_color || !hair_color) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// یافتن کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// به‌روزرسانی اطلاعات رنگ‌ها
user.eye_color = eye_color
user.hair_color = hair_color
await user.save()
return res.json({
message: 'رنگ‌ها با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setColors, updateColors
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setColors = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { eye_color, hair_color } = req.body
if (!eye_color || !hair_color) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.eye_color = eye_color
user.hair_color = hair_color
await user.save()
return res.json({
message: 'رنگ ها با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateColors = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { eye_color, hair_color } = req.body
// اعتبارسنجی داده‌ها
if (!eye_color || !hair_color) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// یافتن کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// به‌روزرسانی اطلاعات رنگ‌ها
user.eye_color = eye_color
user.hair_color = hair_color
await user.save()
return res.json({
message: 'رنگ‌ها با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setColors, updateColors
}

View File

@@ -1,74 +1,74 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setConversation = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { bio, conversation_projects } = req.body
if (!bio || conversation_projects === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.bio = bio
user.conversation_projects = conversation_projects
await user.save()
return res.json({
message: 'روابط عمومی با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateConversation = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { bio, conversation_projects } = req.body
if (!bio || conversation_projects === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
user.bio = bio
user.conversation_projects = conversation_projects
await user.save()
return res.json({
message: 'روابط عمومی با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setConversation, updateConversation
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setConversation = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { bio, conversation_projects } = req.body
if (!bio || conversation_projects === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.bio = bio
user.conversation_projects = conversation_projects
await user.save()
return res.json({
message: 'روابط عمومی با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateConversation = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { bio, conversation_projects } = req.body
if (!bio || conversation_projects === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
user.bio = bio
user.conversation_projects = conversation_projects
await user.save()
return res.json({
message: 'روابط عمومی با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setConversation, updateConversation
}

View File

@@ -1,93 +1,93 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setCooperationType = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { cooperation_type, cooperation_abroad } = req.body
if (!cooperation_type || cooperation_abroad === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
if (!['all', 'verified'].includes(cooperation_type)) {
return res.status(422).json({
error: true,
message: 'نوع همکاری نیست'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.cooperation_type = cooperation_type
user.cooperation_abroad = cooperation_abroad
await user.save()
return res.json({
message: 'نوع همکاری با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateCooperationType = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { cooperation_type, cooperation_abroad } = req.body
if (!cooperation_type || cooperation_abroad === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
if (!['all', 'verified'].includes(cooperation_type)) {
return res.status(422).json({
error: true,
message: 'نوع همکاری نامعتبر است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
user.cooperation_type = cooperation_type
user.cooperation_abroad = cooperation_abroad
await user.save()
return res.json({
message: 'نوع همکاری با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setCooperationType,
updateCooperationType
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setCooperationType = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { cooperation_type, cooperation_abroad } = req.body
if (!cooperation_type || cooperation_abroad === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
if (!['all', 'verified'].includes(cooperation_type)) {
return res.status(422).json({
error: true,
message: 'نوع همکاری نیست'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.cooperation_type = cooperation_type
user.cooperation_abroad = cooperation_abroad
await user.save()
return res.json({
message: 'نوع همکاری با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateCooperationType = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { cooperation_type, cooperation_abroad } = req.body
if (!cooperation_type || cooperation_abroad === undefined) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
if (!['all', 'verified'].includes(cooperation_type)) {
return res.status(422).json({
error: true,
message: 'نوع همکاری نامعتبر است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
user.cooperation_type = cooperation_type
user.cooperation_abroad = cooperation_abroad
await user.save()
return res.json({
message: 'نوع همکاری با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setCooperationType,
updateCooperationType
}

View File

@@ -1,81 +1,81 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setExpertise = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { expertise, sub_expertise } = req.body
if (!expertise || !sub_expertise) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// آپدیت نام کاربری به صورت lowercase
user.expertise = expertise
user.sub_expertise = sub_expertise
await user.save()
return res.json({
message: 'تخصص با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateExpertise = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { expertise, sub_expertise } = req.body
// اعتبارسنجی داده‌ها
if (!expertise || !sub_expertise) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// یافتن کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// به‌روزرسانی اطلاعات تخصص و زیرتخصص
user.expertise = expertise
user.sub_expertise = sub_expertise
await user.save()
return res.json({
message: 'تخصص با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setExpertise, updateExpertise
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setExpertise = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { expertise, sub_expertise } = req.body
if (!expertise || !sub_expertise) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// آپدیت نام کاربری به صورت lowercase
user.expertise = expertise
user.sub_expertise = sub_expertise
await user.save()
return res.json({
message: 'تخصص با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateExpertise = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { expertise, sub_expertise } = req.body
// اعتبارسنجی داده‌ها
if (!expertise || !sub_expertise) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی ناقص است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// یافتن کاربر با استفاده از شناسه کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شناسه یافت نشد'
})
}
// به‌روزرسانی اطلاعات تخصص و زیرتخصص
user.expertise = expertise
user.sub_expertise = sub_expertise
await user.save()
return res.json({
message: 'تخصص با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setExpertise, updateExpertise
}

View File

@@ -1,46 +1,46 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setGender = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { gender } = req.body
if (!gender) {
return res.status(422).json({
error: true,
message: 'اطلاعات ورودی اشتباه است'
})
}
if (!['male', 'female'].includes(gender)) {
return res.status(422).json({
error: true,
message: 'جنسیت معتبر نیست'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// آپدیت نوع یوزر
user.gender = gender.toLowerCase()
await user.save()
return res.json({
message: 'جنسیت با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setGender
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setGender = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { gender } = req.body
if (!gender) {
return res.status(422).json({
error: true,
message: 'اطلاعات ورودی اشتباه است'
})
}
if (!['male', 'female'].includes(gender)) {
return res.status(422).json({
error: true,
message: 'جنسیت معتبر نیست'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// آپدیت نوع یوزر
user.gender = gender.toLowerCase()
await user.save()
return res.json({
message: 'جنسیت با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setGender
}

View File

@@ -1,107 +1,107 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const fs = require('fs-extra')
const path = require('path')
const setServices = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(422).json({
error: true,
message: 'شما دسترسی به این بخش ندارید'
})
}
const { services } = req.body
if (!services) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// مدیریت تصاویر برای خدمات
const servicesWithImages = []
const parsedServices = JSON.parse(services) // پارس کردن رشته JSON به آرایه جاوا اسکریپت
if (parsedServices && parsedServices.length > 0) {
for (const service of parsedServices) {
const serviceImages = []
const serviceId = service.id
if (req.files && req.files.serviceImages && req.files.serviceImages[serviceId]) {
const imageFiles = Array.isArray(req.files.serviceImages[serviceId]) ? req.files.serviceImages[serviceId] : [req.files.serviceImages[serviceId]]
const uploadDir = path.join(__dirname, '../../../../storage/services')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
for (const imageFile of imageFiles) {
const uniqueFileName = `${user.user_name}-${Date.now()}${Math.random().toString().slice(2, 11)}${path.extname(imageFile.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
// await fs.promises.rename(imageFile.path, filePath)
await fs.move(imageFile.path, filePath)
const imageUrl = `/services/${uniqueFileName}`
serviceImages.push(imageUrl)
// به‌روزرسانی مسیر تصویر در آبجکت service
service.image = imageUrl
}
} else {
console.log('sss')
}
servicesWithImages.push({ ...service, images: serviceImages })
}
}
user.services = servicesWithImages
await user.save()
return res.json({
message: 'خدمات با موفقیت ثبت شد'
})
} catch (error) {
next(error)
}
}
const updateServices = async (req, res, next) => {
try {
const { height, weight, size } = req.body
if (!height || !weight || !size) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربر یافت نشد'
})
}
user.height = height
user.weight = weight
user.size = size
await user.save()
return res.json({
message: 'سایز با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setServices, updateServices
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const fs = require('fs-extra')
const path = require('path')
const setServices = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(422).json({
error: true,
message: 'شما دسترسی به این بخش ندارید'
})
}
const { services } = req.body
if (!services) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// مدیریت تصاویر برای خدمات
const servicesWithImages = []
const parsedServices = JSON.parse(services) // پارس کردن رشته JSON به آرایه جاوا اسکریپت
if (parsedServices && parsedServices.length > 0) {
for (const service of parsedServices) {
const serviceImages = []
const serviceId = service.id
if (req.files && req.files.serviceImages && req.files.serviceImages[serviceId]) {
const imageFiles = Array.isArray(req.files.serviceImages[serviceId]) ? req.files.serviceImages[serviceId] : [req.files.serviceImages[serviceId]]
const uploadDir = path.join(__dirname, '../../../../storage/services')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
for (const imageFile of imageFiles) {
const uniqueFileName = `${user.user_name}-${Date.now()}${Math.random().toString().slice(2, 11)}${path.extname(imageFile.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
// await fs.promises.rename(imageFile.path, filePath)
await fs.move(imageFile.path, filePath)
const imageUrl = `/services/${uniqueFileName}`
serviceImages.push(imageUrl)
// به‌روزرسانی مسیر تصویر در آبجکت service
service.image = imageUrl
}
} else {
console.log('sss')
}
servicesWithImages.push({ ...service, images: serviceImages })
}
}
user.services = servicesWithImages
await user.save()
return res.json({
message: 'خدمات با موفقیت ثبت شد'
})
} catch (error) {
next(error)
}
}
const updateServices = async (req, res, next) => {
try {
const { height, weight, size } = req.body
if (!height || !weight || !size) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربر یافت نشد'
})
}
user.height = height
user.weight = weight
user.size = size
await user.save()
return res.json({
message: 'سایز با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setServices, updateServices
}

View File

@@ -1,55 +1,55 @@
/* eslint-disable camelcase */
const fs = require('fs-extra')
const path = require('path')
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setNationalCardImage = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { national_card_image } = req.files
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// بررسی آیا فایل آپلود شده است
if (!national_card_image) {
return res.status(400).json({
error: true,
message: 'لطفاً عکس کارت ملی را انتخاب کنید'
})
}
// ذخیره فایل عکس پروفایل
const uploadDir = path.join(__dirname, '../../../../storage/carts')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
const uniqueFileName = `${user.user_name}-${Date.now()}${path.extname(national_card_image.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
await fs.move(national_card_image.path, filePath)
// ذخیره مسیر فایل در دیتابیس
user.national_card_image = `/carts/${uniqueFileName}`
user.is_verified = 'pending'
await user.save()
return res.json({
message: 'عکس کارت ملی با موفقیت ذخیره شد',
national_card_image: user.national_card_image
})
} catch (error) {
next(error)
}
}
module.exports = {
setNationalCardImage
}
/* eslint-disable camelcase */
const fs = require('fs-extra')
const path = require('path')
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setNationalCardImage = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { national_card_image } = req.files
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// بررسی آیا فایل آپلود شده است
if (!national_card_image) {
return res.status(400).json({
error: true,
message: 'لطفاً عکس کارت ملی را انتخاب کنید'
})
}
// ذخیره فایل عکس پروفایل
const uploadDir = path.join(__dirname, '../../../../storage/carts')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
const uniqueFileName = `${user.user_name}-${Date.now()}${path.extname(national_card_image.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
await fs.move(national_card_image.path, filePath)
// ذخیره مسیر فایل در دیتابیس
user.national_card_image = `/carts/${uniqueFileName}`
user.is_verified = 'pending'
await user.save()
return res.json({
message: 'عکس کارت ملی با موفقیت ذخیره شد',
national_card_image: user.national_card_image
})
} catch (error) {
next(error)
}
}
module.exports = {
setNationalCardImage
}

View File

@@ -1,105 +1,105 @@
/* eslint-disable camelcase */
const fs = require('fs-extra')
const path = require('path')
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setProfileImage = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { mobile } = req.body
const { profile_image } = req.files
if (!mobile) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// بررسی آیا فایل آپلود شده است
if (!profile_image) {
return res.status(400).json({
error: true,
message: 'لطفاً عکس پروفایل را انتخاب کنید'
})
}
// ذخیره فایل عکس پروفایل
const uploadDir = path.join(__dirname, '../../../../storage/profiles')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
const uniqueFileName = `${user.user_name}-${Date.now()}${path.extname(profile_image.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
await fs.move(profile_image.path, filePath)
// ذخیره مسیر فایل در دیتابیس
user.profile_image = `/profiles/${uniqueFileName}`
await user.save()
return res.json({
message: 'عکس پروفایل با موفقیت ذخیره شد',
profile_image: user.profile_image
})
} catch (error) {
next(error)
}
}
const updateProfileImage = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
const { profile_image } = req.files
if (!profile_image) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
const uploadDir = path.join(__dirname, '../../../../storage/profiles')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
const uniqueFileName = `${user.user_name}-${Date.now()}${path.extname(profile_image.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
await fs.move(profile_image.path, filePath)
user.profile_image = `/profiles/${uniqueFileName}`
await user.save()
return res.json({
message: 'عکس پروفایل با موفقیت به‌روزرسانی شد',
profile_image: user.profile_image
})
} catch (error) {
next(error)
}
}
module.exports = {
setProfileImage, updateProfileImage
}
/* eslint-disable camelcase */
const fs = require('fs-extra')
const path = require('path')
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setProfileImage = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { mobile } = req.body
const { profile_image } = req.files
if (!mobile) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
// بررسی آیا فایل آپلود شده است
if (!profile_image) {
return res.status(400).json({
error: true,
message: 'لطفاً عکس پروفایل را انتخاب کنید'
})
}
// ذخیره فایل عکس پروفایل
const uploadDir = path.join(__dirname, '../../../../storage/profiles')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
const uniqueFileName = `${user.user_name}-${Date.now()}${path.extname(profile_image.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
await fs.move(profile_image.path, filePath)
// ذخیره مسیر فایل در دیتابیس
user.profile_image = `/profiles/${uniqueFileName}`
await user.save()
return res.json({
message: 'عکس پروفایل با موفقیت ذخیره شد',
profile_image: user.profile_image
})
} catch (error) {
next(error)
}
}
const updateProfileImage = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
const { profile_image } = req.files
if (!profile_image) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
const uploadDir = path.join(__dirname, '../../../../storage/profiles')
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true })
}
const uniqueFileName = `${user.user_name}-${Date.now()}${path.extname(profile_image.name)}`
const filePath = path.join(uploadDir, uniqueFileName)
await fs.move(profile_image.path, filePath)
user.profile_image = `/profiles/${uniqueFileName}`
await user.save()
return res.json({
message: 'عکس پروفایل با موفقیت به‌روزرسانی شد',
profile_image: user.profile_image
})
} catch (error) {
next(error)
}
}
module.exports = {
setProfileImage, updateProfileImage
}

View File

@@ -1,78 +1,78 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setSizes = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { height, weight, size } = req.body
if (!height || !weight || !size) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.height = height
user.weight = weight
user.size = size
await user.save()
return res.json({
message: 'سایز با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateSizes = async (req, res, next) => {
try {
const { height, weight, size } = req.body
if (!height || !weight || !size) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربر یافت نشد'
})
}
user.height = height
user.weight = weight
user.size = size
await user.save()
return res.json({
message: 'سایز با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setSizes, updateSizes
}
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const setSizes = async (req, res, next) => {
try {
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const { height, weight, size } = req.body
if (!height || !weight || !size) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
// جستجوی کاربر با شماره موبایل ارسالی
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const user = await UserModel.findById(decodedToken.id)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربری با این شماره موبایل یافت نشد'
})
}
user.height = height
user.weight = weight
user.size = size
await user.save()
return res.json({
message: 'سایز با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
const updateSizes = async (req, res, next) => {
try {
const { height, weight, size } = req.body
if (!height || !weight || !size) {
return res.status(422).json({
error: true,
message: 'اطلاعات ارسالی اشتباه است'
})
}
const token = req.header('Authorization').split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const decodedToken = jwt.verify(token, process.env.APP_SECRET)
const userId = decodedToken.id
// جستجوی کاربر
const user = await UserModel.findById(userId)
if (!user) {
return res.status(404).json({
error: true,
message: 'کاربر یافت نشد'
})
}
user.height = height
user.weight = weight
user.size = size
await user.save()
return res.json({
message: 'سایز با موفقیت به‌روزرسانی شد'
})
} catch (error) {
next(error)
}
}
module.exports = {
setSizes, updateSizes
}