Add new endpoint
This commit is contained in:
@@ -102,34 +102,34 @@ module.exports.getAllForUser = async (req, res) => {
|
||||
|
||||
module.exports.getAllForAdmin = 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 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 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 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 InstalledDevice.find(filter)
|
||||
.sort({ [sortField]: sortOrder })
|
||||
const data = await InstalledDevice.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);
|
||||
// .skip(skip)
|
||||
// .limit(rows);
|
||||
|
||||
const totalDocuments = await InstalledDevice.countDocuments(filter);
|
||||
const totalPages = Math.ceil(totalDocuments / rows);
|
||||
// const totalDocuments = await InstalledDevice.countDocuments(filter);
|
||||
// const totalPages = Math.ceil(totalDocuments / rows);
|
||||
|
||||
res.status(200).json({ data, totalDocuments, totalPages });
|
||||
res.status(200).json({ data });
|
||||
} catch (error) {
|
||||
console.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.dollarBalance += device.dollarProfit
|
||||
user.score = device.score
|
||||
user.score += device.score
|
||||
|
||||
|
||||
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 */
|
||||
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.
|
||||
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:9a82d91402ee06cb@srv-captain--asan-service-db:27017/asanserv_database?authSource=admin'
|
||||
const init = ()=>{
|
||||
|
||||
@@ -5,6 +5,9 @@ const RenewalSchema = mongoose.Schema({
|
||||
type: String,
|
||||
ref: 'Device'
|
||||
},
|
||||
IMEI: {
|
||||
type: String,
|
||||
},
|
||||
renewDate: Date,
|
||||
renewType: {
|
||||
type: String,
|
||||
@@ -20,10 +23,6 @@ const RenewalSchema = mongoose.Schema({
|
||||
default: 0,
|
||||
required: true
|
||||
},
|
||||
dollarProfit: {
|
||||
type: Number,
|
||||
min: 0
|
||||
},
|
||||
userId: {
|
||||
type: String,
|
||||
ref: 'UserGPS'
|
||||
|
||||
@@ -32,6 +32,7 @@ const device = require('../controllers/GPS.Device')
|
||||
const award = require('../controllers/GPS.Award')
|
||||
const awardRequest = require('../controllers/GPS.AwardRequest')
|
||||
const userGPS = require('../controllers/GPS.User')
|
||||
const renewal = require('../controllers/GPS.Renewal')
|
||||
|
||||
|
||||
/// //////////////////////////////////////////////////////// routes
|
||||
@@ -39,6 +40,10 @@ const userGPS = require('../controllers/GPS.User')
|
||||
|
||||
/// ///////////////////////////// GPS
|
||||
|
||||
/// /////////////// Renewal
|
||||
router.get('/gps/renew',hasPermission('gps'), renewal.findAllAdmin)
|
||||
|
||||
|
||||
/// /////////////// User
|
||||
|
||||
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 userGPS = require('../controllers/GPS.User')
|
||||
const notif = require('../controllers/GPS.Notif')
|
||||
const renewal = require('../controllers/GPS.Renewal')
|
||||
/// /////////////// Renewal
|
||||
router.get('/renew', renewal.findAllUser)
|
||||
|
||||
/// /////////////// Notification
|
||||
router.get('/notif/:id', notif.setSeen)
|
||||
|
||||
@@ -3,10 +3,12 @@ const router = Router()
|
||||
|
||||
/// //////////////////////////////////////////////////////// controllers
|
||||
const thirdPartyController = require('../controllers/thirdPartyController')
|
||||
const renewal = require('../controllers/GPS.Renewal')
|
||||
|
||||
/// //////////////////////////////////////////////////////// routes
|
||||
router.post('/reception', thirdPartyController.reception)
|
||||
router.post('/repair', thirdPartyController.repair)
|
||||
router.post('/sendBack', thirdPartyController.sendBack)
|
||||
router.post('/renew', renewal.create)
|
||||
|
||||
module.exports = router
|
||||
|
||||
Reference in New Issue
Block a user