Campo Citta di Nascita (nel profilo nuova maniera), manca ancora da sistemare l'edit

Se seleziono la Provincia , mi deve comparire la lista dei comuni
This commit is contained in:
paoloar77
2022-02-21 13:12:27 +01:00
parent 9aa7518e31
commit 50c3018baa
33 changed files with 1402 additions and 369 deletions

View File

@@ -1,6 +1,6 @@
# Freeplanet_serverside
A Node JS
- Node JS (ver. 16.14.0 or up)
## Install the dependencies
```bash
@@ -12,11 +12,31 @@ yarn
node src/server/server.js
```
### Build the test ambient
### Creating the ambient test
Create your .env.test file copying from .env.development
```bash
cp .env.development .env.test
```
And modifying the file with your configuration
### Build the ambient test
```bash
./deploynodejs_on_test.js
```
### Creating the ambient Production
Create your .env.production file copying from .env.development
```bash
cp .env.development .env.production
```
And modifying the file with your configuration
### Build the production
```bash
./deploynodejs_on_production.js

View File

@@ -4,7 +4,7 @@ module.exports = {
name: "FreePlanetServerSide",
script: "./src/server/server.js",
ignore_watch : ["node_modules"],
watch: true,
watch: false,
env: {
"PORT": 3000,
"NODE_ENV": "development"

View File

@@ -12,7 +12,7 @@
"test-watch": "nodemon --exec 'npm test'"
},
"engines": {
"node": "^14.4.0"
"node": "^16.14.0"
},
"author": "Paolo Arena",
"license": "MIT",

67
src/server/models/adtypegood.js Executable file
View File

@@ -0,0 +1,67 @@
const mongoose = require('mongoose').set('debug', false);
const Schema = mongoose.Schema;
mongoose.Promise = global.Promise;
mongoose.level = "";
const tools = require('../tools/general');
const {ObjectID} = require('mongodb');
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true;
});
const AdTypeGoodSchema = new Schema({
_id: {
type: Number,
},
descr: {
type: String,
},
});
AdTypeGoodSchema.pre('save', async function (next) {
if (this.isNew) {
const myrec = await AdTypeGood.findOne().limit(1).sort({_id:-1});
if (!!myrec) {
if (myrec._doc._id === 0)
this._id = 1;
else
this._id = myrec._doc._id + 1;
} else {
this._id = 1;
}
}
next();
});
AdTypeGoodSchema.statics.findAllIdApp = async function(idapp) {
const AdTypeGood = this;
const query = [
{$sort: {_id: 1}},
];
return AdTypeGood.aggregate(query).then((arrrec) => {
return arrrec;
});
};
AdTypeGoodSchema.statics.getFieldsForSearch = function() {
return [
{field: 'descr', type: tools.FieldType.string}];
};
AdTypeGoodSchema.statics.executeQueryTable = function(idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, 0, params);
};
const AdTypeGood = mongoose.model('AdTypeGood', AdTypeGoodSchema);
module.exports = {AdTypeGood};

View File

@@ -109,16 +109,29 @@ CitySchema.statics.executeQueryPickup = async function(idapp, params) {
const strfind = params.search;
if (strfind === '') {
if (strfind === '' && !params.filter) {
return [];
}
let filterfindexact = {comune: strfind};
const risexact = await City.find(filterfindexact, {comune: 1, prov: 1, reg: 1}).lean();
let filterfindexact = {};
if (strfind){
filterfindexact = {comune: strfind};
}
let limit = 10
let risexact = []
let filterfind = {comune: {$regex: '^' + strfind, $options: 'i'}};
let ris = await City.find(filterfind, {comune: 1, prov: 1, reg: 1}).lean().limit(10);
if (params.filter) {
filterfind = {...params.filter, ...filterfind}
limit = 200
} else{
risexact = await City.find(filterfindexact, {comune: 1, prov: 1, reg: 1}).lean();
}
let ris = await City.find(filterfind, {comune: 1, prov: 1, reg: 1}).lean().limit(limit);
return [...risexact, ...ris];

83
src/server/models/good.js Executable file
View File

@@ -0,0 +1,83 @@
const mongoose = require('mongoose').set('debug', false)
const Schema = mongoose.Schema;
mongoose.Promise = global.Promise;
mongoose.level = "F";
const tools = require('../tools/general');
const { ObjectID } = require('mongodb');
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true
});
const GoodSchema = new Schema({
_id: {
type: Number,
},
descr: {
type: String,
},
idSectorGood: [{
type: Number
}],
icon: {
type: String,
},
img: {
type: String,
},
});
GoodSchema.statics.findAllIdApp = async function (idapp) {
const Good = this;
const query = [
{ $sort: { descr: 1 } }
];
const res = Good
.aggregate(query)
.then((arrrec) => {
return arrrec
})
return res;
};
GoodSchema.pre('save', async function (next) {
if (this.isNew) {
const myrec = await Good.findOne().limit(1).sort({_id:-1});
if (!!myrec) {
if (myrec._doc._id === 0)
this._id = 1;
else
this._id = myrec._doc._id + 1;
} else {
this._id = 1;
}
}
next();
});
GoodSchema.statics.getFieldsForSearch = function () {
return [{ field: 'label', type: tools.FieldType.string },
{ field: 'descr', type: tools.FieldType.string }]
};
GoodSchema.statics.executeQueryTable = function (idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, 0, params);
};
const Good = mongoose.model('Good', GoodSchema);
module.exports = { Good };

View File

@@ -29,11 +29,6 @@ const MyBachecaSchema = new Schema({
type: Number,
default: 0,
},
idSubSkill: [
{
type: Number,
default: 0,
}],
idStatusSkill: [
{
type: Number,
@@ -361,14 +356,14 @@ MyBachecaSchema.statics.getMyRecById = function(idapp, id) {
'profile.qualifica': 1,
},
},
{
/*{
'$lookup': {
'from': 'subskills',
'localField': 'idSubSkill',
'foreignField': '_id',
'as': 'MyBacheca',
},
},
},*/
{
'$replaceRoot': {
'newRoot': {
@@ -390,7 +385,7 @@ MyBachecaSchema.statics.getMyRecById = function(idapp, id) {
'sector': 1,
'idSector': 1,
'idSkill': 1,
'idSubSkill': 1,
// 'idSubSkill': 1,
'idStatusSkill': 1,
'idContribType': 1,
'idCity': 1,
@@ -442,7 +437,7 @@ MyBachecaSchema.statics.getMyRecById = function(idapp, id) {
'sector': 1,
'idSector': 1,
'idSkill': 1,
'idSubSkill': 1,
// 'idSubSkill': 1,
'idStatusSkill': 1,
'idContribType': 1,
'idCity': 1,

481
src/server/models/mygood.js Executable file
View File

@@ -0,0 +1,481 @@
const mongoose = require('mongoose').set('debug', false);
const Schema = mongoose.Schema;
mongoose.Promise = global.Promise;
mongoose.level = 'F';
const tools = require('../tools/general');
const {ObjectID} = require('mongodb');
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true;
});
const MyGoodSchema = new Schema({
_id: {
type: Number,
},
idapp: {
type: String,
required: true,
},
userId: {type: Schema.Types.ObjectId, ref: 'User'},
idSectorGood: {
type: Number,
},
idGood: {
type: Number,
default: 0,
},
idShipping: [
{
type: Number,
}],
idContribType: [
{
type: String,
}],
idCity: [
{
type: Number,
}],
numLevel: {
type: Number,
default: 0,
},
adType: {
type: Number,
},
photos: [
{
imagefile: {
type: String,
},
alt: {
type: String,
},
description: {
type: String,
},
}],
note: {
type: String,
default: '',
},
descr: {
type: String,
},
//**ADDFIELD_MyGood
website: {
type: String,
},
date_created: {
type: Date,
default: Date.now,
},
date_updated: {
type: Date,
default: Date.now,
},
});
MyGoodSchema.pre('save', async function(next) {
if (this.isNew) {
const myrec = await MyGood.findOne().limit(1).sort({_id: -1});
if (!!myrec) {
if (myrec._doc._id === 0)
this._id = 1;
else
this._id = myrec._doc._id + 1;
} else {
this._id = 1;
}
this.date_created = new Date();
}
next();
});
MyGoodSchema.statics.findAllIdApp = async function(idapp) {
const MyGood = this;
const query = [
{$match: {idapp}},
{$sort: {descr: 1}},
];
return MyGood.aggregate(query).then((arrrec) => {
return arrrec;
});
};
MyGoodSchema.statics.getFieldsForSearch = function() {
return [];
};
MyGoodSchema.statics.getFieldsLastForSearch = function() {
return [
{field: 'note', type: tools.FieldType.string},
{field: 'descr', type: tools.FieldType.string},
{field: 'recGood.descr', type: tools.FieldType.string},
{field: 'MyGood.descr', type: tools.FieldType.string},
];
};
MyGoodSchema.statics.executeQueryTable = function(idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
params.fieldsearch_last = this.getFieldsLastForSearch();
const otherparams = {
lookup1: {
lk_tab: 'users',
lk_LF: 'userId',
lk_FF: '_id',
lk_as: 'user',
af_objId_tab: 'myId',
lk_proj: {
idGood: 1,
idShipping: 1,
MyGood: 1,
idStatusGood: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
website: 1,
//**ADDFIELD_MyGood
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,
username: 1,
name: 1,
surname: 1,
'profile.img': 1,
'profile.qualifica': 1,
},
},
};
params = {...params, ...otherparams};
return tools.executeQueryTable(this, idapp, params);
};
MyGoodSchema.statics.getMyGoodById = function(idapp, idGood) {
const MyGood = this;
const query = [
{
'$match': {
'$and': [
{
'_id': parseInt(idGood),
},
],
},
},
{
'$match': {
'idapp': idapp,
},
},
{
'$sort': {
'desc': 1,
},
},
{
'$addFields': {
'myId1': {
'$toObjectId': '$userId',
},
},
},
{
'$lookup': {
'from': 'users',
'localField': 'myId1',
'foreignField': '_id',
'as': 'user',
},
},
{
'$replaceRoot': {
'newRoot': {
'$mergeObjects': [
{
'$arrayElemAt': [
'$user',
0,
],
},
'$$ROOT',
],
},
},
},
{
'$project': {
'recGood': 1,
'sectorgood': 1,
'idSectorGood': 1,
'idGood': 1,
'idShipping': 1,
'idStatusGood': 1,
'idContribType': 1,
'idCity': 1,
'numLevel': 1,
adType: 1,
'photos': 1,
note: 1,
website: 1,
//**ADDFIELD_MyGood
'descr': 1,
'date_created': 1,
'date_updated': 1,
'userId': 1,
'username': 1,
'name': 1,
'surname': 1,
'comune': 1,
'mycities': 1,
'profile.img': 1,
'profile.qualifica': 1,
},
},
{
'$lookup': {
'from': 'goods',
'localField': 'idGood',
'foreignField': '_id',
'as': 'recGood',
},
},
{
'$replaceRoot': {
'newRoot': {
'$mergeObjects': [
{
'$arrayElemAt': [
'$recGood',
0,
],
},
'$$ROOT',
],
},
},
},
{
'$project': {
'recGood': 1,
'sectorgood': 1,
'idSectorGood': 1,
'idGood': 1,
'idShipping': 1,
'idStatusGood': 1,
'idContribType': 1,
'idCity': 1,
'numLevel': 1,
adType: 1,
'photos': 1,
'note': 1,
website: 1,
//**ADDFIELD_MyGood
'descr': 1,
'date_created': 1,
'date_updated': 1,
'userId': 1,
'username': 1,
'name': 1,
'surname': 1,
'comune': 1,
'mycities': 1,
'profile.img': 1,
'profile.qualifica': 1,
},
},
{
'$lookup': {
'from': 'sectorgoods',
'localField': 'recGood.idSectorGood',
'foreignField': '_id',
'as': 'sectorgood',
},
},
{
'$replaceRoot': {
'newRoot': {
'$mergeObjects': [
{
'$arrayElemAt': [
'$sectorgood',
0,
],
},
'$$ROOT',
],
},
},
},
{
'$project': {
'recGood': 1,
'sectorgood': 1,
'idSectorGood': 1,
'idGood': 1,
'idShipping': 1,
'idStatusGood': 1,
'idContribType': 1,
'idCity': 1,
'numLevel': 1,
adType: 1,
'photos': 1,
'note': 1,
website: 1,
//**ADDFIELD_MyGood
'descr': 1,
'date_created': 1,
'date_updated': 1,
'userId': 1,
'username': 1,
'name': 1,
'surname': 1,
'comune': 1,
'mycities': 1,
'profile.img': 1,
'profile.qualifica': 1,
},
},
{
'$lookup': {
'from': 'subgoods',
'localField': 'idShipping',
'foreignField': '_id',
'as': 'MyGood',
},
},
{
'$replaceRoot': {
'newRoot': {
'$mergeObjects': [
{
'$arrayElemAt': [
'$MyGood',
0,
],
},
'$$ROOT',
],
},
},
},
{
'$project': {
'recGood': 1,
'sectorgood': 1,
'idSectorGood': 1,
'idGood': 1,
'idShipping': 1,
'idStatusGood': 1,
'idContribType': 1,
'idCity': 1,
'numLevel': 1,
adType: 1,
'photos': 1,
'note': 1,
website: 1,
//**ADDFIELD_MyGood
'descr': 1,
'date_created': 1,
'date_updated': 1,
'userId': 1,
'username': 1,
'name': 1,
'surname': 1,
'comune': 1,
'mycities': 1,
'profile.img': 1,
'profile.qualifica': 1,
},
},
{
'$lookup': {
'from': 'cities',
'localField': 'idCity',
'foreignField': '_id',
'as': 'mycities',
},
},
{
'$replaceRoot': {
'newRoot': {
'$mergeObjects': [
{
'$arrayElemAt': [
'$mycities',
0,
],
},
'$$ROOT',
],
},
},
},
{
'$project': {
'recGood': 1,
'sectorgood': 1,
'idSectorGood': 1,
'idGood': 1,
'idShipping': 1,
'idStatusGood': 1,
'idContribType': 1,
'idCity': 1,
'numLevel': 1,
adType: 1,
'photos': 1,
'note': 1,
website: 1,
//**ADDFIELD_MyGood
'descr': 1,
'date_created': 1,
'date_updated': 1,
'userId': 1,
'username': 1,
'name': 1,
'surname': 1,
'comune': 1,
'mycities': 1,
'profile.img': 1,
'profile.qualifica': 1,
},
},
];
return MyGood.aggregate(query).then((rec) => {
return rec ? rec[0] : null;
});
};
MyGoodSchema.statics.getCompleteRecord = function(idapp, id) {
const MyGood = this;
return MyGood.getMyGoodById(idapp, id);
};
const MyGood = mongoose.model('MyGood', MyGoodSchema);
module.exports = {MyGood};

View File

@@ -106,9 +106,10 @@ MyGroupSchema.statics.executeQueryTable = function(idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
if (params.options) {
if (tools.isBitActive(params.options,
shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS)) {
if (tools.isBitActive(params.options, shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS)) {
params.fieldsearch = User.getFieldsForSearchUserFriend();
} else if (tools.isBitActive(params.options, shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS)) {
params.fieldsearch = User.getFieldsForSearchUserFriend_AllWords();
}
}

View File

@@ -29,11 +29,13 @@ const MySkillSchema = new Schema({
type: Number,
default: 0,
},
idSubSkill: [
/*idSubSkill: [
{
type: Number,
default: 0,
}],
*/
idStatusSkill: [
{
type: Number,
@@ -146,7 +148,7 @@ MySkillSchema.statics.executeQueryTable = function(idapp, params) {
af_objId_tab: 'myId',
lk_proj: {
idSkill: 1,
idSubSkill: 1,
// idSubSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
@@ -234,7 +236,7 @@ MySkillSchema.statics.getMySkillByIdkill = function(idapp, idSkill) {
'sector': 1,
'idSector': 1,
'idSkill': 1,
'idSubSkill': 1,
// 'idSubSkill': 1,
'idStatusSkill': 1,
'idContribType': 1,
'idCity': 1,
@@ -286,7 +288,7 @@ MySkillSchema.statics.getMySkillByIdkill = function(idapp, idSkill) {
'sector': 1,
'idSector': 1,
'idSkill': 1,
'idSubSkill': 1,
// 'idSubSkill': 1,
'idStatusSkill': 1,
'idContribType': 1,
'idCity': 1,
@@ -338,7 +340,7 @@ MySkillSchema.statics.getMySkillByIdkill = function(idapp, idSkill) {
'sector': 1,
'idSector': 1,
'idSkill': 1,
'idSubSkill': 1,
//'idSubSkill': 1,
'idStatusSkill': 1,
'idContribType': 1,
'idCity': 1,
@@ -361,7 +363,7 @@ MySkillSchema.statics.getMySkillByIdkill = function(idapp, idSkill) {
'profile.qualifica': 1,
},
},
{
/*{
'$lookup': {
'from': 'subskills',
'localField': 'idSubSkill',
@@ -369,6 +371,8 @@ MySkillSchema.statics.getMySkillByIdkill = function(idapp, idSkill) {
'as': 'myskill',
},
},
*/
{
'$replaceRoot': {
'newRoot': {
@@ -390,7 +394,7 @@ MySkillSchema.statics.getMySkillByIdkill = function(idapp, idSkill) {
'sector': 1,
'idSector': 1,
'idSkill': 1,
'idSubSkill': 1,
// 'idSubSkill': 1,
'idStatusSkill': 1,
'idContribType': 1,
'idCity': 1,
@@ -442,7 +446,7 @@ MySkillSchema.statics.getMySkillByIdkill = function(idapp, idSkill) {
'sector': 1,
'idSector': 1,
'idSkill': 1,
'idSubSkill': 1,
// 'idSubSkill': 1,
'idStatusSkill': 1,
'idContribType': 1,
'idCity': 1,

83
src/server/models/sectorgood.js Executable file
View File

@@ -0,0 +1,83 @@
const mongoose = require('mongoose').set('debug', false)
const Schema = mongoose.Schema;
mongoose.Promise = global.Promise;
mongoose.level = "F";
const tools = require('../tools/general');
const { ObjectID } = require('mongodb');
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true
});
const SectorGoodSchema = new Schema({
_id: {
type: Number,
},
descr: {
type: String,
},
idSectorGood: {
type: Number
},
icon: {
type: String,
},
img: {
type: String,
},
color: {
type: String,
},
theme: {
type: String,
},
});
SectorGoodSchema.pre('save', async function (next) {
if (this.isNew) {
const myrec = await SectorGood.findOne().limit(1).sort({_id:-1});
if (!!myrec) {
if (myrec._doc._id === 0)
this._id = 1;
else
this._id = myrec._doc._id + 1;
} else {
this._id = 1;
}
}
next();
});
SectorGoodSchema.statics.findAllIdApp = async function (idapp) {
const SectorGood = this;
const query = [
{ $sort: { descr: 1 } }
];
return SectorGood
.aggregate(query)
.then((arrrec) => {
return arrrec
})
};
SectorGoodSchema.statics.getFieldsForSearch = function () {
return [{ field: 'descr', type: tools.FieldType.string }]
};
SectorGoodSchema.statics.executeQueryTable = function (idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, 0, params);
};
const SectorGood = mongoose.model('SectorGood', SectorGoodSchema);
module.exports = { SectorGood };

View File

@@ -21,6 +21,9 @@ const StatusSkillSchema = new Schema({
color: {
type: String,
},
icon: {
type: String,
},
theme: {
type: String,
},

View File

@@ -260,6 +260,9 @@ const UserSchema = new mongoose.Schema({
type: String,
trim: true,
},
born_city_id: {
type: Number,
},
born_province: {
type: String,
trim: true,
@@ -1217,7 +1220,7 @@ UserSchema.statics.getUserProfileByUsername = async function(
'profile.img': 1,
'profile.sex': 1,
'profile.dateofbirth': 1,
'profile.born_city': 1,
'profile.born_city_id': 1,
'profile.born_province': 1,
'profile.born_country': 1,
email: 1,
@@ -1245,23 +1248,72 @@ UserSchema.statics.getUserProfileByUsername = async function(
'profile.img': 1,
'profile.sex': 1,
'profile.dateofbirth': 1,
'profile.born_city': 1,
'profile.born_city_id': 1,
'profile.born_province': 1,
'profile.born_country': 1,
'mycities': 1,
'comune': 1,
email: 1,
date_reg: 1,
};
}
return User.findOne({
const myfind = {
idapp, username,
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
};
const query = [
{$match: myfind},
{
$lookup: {
from: 'cities',
localField: 'profile.born_city_id',
foreignField: '_id',
as: 'mycities',
},
},
{
'$replaceRoot': {
'newRoot': {
'$mergeObjects': [
{
'$arrayElemAt': [
'$mycities',
0,
],
},
'$$ROOT',
],
},
},
},
{$project: whatToShow},
];
try {
const ris = await User.aggregate(query);
if (ris && ris.length > 0)
return ris[0];
} catch (e) {
return null;
}
return null;
/*
return User.findOne({
}, whatToShow).then((rec) => {
return (rec._doc);
}).catch((e) => {
return null;
});
*/
};
UserSchema.statics.getArrUsernameFromFieldByUsername = async function(
@@ -1417,7 +1469,8 @@ UserSchema.statics.setFriendsCmd = async function(
}
if (ris) {
// Invia una notifica alla persona
tools.sendNotificationByUsername(idapp, usernameDest, cmd, true, usernameOrig);
tools.sendNotificationByUsername(idapp, usernameDest, cmd, true,
usernameOrig);
}
} else {
if (foundIfAlreadyAskFriend) {
@@ -1587,7 +1640,7 @@ function getWhatToShow(idapp, username) {
'profile.img': 1,
'profile.sex': 1,
'profile.dateofbirth': 1,
'profile.born_city': 1,
'profile.born_city_id': 1,
'profile.born_province': 1,
'profile.born_country': 1,
email: 1,
@@ -2218,12 +2271,19 @@ UserSchema.statics.getFieldsForSearchUserFriend = function() {
return [{field: 'username', type: tools.FieldType.exact}];
};
UserSchema.statics.getFieldsForSearchUserFriend_AllWords = function() {
return [{field: 'username', type: tools.FieldType.string}];
};
UserSchema.statics.executeQueryTable = function(idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
if (params.options) {
if (tools.isBitActive(params.options,
shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS)) {
shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS)) {
params.fieldsearch = this.getFieldsForSearchUserFriend();
} else if (tools.isBitActive(params.options,
shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS)) {
params.fieldsearch = this.getFieldsForSearchUserFriend_AllWords();
}
}
return tools.executeQueryTable(this, idapp, params);
@@ -2557,7 +2617,9 @@ UserSchema.statics.checkUser = async function(idapp, username) {
UserSchema.statics.calculateStat = async function(idapp, username) {
const User = this;
try {
const {MySkill} = require('../models/myskill');
const {MyGood} = require('../models/mygood');
const {MyBacheca} = require('../models/mybacheca');
const {MyGroup} = require('../models/mygroup');
@@ -2570,12 +2632,16 @@ UserSchema.statics.calculateStat = async function(idapp, username) {
});
const numMySkills = await MySkill.countDocuments({idapp});
const numMyGoods = await MyGood.countDocuments({idapp});
const numMyBachecas = await MyBacheca.countDocuments({idapp});
const numGroups = await MyGroup.countDocuments({idapp});
return {numMySkills, numMyBachecas, numUsersReg, numGroups};
return {numMySkills, numMyGoods, numMyBachecas, numUsersReg, numGroups};
} catch (e) {
console.error(e.message);
}
};

View File

@@ -0,0 +1,6 @@
module.exports = {
list: [
{_id: 1, descr: 'Offro'},
{_id: 2, descr: 'Cerco'},
],
};

View File

@@ -2,71 +2,71 @@ module.exports = {
list: [
{
_id: 1,
descr: "Abitare",
descr: 'Abitare',
},
{
_id: 2,
descr: "Arte",
descr: 'Arte',
},
{
_id: 3,
descr: "Alimentazione",
descr: 'Alimentazione',
},
{
_id: 4,
descr: "Artigianato",
descr: 'Artigianato',
},
{
_id: 5,
descr: "Assistenza Legale",
descr: 'Assistenza Legale',
},
{
_id: 6,
descr: "Benessere e Salute",
descr: 'Benessere e Salute',
},
{
_id: 7,
descr: "Gruppi Locali",
descr: 'Gruppi Locali',
},
{
_id: 8,
descr: "Istruzione",
descr: 'Istruzione',
},
{
_id: 2,
descr: "Arte",
descr: 'Arte',
},
{
_id: 9,
descr: "Mobilità",
descr: 'Mobilità',
},
{
_id: 10,
descr: "Sport",
descr: 'Sport',
},
{
_id: 11,
descr: "Servizi",
descr: 'Servizi',
},
{
_id: 12,
descr: "Tecnologia",
descr: 'Tecnologia',
},
{
_id: 13,
descr: "Turismo",
descr: 'Turismo',
},
{
_id: 14,
descr: "Ecovillaggi",
descr: 'Ecovillaggi',
},
{
_id: 15,
descr: "Feste",
descr: 'Feste',
},
{
_id: 16,
descr: "Altro",
descr: 'Altro',
},
]
}
],
};

View File

@@ -57,7 +57,7 @@ module.exports = {
{
"_id" : ObjectID("61bc454867de9a1f54b254f2"),
"idapp" : "12",
"label" : "Baratto (scambio Beni o Servizi)",
"label" : "Baratto",
"__v" : 0
},
{
@@ -69,7 +69,7 @@ module.exports = {
{
"_id" : ObjectID("61bc482667de9a1f64b254ab"),
"idapp" : "12",
"label" : "Monete Alternative",
"label" : "Monete Alternative (Ris, Sardex, Gaiax, Val, Cripto)",
"__v" : 0
},
{
@@ -158,31 +158,7 @@ module.exports = {
{
"_id" : ObjectID("51bc482667de9a1f64b254ab"),
"idapp" : "13",
"label" : "Monete Alternative",
"__v" : 0
},
{
"_id" : ObjectID("51bc482667de9a1f64b254ac"),
"idapp" : "13",
"label" : "Ris (RISO)",
"__v" : 0
},
{
"_id" : ObjectID("51bc482667de9a1f64b254ad"),
"idapp" : "13",
"label" : "Sardex",
"__v" : 0
},
{
"_id" : ObjectID("51bc482667de9a1f64b254ae"),
"idapp" : "13",
"label" : "Gaiax (ProItaly)",
"__v" : 0
},
{
"_id" : ObjectID("51bc482667de9a1f64b254af"),
"idapp" : "13",
"label" : "Val (VAL.AZ.CO.)",
"label" : "Monete Alternative (Ris, Sardex, Gaiax, Val, Cripto)",
"__v" : 0
},
{
@@ -191,11 +167,5 @@ module.exports = {
"label" : "Euro",
"__v" : 0
},
{
"_id" : ObjectID("51bc482667de9a1f64b257fb"),
"idapp" : "13",
"label" : "Criptomonete",
"__v" : 0
},
]
}

View File

@@ -0,0 +1,58 @@
module.exports = {
list: [
{_id: 1, idSectorGood: [1], descr: 'Abbigliamento donna'},
{_id: 2, idSectorGood: [1], descr: 'Abbigliamento uomo'},
{_id: 3, idSectorGood: [1], descr: 'Accessori'},
{_id: 4, idSectorGood: [1], descr: 'Scarpe donna'},
{_id: 5, idSectorGood: [1], descr: 'Scarpe uomo'},
{_id: 6, idSectorGood: [2], descr: 'Bagno'},
{_id: 7, idSectorGood: [2], descr: 'Camera'},
{_id: 8, idSectorGood: [2], descr: 'Complementi d\'arredo'},
{_id: 9, idSectorGood: [2], descr: 'Cucina'},
{_id: 10, idSectorGood: [2], descr: 'Esterno'},
{_id: 11, idSectorGood: [2], descr: 'Soggiorno'},
{_id: 12, idSectorGood: [3], descr: 'Altri veicoli'},
{_id: 13, idSectorGood: [3], descr: 'Auto'},
{_id: 14, idSectorGood: [3], descr: 'Moto'},
{_id: 15, idSectorGood: [3], descr: 'Camper'},
{_id: 16, idSectorGood: [3], descr: 'Van (furgoni camperizzati)'},
{_id: 17, idSectorGood: [4], descr: 'Bigiotteria'},
{_id: 18, idSectorGood: [4], descr: 'Lavoretti'},
{_id: 19, idSectorGood: [4], descr: 'Mangia e bevi'},
{_id: 20, idSectorGood: [5], descr: 'Accessori bellezza'},
{_id: 21, idSectorGood: [5], descr: 'Creme e detergenti'},
{_id: 22, idSectorGood: [5], descr: 'Trucchi e profumi'},
{_id: 23, idSectorGood: [6], descr: 'Giocattoli e giochi di società'},
{_id: 24, idSectorGood: [6], descr: 'Igiene e pannolini'},
{_id: 25, idSectorGood: [6], descr: 'Lettini e culle'},
{_id: 26, idSectorGood: [6], descr: 'Passeggini & co'},
{_id: 27, idSectorGood: [6], descr: 'Vestiti e scarpe'},
{_id: 28, idSectorGood: [7], descr: 'Bere'},
{_id: 29, idSectorGood: [7], descr: 'Mangiare'},
{_id: 30, idSectorGood: [8], descr: 'Antiquariato'},
{_id: 31, idSectorGood: [8], descr: 'Collezionismo'},
{_id: 32, idSectorGood: [9], descr: 'Altro'},
{_id: 33, idSectorGood: [9], descr: 'Cellulari e accessori'},
{_id: 34, idSectorGood: [9], descr: 'Computer e software'},
{_id: 35, idSectorGood: [9], descr: 'Elettrodomestici'},
{_id: 36, idSectorGood: [9], descr: 'Fotografia'},
{_id: 37, idSectorGood: [9], descr: 'Videogiochi e console'},
{_id: 38, idSectorGood: [10], descr: 'Console'},
{_id: 39, idSectorGood: [10], descr: 'Giochi di società'},
{_id: 40, idSectorGood: [10], descr: 'PC games'},
{_id: 41, idSectorGood: [11], descr: 'Attrezzatura'},
{_id: 42, idSectorGood: [11], descr: 'Materiali'},
{_id: 43, idSectorGood: [11], descr: 'Prodotti'},
{_id: 44, idSectorGood: [11], descr: 'Strumentazione'},
{_id: 45, idSectorGood: [12], descr: ' riviste e fumetti'},
{_id: 46, idSectorGood: [13], descr: 'CD e vinili'},
{_id: 47, idSectorGood: [13], descr: 'Film e DVD'},
{_id: 48, idSectorGood: [13], descr: 'Strumenti musicali'},
{_id: 49, idSectorGood: [14], descr: 'Arredamento'},
{_id: 50, idSectorGood: [14], descr: 'Attrezzature e accessori'},
{_id: 51, idSectorGood: [14], descr: 'Cancelleria e cartucce'},
{_id: 52, idSectorGood: [15], descr: 'Abbigliamento'},
{_id: 53, idSectorGood: [15], descr: 'Attrezzature e accessori Sport'},
{_id: 54, idSectorGood: [15], descr: 'Bici e accessori'},
],
};

View File

@@ -2,7 +2,7 @@ module.exports = {
list: [
{_id: 0, descr: '[Nessuno]', years_of_exp: 0},
{_id: 1, descr: 'Elementare', years_of_exp: 1},
{_id: 2, descr: 'Intermedio', years_of_exp: 3},
{_id: 3, descr: 'Avanzato', years_of_exp: 5},
{_id: 2, descr: 'Intermedio', years_of_exp: 2},
{_id: 3, descr: 'Avanzato', years_of_exp: 3},
],
};

View File

@@ -1,5 +1,10 @@
const tools = require('../tools/general');
const Path = require('path')
const Path = require('path');
const shared_consts = require('../tools/shared_nodejs');
const globalTables = require('../tools/globalTables');
module.exports = {
@@ -18,7 +23,7 @@ module.exports = {
});
}
}
}catch (e){
} catch (e) {
console.log('error insertIntoDb', e);
}
@@ -39,7 +44,7 @@ module.exports = {
if (mydbfile && mydbfile.list) {
for (const rec of mydbfile.list) {
let obj = {}
let obj = {};
obj[field] = rec[field];
var mynewrec = new table(rec);
@@ -55,24 +60,22 @@ module.exports = {
if (ris) {
numrec++;
}
}catch (e){
} catch (e) {
console.log('error ', e);
}
//await table.insertMany(rec, {ordered: false});
}
}
if (numrec > 0)
console.log('*** Insert', numrec, 'record on '+tablename);
console.log('*** Insert', numrec, 'record on ' + tablename);
}
}
}catch (e){
} catch (e) {
console.log('error insertIntoDb', e);
}
},
async rewriteTable(table) {
@@ -80,11 +83,14 @@ module.exports = {
let mytab = null;
let field = '';
try {
const {City} = require('../models/city');
const {Province} = require('../models/province');
const {Sector} = require('../models/sector');
const {SectorGood} = require('../models/sectorgood');
const {Skill} = require('../models/skill');
const {SubSkill} = require('../models/subskill');
const {Good} = require('../models/good');
// const {SubSkill} = require('../models/subskill');
const {Contribtype} = require('../models/contribtype');
const {Level} = require('../models/level');
@@ -97,12 +103,18 @@ module.exports = {
} else if (table === 'sectors') {
mytab = Sector;
field = 'descr';
} else if (table === 'sectorgoods') {
mytab = SectorGood;
field = 'descr';
} else if (table === 'skills') {
mytab = Skill;
field = 'descr';
} else if (table === 'subskills') {
mytab = SubSkill;
} else if (table === 'goods') {
mytab = Good;
field = 'descr';
//} else if (table === 'subskills') {
// mytab = SubSkill;
// field = 'descr';
} else if (table === 'contribtypes') {
mytab = Contribtype;
field = 'label';
@@ -112,70 +124,48 @@ module.exports = {
}
if (mytab) {
console.log('Delete ', table)
console.log('Delete ', table);
await mytab.deleteMany({});
await this.insertIntoDb_NoDuplicate(false, table, mytab, field)
await this.insertIntoDb_NoDuplicate(false, table, mytab, field);
}
return true;
} catch (e) {
console.error('Err: ' + e);
}
return false;
},
async popolaTabelleNuove() {
const abilita = true;
const scrivi_citta = false;
const scrivi_contribtype = false;
let ris = null;
try {
console.log('INIZIO - popolaTabelleNuove');
console.log('INIZIO - popolaTabelleNuove')
for (const rec of shared_consts.TABLES_POPULATE_DATA) {
let mytable = globalTables.getTableByTableName(rec.table);
// Sectors
const {Sector} = require('../models/sector');
await this.insertIntoDb_NoDuplicate(abilita, 'sectors', Sector, 'descr')
let attiva = abilita;
if (rec.table === 'cities' || rec.table === 'province') {
attiva = scrivi_citta;
}
if (rec.table === 'contribtypes') {
attiva = scrivi_contribtype;
}
// CatGrps
const {CatGrp} = require('../models/catgrp');
await this.insertIntoDb_NoDuplicate(abilita, 'catgrps', CatGrp, 'descr')
await this.insertIntoDb_NoDuplicate(attiva, rec.table, mytable, rec.key);
}
// Skills (Competenze)
const {Skill} = require('../models/skill');
await this.insertIntoDb_NoDuplicate(abilita, 'skills', Skill, 'descr')
console.log('FINE - popolaTabelleNuove');
// SubSectors
const {SubSkill} = require('../models/subskill');
await this.insertIntoDb_NoDuplicate(abilita, 'subskills', SubSkill, 'descr')
// Levels
const {Level} = require('../models/level');
await this.insertIntoDb_NoDuplicate(abilita, 'levels', Level, 'descr')
// Status
const {StatusSkill} = require('../models/statusSkill');
await this.insertIntoDb_NoDuplicate(abilita, 'statusskills', StatusSkill, 'descr')
// Cities
const {City} = require('../models/city');
await this.insertIntoDb_NoDuplicate(scrivi_citta, 'cities', City, 'comune')
// Province
const {Province} = require('../models/province');
await this.insertIntoDb_NoDuplicate(scrivi_citta, 'provinces', Province, 'descr')
// Contribtypes
const {Contribtype} = require('../models/contribtype');
await this.insertIntoDb_NoDuplicate(false, 'contribtypes', Contribtype, 'label')
// AdTypes
const {AdType} = require('../models/adtype');
await this.insertIntoDb_NoDuplicate(abilita, 'adtypes', AdType, 'descr')
console.log('FINE - popolaTabelleNuove')
}catch (e) {
return true;
} catch (e) {
console.error('Err: ' + e);
return false;
}
},

View File

@@ -0,0 +1,19 @@
module.exports = {
list: [
{_id: 1, descr: 'Abbigliamento'},
{_id: 2, descr: 'Arredamento'},
{_id: 3, descr: 'Auto e Moto'},
{_id: 4, descr: 'Autoproduzione'},
{_id: 5, descr: 'Bellezza e igiene'},
{_id: 6, descr: 'Bimbi'},
{_id: 7, descr: 'Cibo'},
{_id: 8, descr: 'Collezionismo e Antiquariato'},
{_id: 9, descr: 'Elettronica'},
{_id: 10, descr: 'Giochi'},
{_id: 11, descr: 'Hobby'},
{_id: 12, descr: 'Libri'},
{_id: 13, descr: 'Musica e film'},
{_id: 14, descr: 'Scuola e ufficio'},
{_id: 15, descr: 'Sport'},
{_id: 16, descr: 'Un po\' di tutto'}],
};

View File

@@ -1,31 +1,17 @@
module.exports = {
list: [
{
descr: 'Abitare',
},
{
descr: 'Alimentazione',
},
{
descr: 'Animali',
},
{
descr: 'Arte e Cultura',
},
{
descr: 'Benessere e Salute',
},
{
descr: 'Servizi per la Casa',
},
{
descr: 'Servizi per la Persona',
},
{
descr: 'Tecnologia',
},
{
descr: 'Turismo',
},
{_id: 1, descr: 'Abitare'},
{_id: 2, descr: 'Agricoltura'},
{_id: 3, descr: 'Alimentazione'},
{_id: 4, descr: 'Animali'},
{_id: 5, descr: 'Auto e Veicoli'},
{_id: 6, descr: 'Benessere'},
{_id: 7, descr: 'Casa'},
{_id: 8, descr: 'Intrattenimento'},
{_id: 9, descr: 'Ospitalità'},
{_id: 10, descr: 'Persona'},
{_id: 11, descr: 'Progetti di Gruppo'},
{_id: 12, descr: 'Salute'},
{_id: 13, descr: 'Tecnologia'},
],
};

View File

@@ -1,108 +1,106 @@
module.exports = {
list: [
{idSector: [1], descr: 'Arredamento'},
{idSector: [1], descr: 'Costruzioni'},
{idSector: [1], descr: 'Ecovillaggi / Comunità'},
{idSector: [1], descr: 'Giardini'},
{idSector: [1], descr: 'Impianti TV'},
{idSector: [1], descr: 'Pozzi Acqua'},
{idSector: [1], descr: 'Prodotti Casa'},
{idSector: [1], descr: 'Pulizie'},
{idSector: [1], descr: 'Restaurazioni'},
{idSector: [1], descr: 'Riparazioni'},
{idSector: [1], descr: 'Servizi Casa'},
{idSector: [1], descr: 'Sgombero'},
{idSector: [1], descr: 'Sicurezza'},
{idSector: [2], descr: 'Agricoltura'},
{idSector: [2], descr: 'Alimentari'},
{idSector: [2], descr: 'Cucina'},
{idSector: [2], descr: 'Altro'},
{idSector: [2], descr: 'Autoproduzioni'},
{idSector: [2], descr: 'Azienda Agricola'},
{idSector: [3], descr: 'Dog sitter'},
{idSector: [3], descr: 'Pet sitter'},
{idSector: [3], descr: 'Toelettatura cani'},
{idSector: [3], descr: 'Toelettatura gatti'},
{idSector: [3], descr: 'Vendita prodotti'},
{idSector: [3], descr: 'Cura degli animali'},
{idSector: [3], descr: 'Veterinario'},
{idSector: [4], descr: 'Ballo'},
{idSector: [4], descr: 'Canto'},
{idSector: [4], descr: 'Cinema'},
{idSector: [4], descr: 'Fotografia'},
{idSector: [4], descr: 'Letteratura'},
{idSector: [4], descr: 'Musica'},
{idSector: [4], descr: 'Pittura'},
{idSector: [4], descr: 'Libri'},
{idSector: [4], descr: 'Teatro'},
{idSector: [4], descr: 'Moda'},
{idSector: [5], descr: 'Benessere Corpo'},
{idSector: [5], descr: 'Benessere Olistico'},
{idSector: [5], descr: 'Centro Benessere'},
{idSector: [5], descr: 'Gravidanza'},
{idSector: [5], descr: 'Medicina Alternativa'},
{idSector: [5], descr: 'Medicina Convenzionale'},
{idSector: [5], descr: 'Pronto Soccorso'},
{idSector: [5], descr: 'Operatore Olistico'},
{idSector: [5], descr: 'Operatori Sanitari'},
{idSector: [5], descr: 'Salute Corpo'},
{idSector: [5], descr: 'Salute Globale'},
{idSector: [5], descr: 'Salute Psiche'},
{idSector: [5], descr: 'Servizi per la Persona'},
{idSector: [5], descr: 'Strutture'},
{idSector: [6], descr: 'Aspetti Burocratici'},
{idSector: [6], descr: 'Elettricista'},
{idSector: [6], descr: 'Fabbro e lavorazioni ferro/acciaio'},
{idSector: [6], descr: 'Falegname'},
{idSector: [6], descr: 'Frigorista'},
{idSector: [6], descr: 'Giardiniere'},
{idSector: [6], descr: 'Idraulico'},
{idSector: [6], descr: 'Imbianchino'},
{idSector: [6], descr: 'Impermeabilizzazioni'},
{idSector: [6], descr: 'Installatore Linea Telefono e Modem'},
{idSector: [6], descr: 'Installazioni'},
{idSector: [6], descr: 'Restaurazione'},
{idSector: [6], descr: 'Riparazioni Casa'},
{idSector: [6], descr: 'Servizio Traslochi'},
{idSector: [6], descr: 'Riscaldamento'},
{idSector: [6], descr: 'Smontaggio e Montaggio'},
{idSector: [6], descr: 'Strutturazioni e Riparazioni'},
{idSector: [6], descr: 'Tuttofare'},
{idSector: [6], descr: 'Vetraio'},
{idSector: [7], descr: 'Abbigliamento'},
{idSector: [7], descr: 'Assicurazioni'},
{idSector: [7], descr: 'Assistenza Anziani'},
{idSector: [7], descr: 'Assistenza Fiscale'},
{idSector: [7], descr: 'Assistenza Legale'},
{idSector: [7], descr: 'Assistenza Persone'},
{idSector: [7], descr: 'Baby sitter'},
{idSector: [7], descr: 'Corsi'},
{idSector: [7], descr: 'Corsi per Bambini e Adolescenti'},
{idSector: [7], descr: 'Finanza'},
{idSector: [7], descr: 'Insegnante'},
{idSector: [7], descr: 'Interprete e traduzioni'},
{idSector: [7], descr: 'Educazione'},
{idSector: [7], descr: 'Formazione'},
{idSector: [7], descr: 'Gruppi di Acquisto'},
{idSector: [7], descr: 'Banca del Tempo'},
{idSector: [7], descr: 'Collabora con noi'},
{idSector: [7], descr: 'Eventi'},
{idSector: [7], descr: 'Laboratori'},
{idSector: [7], descr: 'Idee'},
{idSector: [7], descr: 'Progetti'},
{idSector: [7], descr: 'Mobilità'},
{idSector: [7], descr: 'Oggettistica'},
{idSector: [7], descr: 'Solidarietà'},
{idSector: [7], descr: 'Sport'},
{idSector: [7], descr: 'Trasporti'},
{idSector: [8], descr: 'Audio/Video'},
{idSector: [8], descr: 'Biologia'},
{idSector: [8], descr: 'Chimica'},
{idSector: [8], descr: 'Informatica'},
{idSector: [8], descr: 'Elettronica'},
{idSector: [8], descr: 'Meccanica'},
{idSector: [8], descr: 'Telefonia'},
{idSector: [9], descr: 'Vacanze'},
{idSector: [9], descr: 'Receptionist'}
]
}
{_id: 1, idSector: [1], descr: 'Autocostruzione'},
{_id: 2, idSector: [1], descr: 'Ecovillaggi / Comunità'},
{_id: 3, idSector: [1], descr: 'Cohousing'},
{_id: 4, idSector: [2], descr: 'Orto sinergico'},
{_id: 5, idSector: [2], descr: 'Pacciamatura'},
{_id: 6, idSector: [2], descr: 'Orto tradizionale'},
{_id: 7, idSector: [2], descr: 'Permacultura'},
{_id: 8, idSector: [2], descr: 'Cultura idroponica'},
{_id: 9, idSector: [2], descr: 'Elettrocultura'},
{_id: 10, idSector: [2], descr: 'Aratura + semina'},
{_id: 11, idSector: [2], descr: 'Potatura'},
{_id: 12, idSector: [2], descr: 'Raccolta'},
{_id: 13, idSector: [3], descr: 'Preparazione cibi'},
{_id: 14, idSector: [3], descr: 'Preparazione bevande'},
{_id: 15, idSector: [3], descr: 'Autoproduzione alimenti e bevande'},
{_id: 16, idSector: [4], descr: 'Servizi per Cani'},
{_id: 17, idSector: [4], descr: 'Servizi per Gatti'},
{_id: 18, idSector: [4], descr: 'Servizi per Anumali da allevamento'},
{_id: 19, idSector: [4], descr: 'Veterinario'},
{_id: 20, idSector: [5], descr: 'Riparazioni Auto'},
{_id: 21, idSector: [5], descr: 'Riparazioni Moto'},
{_id: 22, idSector: [5], descr: 'Riparazioni Camper / Van'},
{_id: 23, idSector: [5], descr: 'Creazione di Van Camperizzati'},
{_id: 24, idSector: [5], descr: 'Noleggio veicoli'},
{_id: 25, idSector: [5], descr: 'Lavaggio auto'},
{_id: 26, idSector: [6], descr: 'Alimentazione Naturale'},
{_id: 27, idSector: [6], descr: 'Ginnastica'},
{_id: 28, idSector: [6], descr: 'Yoga'},
{_id: 29, idSector: [6], descr: 'Trattamenti Olistici'},
{_id: 30, idSector: [6], descr: 'Meditazione e mindfulness'},
{_id: 31, idSector: [6], descr: 'Trattamenti Energetici'},
{_id: 32, idSector: [6], descr: 'Trattamenti Sonori'},
{_id: 33, idSector: [6], descr: 'Arteterapia'},
{_id: 34, idSector: [6], descr: 'Teatroterapia'},
{_id: 35, idSector: [6], descr: 'Cantoterapia'},
{_id: 36, idSector: [6], descr: 'Trattamenti Luminosi'},
{_id: 37, idSector: [6], descr: 'Fitoterapia'},
{_id: 38, idSector: [6], descr: 'Kinesiologia'},
{_id: 39, idSector: [6], descr: 'Terapie Naturali'},
{_id: 40, idSector: [7], descr: 'Muratore'},
{_id: 41, idSector: [7], descr: 'Imbianchino'},
{_id: 42, idSector: [7], descr: 'Elettricista - TV'},
{_id: 43, idSector: [7], descr: 'Falegname e restauro'},
{_id: 44, idSector: [7], descr: 'Fabbro'},
{_id: 45, idSector: [7], descr: 'Arredamento'},
{_id: 46, idSector: [7], descr: 'Idraulico'},
{_id: 47, idSector: [7], descr: 'Giardiniere'},
{_id: 48, idSector: [7], descr: 'Canne fumarie e camini e stufe'},
{_id: 49, idSector: [7], descr: 'Pannelli solari e pompe calore'},
{_id: 50, idSector: [7], descr: 'Riparazioni varie'},
{_id: 51, idSector: [7], descr: 'Tuttofare'},
{_id: 52, idSector: [7], descr: 'Traslochi'},
{_id: 53, idSector: [7], descr: 'Piastrellista'},
{_id: 54, idSector: [7], descr: 'Pulizie'},
{_id: 55, idSector: [8], descr: 'Ballo'},
{_id: 56, idSector: [8], descr: 'Canto'},
{_id: 57, idSector: [8], descr: 'Musica'},
{_id: 58, idSector: [8], descr: 'Letteratura e poesia'},
{_id: 59, idSector: [8], descr: 'Teatro'},
{_id: 60, idSector: [8], descr: 'Fotografia'},
{_id: 61, idSector: [8], descr: 'Film making'},
{_id: 62, idSector: [8], descr: 'Sport'},
{_id: 63, idSector: [8], descr: 'Arte'},
{_id: 64, idSector: [9], descr: 'Offresi Ospitalità'},
{_id: 65, idSector: [9], descr: 'Affitto casa'},
{_id: 66, idSector: [9], descr: 'Affittacamere'},
{_id: 67, idSector: [9], descr: 'Affitto mini appartamento'},
{_id: 68, idSector: [9], descr: 'Bed & Breakfast'},
{_id: 69, idSector: [9], descr: 'Scambio Casa'},
{_id: 70, idSector: [10], descr: 'Parrucchiere'},
{_id: 71, idSector: [10], descr: 'Estetista'},
{_id: 72, idSector: [10], descr: 'Omeopatia'},
{_id: 73, idSector: [10], descr: 'Assistenza anziani'},
{_id: 74, idSector: [10], descr: 'Contabile/commercialista'},
{_id: 75, idSector: [10], descr: 'Avvocato'},
{_id: 76, idSector: [10], descr: 'Baby sitter'},
{_id: 77, idSector: [10], descr: 'Sarto'},
{_id: 78, idSector: [10], descr: 'Autoproduzione prodotti persona'},
{_id: 79, idSector: [10], descr: 'Corsi e Formazione'},
{_id: 80, idSector: [10], descr: 'Supporto spesa'},
{_id: 81, idSector: [10], descr: 'Volontariato'},
{_id: 82, idSector: [11], descr: 'Gruppi di acquisto'},
{_id: 83, idSector: [11], descr: 'Banca del tempo'},
{_id: 84, idSector: [11], descr: 'Collabora con noi'},
{_id: 85, idSector: [11], descr: 'Eventi'},
{_id: 86, idSector: [11], descr: 'Laboratori'},
{_id: 87, idSector: [11], descr: 'Idee e suggerimenti'},
{_id: 88, idSector: [12], descr: 'Medico di base '},
{_id: 89, idSector: [12], descr: 'Specialista'},
{_id: 90, idSector: [12], descr: 'Pediatra'},
{_id: 91, idSector: [12], descr: 'Dentista'},
{_id: 92, idSector: [12], descr: 'Psicologo'},
{_id: 93, idSector: [12], descr: 'Psicoterapeuta'},
{_id: 94, idSector: [12], descr: 'Ostetrica'},
{_id: 95, idSector: [12], descr: 'Nutrizionista'},
{_id: 96, idSector: [12], descr: 'Naturopata'},
{_id: 97, idSector: [12], descr: 'Counseling'},
{_id: 98, idSector: [13], descr: 'Assistenza PC / software'},
{_id: 99, idSector: [13], descr: 'Assistenza Cellulari'},
{_id: 100, idSector: [13], descr: 'Realizzazione Siti web'},
{_id: 101, idSector: [13], descr: 'Realizzazione App / Piattaforme'},
{_id: 102, idSector: [13], descr: 'Corsi d\'Informatica'},
{_id: 103, idSector: [13], descr: 'Riparazione Elettrodomestici'}],
};

View File

@@ -0,0 +1,6 @@
module.exports = {
list: [
{_id: 1, descr: 'Di Persona', icon:'fas fa-people-carry' },
{_id: 2, descr: 'On Line', icon:'fas fa-desktop'},
],
};

View File

@@ -1,6 +0,0 @@
module.exports = {
list: [
{_id: 1, descr: 'Di Persona'},
{_id: 2, descr: 'On Line'},
],
};

View File

@@ -46,15 +46,19 @@ const {Contribtype} = require('../models/contribtype');
const {PaymentType} = require('../models/paymenttype');
const {Discipline} = require('../models/discipline');
const {Skill} = require('../models/skill');
const {Good} = require('../models/good');
const {SubSkill} = require('../models/subskill');
const {MySkill} = require('../models/myskill');
const {MyGood} = require('../models/mygood');
const {StatusSkill} = require('../models/statusSkill');
const {City} = require('../models/city');
const {Province} = require('../models/province');
const {Sector} = require('../models/sector');
const {SectorGood} = require('../models/sectorgood');
const {CatGrp} = require('../models/catgrp');
const {Level} = require('../models/level');
const {AdType} = require('../models/adtype');
const {AdTypeGood} = require('../models/adtypegood');
const Pickup = require('../models/pickup');
const {Newstosent} = require('../models/newstosent');
const {MyPage} = require('../models/mypage');
@@ -1021,10 +1025,13 @@ function load(req, res, version) {
// SKILLS:
let levels = Level.findAllIdApp(idapp);
let adtypes = AdType.findAllIdApp(idapp);
let adtypegoods = AdTypeGood.findAllIdApp(idapp);
let skills = Skill.findAllIdApp(idapp);
let subSkills = SubSkill.findAllIdApp(idapp);
let goods = Good.findAllIdApp(idapp);
//let subSkills = SubSkill.findAllIdApp(idapp);
let statusSkills = StatusSkill.findAllIdApp(idapp);
let sectors = Sector.findAllIdApp(idapp);
let sectorgoods = SectorGood.findAllIdApp(idapp);
let catgrps = CatGrp.findAllIdApp(idapp);
let cities = City.findAllIdApp(idapp);
let cart = null;
@@ -1078,19 +1085,22 @@ function load(req, res, version) {
internalpages,
levels,
skills,
subSkills,
//subSkills,
myuserextra,
sectors,
statusSkills,
cities,
myuserextra,
catgrps,
adtypes,
adtypegoods,
sectorgoods,
goods,
]).then((arrdata) => {
// console.table(arrdata);
let myuser = req.user;
if (myuser) {
try {
myuser = arrdata[30];
myuser = arrdata[26];
if (myuser) {
myuser.password = '';
myuser._doc.calcstat = arrdata[13];
@@ -1152,13 +1162,16 @@ function load(req, res, version) {
internalpages: arrdata[23],
levels: arrdata[24],
skills: arrdata[25],
subSkills: arrdata[26],
// subSkills: arrdata[26],
// myuser arrdata[26]
sectors: arrdata[27],
statusSkills: arrdata[28],
cities: arrdata[29],
// myuser arrdata[30]
catgrps: arrdata[31],
adtypes: arrdata[32],
catgrps: arrdata[30],
adtypes: arrdata[31],
adtypegoods: arrdata[32],
sectorgoods: arrdata[33],
goods: arrdata[34],
});
}

View File

@@ -0,0 +1,50 @@
const shared_consts = require('../tools/shared_nodejs');
const express = require('express');
const router = express.Router();
const tools = require('../tools/general');
var server_constants = require('../tools/server_constants');
var {authenticate, auth_default} = require('../middleware/authenticate');
var mongoose = require('mongoose').set('debug', false);
const Subscription = mongoose.model('subscribers');
const _ = require('lodash');
const {MyGood} = require('../models/mygood');
var {User} = require('../models/user');
const {ObjectID} = require('mongodb');
//GET orders
router.post('/page', authenticate, function(req, res, next) {
let idGood = req.body.idGood;
let idapp = req.body.idapp;
return MyGood.getMyGoodByIdkill(idapp, idGood).
then((ris) => {
if (ris) {
res.send(ris);
/*
const userId = ris.userId;
return User.getUsernameById(idapp, userId).then((username) =>
{
res.send({...ris, username});
});
*/
} else {
res.status(400).send();
}
}).catch((e) => {
console.error('Err', e);
res.status(400).send(e);
})
});
module.exports = router;

View File

@@ -872,15 +872,15 @@ async function eseguiDbOp(idapp, mydata, locale) {
*/
} else if (mydata.dbop === 'CorreggiTabHours') {
await Hours.correggiHours(idapp);
ris = await Hours.correggiHours(idapp);
} else if (mydata.dbop === 'setVerifiedByAportadorToALL') {
await User.setVerifiedByAportadorToALL();
ris = await User.setVerifiedByAportadorToALL();
} else if (mydata.dbop === 'RewriteContribType') {
populate.rewriteTable('contribtypes');
ris = populate.rewriteTable('contribtypes');
} else if (mydata.dbop === 'copyFrom1To13') {
const idapporig = 1;
@@ -906,27 +906,50 @@ async function eseguiDbOp(idapp, mydata, locale) {
numrectot += numrec;
});
}
ris = numrectot;
} catch (e) {
console.log('e', e);
}
} else if (mydata.dbop === 'emptyTabCatServiziBeni') {
const {Sector} = require('../models/sector');
const {SectorGood} = require('../models/sectorgood');
const {Skill} = require('../models/skill');
const {Good} = require('../models/good');
await Sector.deleteMany({});
await SectorGood.deleteMany({});
await Skill.deleteMany({});
ris = await Good.deleteMany({});
} else if (mydata.dbop === 'emptyDbSkill') {
// Svuota e Ricrea
const {Sector} = require('../models/sector');
const {SectorGood} = require('../models/sectorgood');
const {Skill} = require('../models/skill');
const {Good} = require('../models/good');
const {SubSkill} = require('../models/subskill');
const {Contribtype} = require('../models/contribtype');
const {AdType} = require('../models/adtype');
const {AdTypeGood} = require('../models/adtypegood');
const {StatusSkill} = require('../models/statusSkill');
await Sector.deleteMany({});
await SectorGood.deleteMany({});
await Skill.deleteMany({});
await Good.deleteMany({});
await SubSkill.deleteMany({});
await Contribtype.deleteMany({});
await AdType.deleteMany({});
await AdTypeGood.deleteMany({});
await StatusSkill.deleteMany({});
await populate.popolaTabelleNuove();
ris = await populate.popolaTabelleNuove();
} else if (mydata.dbop === 'ricreaTabCitiesProvinces') {
@@ -938,22 +961,22 @@ async function eseguiDbOp(idapp, mydata, locale) {
await City.deleteMany({});
await Province.deleteMany({});
await populate.popolaTabelleNuove();
ris = await populate.popolaTabelleNuove();
} else if (mydata.dbop === 'PopulateTables') {
populate.popolaTabelleNuove();
ris = populate.popolaTabelleNuove();
} else if (mydata.dbop === 'RewriteCitiesTable') {
populate.rewriteTable('cities');
} else if (mydata.dbop === 'RewriteLevelTable') {
populate.rewriteTable('levels');
ris = populate.rewriteTable('cities');
} else if (mydata.dbop === 'RewriteLevelsTable') {
populate.rewriteTable('provinces');
ris = populate.rewriteTable('levels');
} else if (mydata.dbop === 'RewriteProvincesTable') {
ris = populate.rewriteTable('provinces');
} else if (mydata.dbop === 'emptyCityProvinces') {
@@ -1005,10 +1028,18 @@ router.post('/dbop', authenticate, async (req, res) => {
idapp = req.body.idapp;
locale = req.body.locale;
try{
const ris = await eseguiDbOp(idapp, mydata, locale);
res.send(ris);
} catch (e) {
res.status(400).send();
res.send({code: server_constants.RIS_CODE_ERR, msg: e});
console.log(e.message);
}
});
module.exports = router;

View File

@@ -104,6 +104,7 @@ myLoad().then(ris => {
const cart_router = require('./router/cart_router');
const orders_router = require('./router/orders_router');
const myskills_router = require('./router/myskills_router');
const mygoods_router = require('./router/mygoods_router');
const mygen_router = require('./router/mygen_router');
const { MyEvent } = require('./models/myevent');
@@ -159,6 +160,7 @@ myLoad().then(ris => {
app.use('/cart', cart_router);
app.use('/orders', orders_router);
app.use('/myskills', myskills_router);
app.use('/mygoods', mygoods_router);
app.use('/mygen', mygen_router);
// catch 404 and forward to error handler

View File

@@ -130,6 +130,13 @@ MsgBot = {
'grazie 😘',
'grazie😘'],
PRINCIPE_AZZURRO: ['principe azzurro'],
COSE_COVID: [
'cos\'è il covid',
'cosa è il covid',
],
COVID: [
'covid',
],
SPOSAMI: [
'sposami',
'vuoi sposar',
@@ -158,6 +165,7 @@ MsgBot = {
'conferenz',
'zoom'],
LAVAGNA: ['lavagna', 'Lavagna', 'LAVAGNA'],
SEI_LIBERO_DI_RESPIRARE: ['sei libero di respirare'],
SEI_LIBERO: ['sei liber', 'sei sposat', 'sei fidanzat', 'sei single'],
AIUTO: [
'help',
@@ -1544,6 +1552,14 @@ class Telegram {
} else if (MsgBot.PRINCIPE_AZZURRO.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Chissà... Forse si!\nAnche se meglio averne un altro di scorta, nel caso il Principe non sia disponibile.';
} else if (MsgBot.COSE_COVID.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Un \'influenza più "grave", dovuta a paure e a fattori interiori di evoluzione, oltre ad una pulizia del corpo. ';
} else if (MsgBot.COVID.find(
(rec) => testo.indexOf(rec) > -1)) {
risp = 'Guarda, è meglio che sorvoliamo questo argomento. Anche un robot capisce che è stato realizzato ' +
'il più grande esperimento dell\'Uomo di ipnosi di massa, riempiendo di bugie i media mondiali, che servono sostanzialmente a controllare i popoli.' +
'E con questo ti ho detto tutto. :D ';
} else if (MsgBot.AIUTO.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Clicca qui per entrare nella Chat HELP di Supporto\n' +
tools.HELP_CHAT +
@@ -1559,6 +1575,8 @@ class Telegram {
} else if (MsgBot.SEI_LIBERO.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Io? Sono per la Libertà! ' + emo.JOY +
'\nMa se vuoi possiamo conoscerci meglio!' + emo.DANCER + emo.FIRE;
} else if (MsgBot.SEI_LIBERO_DI_RESPIRARE.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Assolutamente Sì ! Respirare è fondamentale per l\'essere umano !' + emo.DANCER + emo.FIRE;
} else if (MsgBot.FARE_DOMANDA.find((rec) => testo.indexOf(rec) > -1)) {
risp = 'Dipende ' + emo.SMILE_STAR + '\nProvaci!';
} else if (MsgBot.DIVENTERO_RICCA.find(

View File

@@ -64,7 +64,7 @@ const textlang = {
'partecipanti a Cena Condivisa': 'partecipanti a Cena Condivisa',
'TESTO_ASSISTENZA': '<strong><a href="%s">👉 Per entrare nel Sito</a></strong>\n\n' +
'👉 <strong><a href="https://freeplanet.app/requestresetpwd">Hai dimenticato la password?</a></strong>\n\n',
'BENVENUTO': 'Benvenuto',
'BENVENUTO': 'Benvenut@',
'TUE_NAVI': 'Ecco le tue Navi programmate',
'HAI_I_7_REQUISITI': 'PRIMI PASSI OK!\nHai i Primi Requisiti per Entrare nella Lista !',
'NON_HAI_I_7_REQUISITI': 'Attenzione!\nAncora non hai i 7 Requisiti per Entrare nella Lista !',

View File

@@ -20,16 +20,20 @@ const {Contribtype} = require('../models/contribtype');
const {PaymentType} = require('../models/paymenttype');
const {Discipline} = require('../models/discipline');
const {Skill} = require('../models/skill');
const {Good} = require('../models/good');
const {SubSkill} = require('../models/subskill');
const {MySkill} = require('../models/myskill');
const {MyGood} = require('../models/mygood');
const {MyBacheca} = require('../models/mybacheca');
const {StatusSkill} = require('../models/statusSkill');
const {City} = require('../models/city');
const {Province} = require('../models/province');
const {Sector} = require('../models/sector');
const {SectorGood} = require('../models/sectorgood');
const {CatGrp} = require('../models/catgrp');
const {Level} = require('../models/level');
const {AdType} = require('../models/adtype');
const {AdTypeGood} = require('../models/adtypegood');
const Pickup = require('../models/pickup');
const {Newstosent} = require('../models/newstosent');
const {MyPage} = require('../models/mypage');
@@ -155,12 +159,16 @@ module.exports = {
mytable = Graduatoria;
else if (tablename === 'skills')
mytable = Skill;
else if (tablename === 'goods')
mytable = Good;
else if (tablename === 'subskills')
mytable = SubSkill;
else if (tablename === shared_consts.TABLES_MYSKILLS)
mytable = MySkill;
else if (tablename === shared_consts.TABLES_MYBACHECAS)
mytable = MyBacheca;
else if (tablename === shared_consts.TABLES_MYGOODS)
mytable = MyGood;
else if (tablename === 'statusSkills')
mytable = StatusSkill;
else if (tablename === 'cities')
@@ -169,10 +177,16 @@ module.exports = {
mytable = Province;
else if (tablename === 'sectors')
mytable = Sector;
else if (tablename === 'sectorgoods')
mytable = SectorGood;
else if (tablename === 'catgrps')
mytable = CatGrp;
else if (tablename === 'levels')
mytable = Level;
else if (tablename === 'adtypes')
mytable = AdType;
else if (tablename === 'adtypegoods')
mytable = AdTypeGood;
else if (shared_consts.TablePickup.includes(tablename))
mytable = Pickup;
//else if (shared_consts.TableCities.includes(tablename))

View File

@@ -32,9 +32,9 @@ module.exports = {
FILTER_MEMBERSHIP_CARD_OK: 1048576,
FILTER_USER_NO_VERIFIED_APORTADOR: 2097152,
FILTER_MYSKILL_SKILL: 1,
OPTIONS_SEARCH_ONLY_FULL_WORDS: 1,
OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2,
OPTIONS_SEARCH_USER_ALL_WORDS: 4,
FRIENDSCMD: {
SETTRUST: 121,
@@ -80,29 +80,69 @@ module.exports = {
'Nessuno',
'Bonifico Bancario',
'Paypal',
'In Contanti alla CNM'
'In Contanti alla CNM',
],
PARAM_SHOW_PROVINCE: 1,
TABLES_MYSKILLS: 'myskills',
TABLES_MYBACHECAS: 'mybachecas',
TABLES_MYGOODS: 'mygoods',
TABLES_ENABLE_GETREC_BYID: ['mybachecas'],
TABLES_USER_INCLUDE_MY: ['mygroups'],
TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas'],
TABLES_PERM_NEWREC: ['skills', 'subskills', 'mygroups'],
TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'mygoods'],
TABLES_PERM_NEWREC: ['skills', 'goods', 'subskills', 'mygroups'],
TABLES_REC_ID: ['skills', 'goods', 'subskills'],
TABLES_ID_NUMBER: ['permissions', 'levels', 'adtypes', 'statusSkills', 'sectors', 'catgrps', 'skills', 'subskills', 'cities', 'provinces', 'myskills', 'mybachecas', 'mygroups'],
TABLES_USER_ID: ['myskills', 'mybachecas'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybachecas', 'mybots'],
TABLES_FINDER: ['myskills', 'mybachecas', 'mygroups'],
TABLES_ID_NUMBER: [
'permissions',
'levels',
'adtypes',
'adtypegoods',
'statusSkills',
'sectors',
'sectorgoods',
'catgrps',
'skills',
'subskills',
'cities',
'provinces',
'myskills',
'mybachecas',
'mygoods',
'mygroups'],
TABLES_USER_ID: ['myskills', 'mybachecas', 'mygoods'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybachecas', 'mygoods', 'mybots'],
TABLES_FINDER: ['myskills', 'mybachecas', 'mygoods', 'mygroups'],
TABLES_VISU_CMYSRECCARD: ['myskills', 'mybachecas', 'mygoods'],
TABLES_PERM_CHANGE_FOR_USERS: ['myskills', 'mybachecas'],
TABLES_VISU_LISTA_USER: ['myskills', 'mybachecas', 'users'],
TABLES_NOT_SHOW_IF_USERNAME: ['myskills', 'mybachecas'],
TABLES_PERM_CHANGE_FOR_USERS: ['myskills', 'mybachecas', 'mygoods'],
TABLES_VISU_LISTA_USER: ['myskills', 'mybachecas', 'mygoods', 'users'],
TABLES_POPULATE_DATA: [
{
table: 'adtypegoods',
key: 'descr',
}, {
table: 'adtypes',
key: 'descr',
},
{table: 'catgrps', key: 'descr'},
{
table: 'contribtypes',
key: 'descr',
},
{table: 'goods', key: 'descr'},
{table: 'levels', key: 'descr'},
{table: 'cities', key: 'comune'},
{table: 'provinces', key: 'descr'},
{table: 'sectorgoods', key: 'descr'},
{table: 'sectors', key: 'descr'},
{table: 'skills', key: 'descr'},
{table: 'statusSkills', key: 'descr'},
],
VISIB_ALL: 0,
VISIB_ONLYIF_VERIFIED: 1,
@@ -144,7 +184,7 @@ module.exports = {
MessageOptions: {
Notify_ByEmail: 2,
Notify_ByPushNotification: 4
Notify_ByPushNotification: 4,
},
TypeMsg: {
@@ -153,7 +193,7 @@ module.exports = {
SEND_TO_SOCIO_RESIDENTE: 3,
SEND_TO_CONSIGLIO: 5,
SEND_TO_NON_SOCI: 10,
SEND_TO_PAOLO: 20
SEND_TO_PAOLO: 20,
},
TypeMsg_Actions: {
@@ -170,7 +210,7 @@ module.exports = {
GET_VALBYTABLE: 400,
SET_VALBYTABLE: 410,
ZOOM_GIA_PARTECIPATO: 510,
REGISTRATION: 6
REGISTRATION: 6,
},
OrderStatus: {
@@ -189,12 +229,34 @@ module.exports = {
ORDER_CONFIRMED: 3,
PAYED: 4,
RECEIVED: 6,
CANCELED: 10
CANCELED: 10,
},
fieldsUserToChange() {
return ['_id', 'index', 'username', 'group', 'email', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'verified_by_aportador', 'ipaddr', 'lasttimeonline', 'profile', 'calcstat', 'news_on', 'aportador_solidario', 'made_gift', 'ind_order', 'old_order', 'numinvitati', 'numinvitatiattivi', 'qualified']
}
return [
'_id',
'index',
'username',
'group',
'email',
'name',
'surname',
'perm',
'date_reg',
'verified_email',
'verified_by_aportador',
'ipaddr',
'lasttimeonline',
'profile',
'calcstat',
'news_on',
'aportador_solidario',
'made_gift',
'ind_order',
'old_order',
'numinvitati',
'numinvitatiattivi',
'qualified'];
},
};