Add new endpoint
This commit is contained in:
@@ -102,34 +102,34 @@ module.exports.getAllForUser = async (req, res) => {
|
|||||||
|
|
||||||
module.exports.getAllForAdmin = async (req, res) => {
|
module.exports.getAllForAdmin = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const page = parseInt(req.query.page) || 1;
|
// const page = parseInt(req.query.page) || 1;
|
||||||
const rows = parseInt(req.query.rows) || 10;
|
// const rows = parseInt(req.query.rows) || 10;
|
||||||
const search = req.query.search || "";
|
// const search = req.query.search || "";
|
||||||
const sortField = req.query.sortField || "status";
|
// const sortField = req.query.sortField || "status";
|
||||||
const sortOrder = req.query.sortOrder === "desc" ? -1 : 1;
|
// const sortOrder = req.query.sortOrder === "desc" ? -1 : 1;
|
||||||
|
|
||||||
const skip = (page - 1) * rows;
|
// const skip = (page - 1) * rows;
|
||||||
|
|
||||||
const filter = {};
|
// const filter = {};
|
||||||
if (search) {
|
// if (search) {
|
||||||
filter.$or = [
|
// filter.$or = [
|
||||||
{ IMEI: new RegExp(search, 'i') },
|
// { IMEI: new RegExp(search, 'i') },
|
||||||
{ 'userId.shopName': new RegExp(search, 'i') },
|
// { 'userId.shopName': new RegExp(search, 'i') },
|
||||||
{ 'userId.national_code': new RegExp(search, 'i') },
|
// { 'userId.national_code': new RegExp(search, 'i') },
|
||||||
];
|
// ];
|
||||||
}
|
// }
|
||||||
|
|
||||||
const data = await InstalledDevice.find(filter)
|
const data = await InstalledDevice.find()
|
||||||
.sort({ [sortField]: sortOrder })
|
// .sort({ [sortField]: sortOrder })
|
||||||
.populate('deviceId')
|
.populate('deviceId')
|
||||||
.populate('userId', 'shopName national_code first_name last_name mobile_number city_name province_name')
|
.populate('userId', 'shopName national_code first_name last_name mobile_number city_name province_name')
|
||||||
.skip(skip)
|
// .skip(skip)
|
||||||
.limit(rows);
|
// .limit(rows);
|
||||||
|
|
||||||
const totalDocuments = await InstalledDevice.countDocuments(filter);
|
// const totalDocuments = await InstalledDevice.countDocuments(filter);
|
||||||
const totalPages = Math.ceil(totalDocuments / rows);
|
// const totalPages = Math.ceil(totalDocuments / rows);
|
||||||
|
|
||||||
res.status(200).json({ data, totalDocuments, totalPages });
|
res.status(200).json({ data });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error:', error.message);
|
console.error('Error:', error.message);
|
||||||
res.status(500).json({ message: "Server Error", error: error.message });
|
res.status(500).json({ message: "Server Error", error: error.message });
|
||||||
@@ -159,7 +159,7 @@ module.exports.updateInstalled = [
|
|||||||
|
|
||||||
user.walletBalance += device.profit
|
user.walletBalance += device.profit
|
||||||
user.dollarBalance += device.dollarProfit
|
user.dollarBalance += device.dollarProfit
|
||||||
user.score = device.score
|
user.score += device.score
|
||||||
|
|
||||||
|
|
||||||
await Score.create({
|
await Score.create({
|
||||||
|
|||||||
@@ -0,0 +1,166 @@
|
|||||||
|
const { body, validationResult } = require('express-validator')
|
||||||
|
const { _sr } = require('../plugins/serverResponses')
|
||||||
|
const { checkValidations } = require('../plugins/controllersHelperFunctions')
|
||||||
|
const Renewal = require('../models/GPS.Renewal')
|
||||||
|
const User = require('../models/GPS.User');
|
||||||
|
const Score = require('../models/GPS.Score');
|
||||||
|
const InstalledDevice = require('../models/GPS.InstalledDevice');
|
||||||
|
|
||||||
|
const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NzBmY2NhNmFmOWE3ODMzNDgxZWIzODkiLCJpYXQiOjE3MzAwMjk4ODUsImV4cCI6MTczMDYzNDY4NX0.2qGgmlcllXr240rJ56ID9P01Kib-74enlEUY4Ifi-f2"
|
||||||
|
|
||||||
|
|
||||||
|
module.exports.create = [
|
||||||
|
[
|
||||||
|
body('IMEI').notEmpty().isString().withMessage(_sr.fa.required.field),
|
||||||
|
body('renewDate').notEmpty().withMessage(_sr.fa.required.field),
|
||||||
|
body('renewType').notEmpty().withMessage(_sr.fa.required.field),
|
||||||
|
body('price').notEmpty().isInt().withMessage(_sr.fa.required.field),
|
||||||
|
|
||||||
|
],
|
||||||
|
checkValidations(validationResult),
|
||||||
|
async (req, res) => {
|
||||||
|
try {
|
||||||
|
// eslint-disable-next-line eqeqeq
|
||||||
|
if(token == req.headers["apic-token-secret"]){
|
||||||
|
const { IMEI, renewDate, renewType, price } = req.body
|
||||||
|
const device = await InstalledDevice.findOne({IMEI}).populate('deviceId')
|
||||||
|
if(!device){
|
||||||
|
req.status(200)
|
||||||
|
throw new Error(_sr.fa.response.success_save)
|
||||||
|
}
|
||||||
|
// eslint-disable-next-line eqeqeq
|
||||||
|
if(device.status == 1 ){
|
||||||
|
const user = await User.findById(device.userId)
|
||||||
|
const profit = price *0.05
|
||||||
|
const data = {
|
||||||
|
renewDate,
|
||||||
|
renewType,
|
||||||
|
price,
|
||||||
|
deviceId:device.deviceId.id,
|
||||||
|
IMEI,
|
||||||
|
profit,
|
||||||
|
userId:device.userId,
|
||||||
|
}
|
||||||
|
await Renewal.create(data)
|
||||||
|
await Score.create({
|
||||||
|
title: " تمدید اشتراک",
|
||||||
|
deviceId: device.deviceId.id,
|
||||||
|
score: device.deviceId.score,
|
||||||
|
userId: device.userId
|
||||||
|
})
|
||||||
|
user.walletBalance += data.profit
|
||||||
|
user.score += device.deviceId.score
|
||||||
|
user.save()
|
||||||
|
}else{
|
||||||
|
req.status(200)
|
||||||
|
throw new Error(_sr.fa.response.success_save)
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
req.status(401)
|
||||||
|
throw new Error('unauthenticated')
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
req.json({msg:error.message})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
module.exports.findAllUser = async (req, res) => {
|
||||||
|
let page;
|
||||||
|
let rows;
|
||||||
|
|
||||||
|
if (!req.query?.rows || req.query?.rows <= 5) {
|
||||||
|
rows = 10;
|
||||||
|
} else {
|
||||||
|
rows = parseInt(req.query.rows);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!req.query?.page || req.query.page <= 1) {
|
||||||
|
page = 0;
|
||||||
|
} else {
|
||||||
|
page = (req.query.page - 1) * rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
const search = req.query?.search || null;
|
||||||
|
|
||||||
|
let sort = {};
|
||||||
|
|
||||||
|
if (req.query?.deviceId_dollarProfit) {
|
||||||
|
sort.dollarProfit = parseInt(req.query.deviceId_dollarProfit);
|
||||||
|
}
|
||||||
|
if (req.query?.status) {
|
||||||
|
sort.status = parseInt(req.query.status);
|
||||||
|
}
|
||||||
|
if (req.query?.registerDate) {
|
||||||
|
sort.registerDate = parseInt(req.query.registerDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(sort).length === 0) {
|
||||||
|
sort = { 'created_at': -1 };
|
||||||
|
}
|
||||||
|
|
||||||
|
const filter = {
|
||||||
|
userId: req.user_id,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (search) {
|
||||||
|
filter.$or = [
|
||||||
|
{ IMEI: { $regex: search, $options: 'i' } },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const data = await Renewal.find(filter)
|
||||||
|
.skip(page)
|
||||||
|
.limit(rows)
|
||||||
|
.sort(sort)
|
||||||
|
.populate('deviceId');
|
||||||
|
|
||||||
|
const total = await Renewal.countDocuments(filter);
|
||||||
|
|
||||||
|
res.status(200).json({ data, total });
|
||||||
|
} catch (error) {
|
||||||
|
res.status(500).json({ message: 'An error occurred', error });
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.findAllAdmin = async (req, res) => {
|
||||||
|
try {
|
||||||
|
// const page = parseInt(req.query.page) || 1;
|
||||||
|
// const rows = parseInt(req.query.rows) || 10;
|
||||||
|
// const search = req.query.search || "";
|
||||||
|
// const sortField = req.query.sortField || "status";
|
||||||
|
// const sortOrder = req.query.sortOrder === "desc" ? -1 : 1;
|
||||||
|
|
||||||
|
// const skip = (page - 1) * rows;
|
||||||
|
|
||||||
|
// const filter = {};
|
||||||
|
// if (search) {
|
||||||
|
// filter.$or = [
|
||||||
|
// { IMEI: new RegExp(search, 'i') },
|
||||||
|
// { 'userId.shopName': new RegExp(search, 'i') },
|
||||||
|
// { 'userId.national_code': new RegExp(search, 'i') },
|
||||||
|
// ];
|
||||||
|
// }
|
||||||
|
|
||||||
|
const data = await Renewal.find()
|
||||||
|
// .sort({ [sortField]: sortOrder })
|
||||||
|
.populate('deviceId')
|
||||||
|
.populate('userId', 'shopName national_code first_name last_name mobile_number city_name province_name')
|
||||||
|
// .skip(skip)
|
||||||
|
// .limit(rows);
|
||||||
|
|
||||||
|
// const totalDocuments = await InstalledDevice.countDocuments(filter);
|
||||||
|
// const totalPages = Math.ceil(totalDocuments / rows);
|
||||||
|
|
||||||
|
res.status(200).json({ data });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error:', error.message);
|
||||||
|
res.status(500).json({ message: "Server Error", error: error.message });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable no-unused-vars */
|
/* eslint-disable no-unused-vars */
|
||||||
const mongoose = require('mongoose')
|
const mongoose = require('mongoose')
|
||||||
// mongodb database connection string. change it as per your needs. here "mydb" is the name of the database. You don't need to create DB from mongodb terminal. mongoose create the database automatically.
|
// mongodb database connection string. change it as per your needs. here "mydb" is the name of the database. You don't need to create DB from mongodb terminal. mongoose create the database automatically.
|
||||||
const inHostUrl = 'mongodb://root:KPTt76tImNBBMm4Kor8QA9gB@asan-service:27017/asanserv_database?authSource=admin'
|
const inHostUrl = 'mongodb://root:9a82d91402ee06cb@danak-db-public.danakcorp.com:52694/asanserv_database?authSource=admin'
|
||||||
// const outHostUrl = 'mongodb://root:KPTt76tImNBBMm4Kor8QA9gB@hotaka.liara.cloud:33794/asanserv_database?authSource=admin'
|
// const outHostUrl = 'mongodb://root:KPTt76tImNBBMm4Kor8QA9gB@hotaka.liara.cloud:33794/asanserv_database?authSource=admin'
|
||||||
const outHostUrl = 'mongodb://root:9a82d91402ee06cb@srv-captain--asan-service-db:27017/asanserv_database?authSource=admin'
|
const outHostUrl = 'mongodb://root:9a82d91402ee06cb@srv-captain--asan-service-db:27017/asanserv_database?authSource=admin'
|
||||||
const init = ()=>{
|
const init = ()=>{
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ const RenewalSchema = mongoose.Schema({
|
|||||||
type: String,
|
type: String,
|
||||||
ref: 'Device'
|
ref: 'Device'
|
||||||
},
|
},
|
||||||
|
IMEI: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
renewDate: Date,
|
renewDate: Date,
|
||||||
renewType: {
|
renewType: {
|
||||||
type: String,
|
type: String,
|
||||||
@@ -20,10 +23,6 @@ const RenewalSchema = mongoose.Schema({
|
|||||||
default: 0,
|
default: 0,
|
||||||
required: true
|
required: true
|
||||||
},
|
},
|
||||||
dollarProfit: {
|
|
||||||
type: Number,
|
|
||||||
min: 0
|
|
||||||
},
|
|
||||||
userId: {
|
userId: {
|
||||||
type: String,
|
type: String,
|
||||||
ref: 'UserGPS'
|
ref: 'UserGPS'
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ const device = require('../controllers/GPS.Device')
|
|||||||
const award = require('../controllers/GPS.Award')
|
const award = require('../controllers/GPS.Award')
|
||||||
const awardRequest = require('../controllers/GPS.AwardRequest')
|
const awardRequest = require('../controllers/GPS.AwardRequest')
|
||||||
const userGPS = require('../controllers/GPS.User')
|
const userGPS = require('../controllers/GPS.User')
|
||||||
|
const renewal = require('../controllers/GPS.Renewal')
|
||||||
|
|
||||||
|
|
||||||
/// //////////////////////////////////////////////////////// routes
|
/// //////////////////////////////////////////////////////// routes
|
||||||
@@ -39,6 +40,10 @@ const userGPS = require('../controllers/GPS.User')
|
|||||||
|
|
||||||
/// ///////////////////////////// GPS
|
/// ///////////////////////////// GPS
|
||||||
|
|
||||||
|
/// /////////////// Renewal
|
||||||
|
router.get('/gps/renew',hasPermission('gps'), renewal.findAllAdmin)
|
||||||
|
|
||||||
|
|
||||||
/// /////////////// User
|
/// /////////////// User
|
||||||
|
|
||||||
router.get('/gps/users',hasPermission('gps'), userGPS.getUsersForAdmin)
|
router.get('/gps/users',hasPermission('gps'), userGPS.getUsersForAdmin)
|
||||||
|
|||||||
@@ -9,6 +9,9 @@ const awardRequest = require('../controllers/GPS.AwardRequest')
|
|||||||
const overview = require('../controllers/GPS.Overview')
|
const overview = require('../controllers/GPS.Overview')
|
||||||
const userGPS = require('../controllers/GPS.User')
|
const userGPS = require('../controllers/GPS.User')
|
||||||
const notif = require('../controllers/GPS.Notif')
|
const notif = require('../controllers/GPS.Notif')
|
||||||
|
const renewal = require('../controllers/GPS.Renewal')
|
||||||
|
/// /////////////// Renewal
|
||||||
|
router.get('/renew', renewal.findAllUser)
|
||||||
|
|
||||||
/// /////////////// Notification
|
/// /////////////// Notification
|
||||||
router.get('/notif/:id', notif.setSeen)
|
router.get('/notif/:id', notif.setSeen)
|
||||||
|
|||||||
@@ -3,10 +3,12 @@ const router = Router()
|
|||||||
|
|
||||||
/// //////////////////////////////////////////////////////// controllers
|
/// //////////////////////////////////////////////////////// controllers
|
||||||
const thirdPartyController = require('../controllers/thirdPartyController')
|
const thirdPartyController = require('../controllers/thirdPartyController')
|
||||||
|
const renewal = require('../controllers/GPS.Renewal')
|
||||||
|
|
||||||
/// //////////////////////////////////////////////////////// routes
|
/// //////////////////////////////////////////////////////// routes
|
||||||
router.post('/reception', thirdPartyController.reception)
|
router.post('/reception', thirdPartyController.reception)
|
||||||
router.post('/repair', thirdPartyController.repair)
|
router.post('/repair', thirdPartyController.repair)
|
||||||
router.post('/sendBack', thirdPartyController.sendBack)
|
router.post('/sendBack', thirdPartyController.sendBack)
|
||||||
|
router.post('/renew', renewal.create)
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
||||||
|
|||||||
Reference in New Issue
Block a user