- Permissions table (probably I'll change for others uses)
- Added CDateTime component (to save in the db)... in the component CGridTableRec and for CEventsCalendar
This commit is contained in:
@@ -105,10 +105,20 @@ MyEventSchema.statics.findAllIdApp = function (idapp) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
MyEventSchema.statics.getFieldsForSearch = function () {
|
||||||
|
return ['short_tit', 'title', 'teacher', 'details']
|
||||||
|
};
|
||||||
|
|
||||||
MyEventSchema.statics.executeQueryTable = function (idapp, params) {
|
MyEventSchema.statics.executeQueryTable = function (idapp, params) {
|
||||||
|
params.fieldsearch = this.getFieldsForSearch();
|
||||||
return tools.executeQueryTable(this, idapp, params);
|
return tools.executeQueryTable(this, idapp, params);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (tools.INITDB_FIRSTIME) {
|
||||||
|
// console.log(' createIndex MyEvent Index...');
|
||||||
|
// MyEventSchema.index({ short_tit: 'text', title: 'text', teacher: 'text', details: 'text' });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const MyEvent = mongoose.model('MyEvent', MyEventSchema);
|
const MyEvent = mongoose.model('MyEvent', MyEventSchema);
|
||||||
|
|
||||||
|
|||||||
59
server/models/permission.js
Normal file
59
server/models/permission.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
|
const Schema = mongoose.Schema;
|
||||||
|
|
||||||
|
const tools = require('../tools/general');
|
||||||
|
|
||||||
|
mongoose.Promise = global.Promise;
|
||||||
|
mongoose.level = "F";
|
||||||
|
|
||||||
|
|
||||||
|
// Resolving error Unknown modifier: $pushAll
|
||||||
|
mongoose.plugin(schema => {
|
||||||
|
schema.options.usePushEach = true
|
||||||
|
});
|
||||||
|
|
||||||
|
const PermissionSchema = new Schema({
|
||||||
|
_id: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
},{ _id : false });
|
||||||
|
|
||||||
|
|
||||||
|
PermissionSchema.pre('save', async function (next) {
|
||||||
|
if (this.isNew) {
|
||||||
|
const myrec = await Permission.findOne().limit(1).sort({_id:-1});
|
||||||
|
if (!!myrec) {
|
||||||
|
if (myrec._doc._id === 0)
|
||||||
|
this._id = 1;
|
||||||
|
else
|
||||||
|
this._id = myrec._doc._id * 2;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this._id = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
|
PermissionSchema.statics.executeQueryTable = function (idapp, params) {
|
||||||
|
return tools.executeQueryTable(this, 0, params);
|
||||||
|
};
|
||||||
|
|
||||||
|
PermissionSchema.statics.findAllIdApp = function () {
|
||||||
|
const Permission = this;
|
||||||
|
|
||||||
|
const myfind = { };
|
||||||
|
|
||||||
|
return Permission.find(myfind, (err, arrrec) => {
|
||||||
|
return arrrec
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const Permission = mongoose.model('Permission', PermissionSchema);
|
||||||
|
|
||||||
|
module.exports = { Permission };
|
||||||
@@ -358,13 +358,27 @@ UserSchema.statics.getUsersListByParams = function (params) {
|
|||||||
* @returns {Object} Object -> `{ rows, count }`
|
* @returns {Object} Object -> `{ rows, count }`
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
UserSchema.statics.getFieldsForSearch = function () {
|
||||||
|
return ['name', 'surname', 'email']
|
||||||
|
};
|
||||||
|
|
||||||
UserSchema.statics.executeQueryTable = function (idapp, params) {
|
UserSchema.statics.executeQueryTable = function (idapp, params) {
|
||||||
|
params.fieldsearch = this.getFieldsForSearch();
|
||||||
return tools.executeQueryTable(this, idapp, params);
|
return tools.executeQueryTable(this, idapp, params);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (tools.INITDB_FIRSTIME) {
|
||||||
|
console.log(' createIndex User Index...');
|
||||||
|
// UserSchema.index({ username: 'text', name: 'text', surname: 'text', email: 'text' });
|
||||||
|
// UserSchema.index({ name: 'name' });
|
||||||
|
// UserSchema.index({ name: 1 });
|
||||||
|
// UserSchema.index({ surname: 1 });
|
||||||
|
}
|
||||||
|
|
||||||
const User = mongoose.model('User', UserSchema);
|
const User = mongoose.model('User', UserSchema);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Hero {
|
class Hero {
|
||||||
constructor(name, level) {
|
constructor(name, level) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ mongoose.plugin(schema => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const WhereSchema = new Schema({
|
const WhereSchema = new Schema({
|
||||||
|
_id: {
|
||||||
|
type: mongoose.Schema.Types.ObjectId
|
||||||
|
},
|
||||||
idapp: {
|
idapp: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -7,10 +7,6 @@ const server_constants = require('../tools/server_constants');
|
|||||||
const { authenticate } = require('../middleware/authenticate');
|
const { authenticate } = require('../middleware/authenticate');
|
||||||
|
|
||||||
const { Booking } = require('../models/booking');
|
const { Booking } = require('../models/booking');
|
||||||
const { MyEvent } = require('../models/myevent');
|
|
||||||
const { Operator } = require('../models/operator');
|
|
||||||
const { Where } = require('../models/where');
|
|
||||||
const { Contribtype } = require('../models/contribtype');
|
|
||||||
|
|
||||||
const { ObjectID } = require('mongodb');
|
const { ObjectID } = require('mongodb');
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ const { Where } = require('../models/where');
|
|||||||
const { MyEvent } = require('../models/myevent');
|
const { MyEvent } = require('../models/myevent');
|
||||||
const { Contribtype } = require('../models/contribtype');
|
const { Contribtype } = require('../models/contribtype');
|
||||||
const { SendMsg } = require('../models/sendmsg');
|
const { SendMsg } = require('../models/sendmsg');
|
||||||
|
const { Permission } = require('../models/permission');
|
||||||
|
|
||||||
|
|
||||||
const tools = require('../tools/general');
|
const tools = require('../tools/general');
|
||||||
@@ -141,6 +142,8 @@ function getTableByTableName(tablename) {
|
|||||||
mytable = MyEvent;
|
mytable = MyEvent;
|
||||||
else if (tablename === 'contribtype')
|
else if (tablename === 'contribtype')
|
||||||
mytable = Contribtype;
|
mytable = Contribtype;
|
||||||
|
else if (tablename === 'permissions')
|
||||||
|
mytable = Permission;
|
||||||
|
|
||||||
return mytable
|
return mytable
|
||||||
}
|
}
|
||||||
@@ -152,7 +155,20 @@ router.post('/settable', authenticate, (req, res) => {
|
|||||||
|
|
||||||
mydata.idapp = req.user.idapp;
|
mydata.idapp = req.user.idapp;
|
||||||
|
|
||||||
|
if (params.table === 'permissions') {
|
||||||
|
if (mydata["_id"] === undefined) {
|
||||||
|
mydata._id = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (mydata["_id"] === undefined) {
|
||||||
|
mydata._id = new ObjectID()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
mytablerec = new mytable(mydata);
|
mytablerec = new mytable(mydata);
|
||||||
|
console.log('mytablerec', mytablerec);
|
||||||
|
|
||||||
|
|
||||||
return mytablerec.save()
|
return mytablerec.save()
|
||||||
.then(rec => {
|
.then(rec => {
|
||||||
@@ -320,9 +336,10 @@ router.get('/loadsite/:userId/:idapp/:sall', authenticate_noerror, (req, res) =>
|
|||||||
const operators = Operator.findAllIdApp(idapp);
|
const operators = Operator.findAllIdApp(idapp);
|
||||||
const wheres = Where.findAllIdApp(idapp);
|
const wheres = Where.findAllIdApp(idapp);
|
||||||
const contribtype = Contribtype.findAllIdApp(idapp);
|
const contribtype = Contribtype.findAllIdApp(idapp);
|
||||||
|
const permissions = Permission.findAllIdApp();
|
||||||
|
|
||||||
|
|
||||||
return Promise.all([bookedevent, eventlist, operators, wheres, contribtype])
|
return Promise.all([bookedevent, eventlist, operators, wheres, contribtype, permissions])
|
||||||
.then((arrdata) => {
|
.then((arrdata) => {
|
||||||
// console.table(arrdata);
|
// console.table(arrdata);
|
||||||
res.send({
|
res.send({
|
||||||
@@ -331,6 +348,7 @@ router.get('/loadsite/:userId/:idapp/:sall', authenticate_noerror, (req, res) =>
|
|||||||
operators: arrdata[2],
|
operators: arrdata[2],
|
||||||
wheres: arrdata[3],
|
wheres: arrdata[3],
|
||||||
contribtype: arrdata[4],
|
contribtype: arrdata[4],
|
||||||
|
permissions: arrdata[5],
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ webpush.setVapidDetails(subject, publicVapidKey, privateVapidKey);
|
|||||||
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
INITDB_FIRSTIME: true,
|
||||||
|
|
||||||
TYPE_PROJECT: 1,
|
TYPE_PROJECT: 1,
|
||||||
TYPE_TODO: 2,
|
TYPE_TODO: 2,
|
||||||
|
|
||||||
@@ -369,9 +371,28 @@ module.exports = {
|
|||||||
throw new Error('endRow must be number')
|
throw new Error('endRow must be number')
|
||||||
}
|
}
|
||||||
|
|
||||||
const query = [
|
let query = [];
|
||||||
{ $match: Object.assign({ idapp }, params.filter) }
|
if (params.filter && params.fieldsearch) {
|
||||||
];
|
let myregexp = {};
|
||||||
|
myregexp = new RegExp(params.filter.replace(' ', '|'), "ig");
|
||||||
|
|
||||||
|
const myfilters = [];
|
||||||
|
params.fieldsearch.forEach((field) => {
|
||||||
|
const data = {};
|
||||||
|
data[field] = myregexp;
|
||||||
|
myfilters.push(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
query = [
|
||||||
|
{ $match: { $or: myfilters } },
|
||||||
|
]
|
||||||
|
}
|
||||||
|
if (idapp > 0) {
|
||||||
|
query.push( { $match: { idapp } } );
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log('QUERYMATCH', query[0].$match.or);
|
||||||
|
// console.log('filter', params.filter);
|
||||||
|
|
||||||
if (params.sortBy) {
|
if (params.sortBy) {
|
||||||
// maybe we want to sort by blog title or something
|
// maybe we want to sort by blog title or something
|
||||||
@@ -399,7 +420,10 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
return query
|
|
||||||
|
console.log('query', query);
|
||||||
|
|
||||||
|
return query;
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -408,10 +432,17 @@ module.exports = {
|
|||||||
|
|
||||||
return mythistable
|
return mythistable
|
||||||
.aggregate(query)
|
.aggregate(query)
|
||||||
.then(([{ count, rows }]) => {
|
.then(([ris]) => {
|
||||||
return ({ count, rows })
|
if (ris) {
|
||||||
|
console.table(ris.rows);
|
||||||
|
console.log('ROW ', ris.count);
|
||||||
|
return ({ count: ris.count, rows: ris.rows })
|
||||||
|
} else {
|
||||||
|
return ({ count: 0, rows: [] })
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
|
console.error(err);
|
||||||
return {
|
return {
|
||||||
count: 0, rows: []
|
count: 0, rows: []
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user