Aggiunto il filtro per Provincia

This commit is contained in:
paoloar77
2022-01-23 23:25:34 +01:00
parent 66eaca6d41
commit 632534eed1
15 changed files with 89399 additions and 24 deletions

View File

@@ -234,7 +234,7 @@ module.exports = {
{ {
_id: 23, _id: 23,
istat: '087005', istat: '087005',
comune: 'Aci Sant', comune: 'Aci Sant\'Antonio',
prov: 'CT', prov: 'CT',
reg: 'SIC', reg: 'SIC',
pref: '095', pref: '095',
@@ -421,7 +421,7 @@ module.exports = {
{ {
_id: 40, _id: 40,
istat: '094001', istat: '094001',
comune: 'Acquaviva d', comune: 'Acquaviva d\'Isernia',
prov: 'IS', prov: 'IS',
reg: 'MOL', reg: 'MOL',
pref: '0865', pref: '0865',
@@ -1191,7 +1191,7 @@ module.exports = {
{ {
_id: 110, _id: 110,
istat: '016003', istat: '016003',
comune: 'Albano Sant', comune: 'Albano Sant\'Alessandro',
prov: 'BG', prov: 'BG',
reg: 'LOM', reg: 'LOM',
pref: '035', pref: '035',
@@ -30737,7 +30737,7 @@ module.exports = {
{ {
_id: 2796, _id: 2796,
istat: '033021', istat: '033021',
comune: 'Fiorenzuola d', comune: 'Fiorenzuola d\'Arda',
prov: 'PC', prov: 'PC',
reg: 'EMR', reg: 'EMR',
pref: '0523', pref: '0523',

View File

@@ -10,6 +10,8 @@ const tools = require('../tools/general');
const {ObjectID} = require('mongodb'); const {ObjectID} = require('mongodb');
const shared_consts = require('../tools/shared_nodejs');
// Resolving error Unknown modifier: $pushAll // Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => { mongoose.plugin(schema => {
schema.options.usePushEach = true; schema.options.usePushEach = true;
@@ -111,8 +113,15 @@ CitySchema.statics.executeQueryPickup = async function(idapp, params) {
return []; return [];
} }
const ris = await City.find({ comune: { $regex : '^' + strfind, $options: 'i' } }, {comune: 1, prov: 1, reg: 1}).lean(); let filterfindexact = {comune: strfind};
return ris; const risexact = await City.find(filterfindexact, {comune: 1, prov: 1, reg: 1}).lean();
let filterfind = {comune: {$regex: '^' + strfind, $options: 'i'}};
const ris = await City.find(filterfind, {comune: 1, prov: 1, reg: 1}).lean().limit(10);
return [...risexact, ...ris];
}; };

View File

@@ -35,6 +35,9 @@ const MySkillSchema = new Schema({
{ {
type: Number, type: Number,
}], }],
idSector: {
type: Number,
},
idContribType: [ idContribType: [
{ {
type: String, type: String,
@@ -108,9 +111,10 @@ MySkillSchema.statics.findAllIdApp = async function(idapp) {
}; };
MySkillSchema.statics.getFieldsForSearch = function() { MySkillSchema.statics.getFieldsForSearch = function() {
return [{field: 'idSkill', type: tools.FieldType.Number} return [
,{field: 'note', type: tools.FieldType.String} {field: 'idSkill', type: tools.FieldType.Number}
,{field: 'subTitle', type: tools.FieldType.String} , {field: 'note', type: tools.FieldType.String}
, {field: 'subTitle', type: tools.FieldType.String},
]; ];
}; };
@@ -145,7 +149,7 @@ MySkillSchema.statics.executeQueryTable = function(idapp, params) {
}, },
}; };
params = { ...params, ...otherparams }; params = {...params, ...otherparams};
return tools.executeQueryTable(this, idapp, params); return tools.executeQueryTable(this, idapp, params);
}; };

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

@@ -0,0 +1,83 @@
const mongoose = require('mongoose').set('debug', false);
const Schema = mongoose.Schema;
const escapeStringRegexp = require('escape-string-regexp');
mongoose.Promise = global.Promise;
mongoose.level = 'F';
const tools = require('../tools/general');
const {ObjectID} = require('mongodb');
const shared_consts = require('../tools/shared_nodejs');
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true;
});
const ProvinceSchema = new Schema({
_id: {
type: Number,
},
prov: {
type: String,
unique: true,
maxlength: 3,
},
descr: {
type: String,
},
}, { _id : false });
ProvinceSchema.statics.getFieldsForSearch = function() {
return [
{field: 'prov', type: tools.FieldType.string},
{field: 'descr', type: tools.FieldType.string},
];
};
ProvinceSchema.statics.executeQueryTable = function(idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
const strfind = params.search;
if (strfind === '') {
return [];
}
return tools.executeQueryTable(this, 0, params);
};
ProvinceSchema.statics.executeQueryPickup = async function(idapp, params) {
const strfind = params.search;
if (strfind === '') {
return [];
}
let filterfindexact = {descr: strfind};
const risexact = await Province.find(filterfindexact).lean();
let filterfind = {};
filterfind = {descr: {$regex: '^' + strfind, $options: 'i'}};
const ris = await Province.find(filterfind).lean().limit(10);
return [...risexact, ...ris];
};
ProvinceSchema.statics.findAllIdApp = async function(idapp) {
const myfind = {};
return Province.find(myfind);
};
const Province = mongoose.model('Province', ProvinceSchema);
module.exports = {Province};

View File

@@ -35,9 +35,6 @@ const SectorSchema = new Schema({
theme: { theme: {
type: String, type: String,
}, },
main: {
type: Boolean,
}
}); });
SectorSchema.pre('save', async function (next) { SectorSchema.pre('save', async function (next) {

View File

@@ -47,6 +47,9 @@ const UserSchema = new mongoose.Schema({
type: String, type: String,
required: true, required: true,
}, },
group: {
type: Number,
},
index: { index: {
type: Number, type: Number,
}, },
@@ -222,6 +225,9 @@ const UserSchema = new mongoose.Schema({
username_telegram: { username_telegram: {
type: String, type: String,
}, },
website: {
type: String,
},
teleg_id: { teleg_id: {
type: Number, type: Number,
}, },
@@ -1196,6 +1202,7 @@ UserSchema.statics.getUserProfileByUsername = async function(idapp, username) {
'profile.biografia': 1, 'profile.biografia': 1,
'profile.teleg_id': 1, 'profile.teleg_id': 1,
'profile.username_telegram': 1, 'profile.username_telegram': 1,
'profile.website': 1,
'profile.img': 1, 'profile.img': 1,
'profile.sex': 1, 'profile.sex': 1,
'profile.dateofbirth': 1, 'profile.dateofbirth': 1,
@@ -1414,6 +1421,7 @@ function getWhatToShow(idapp, username) {
'profile.qualifica': 1, 'profile.qualifica': 1,
'profile.biografia': 1, 'profile.biografia': 1,
'profile.username_telegram': 1, 'profile.username_telegram': 1,
'profile.website': 1,
'profile.img': 1, 'profile.img': 1,
'profile.sex': 1, 'profile.sex': 1,
'profile.dateofbirth': 1, 'profile.dateofbirth': 1,

89016
src/server/populate/cities.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,54 @@
const tools = require('../tools/general');
const Path = require('path')
module.exports = {
insertIntoDb(tablename, table) {
try {
const pathfile = Path.join(__dirname, tablename + '.js');
if (tools.isFileExists(pathfile)) {
const mydbfile = require(pathfile);
if (mydbfile && mydbfile.list) {
return table.insertMany(mydbfile.list, {ordered: false}).
then((ris) => {
console.log('Populate table ', tablename);
return !!ris;
});
}
}
}catch (e){
console.log('error insertIntoDb', e);
}
},
popolaTabelleNuove() {
let ris = null;
// Sectors
const { Sector } = require('../models/sector');
this.insertIntoDb('sectors', Sector)
// Skills (Competenze)
const { Skill } = require('../models/skill');
this.insertIntoDb('skills', Skill)
// SubSectors
const { SubSkill } = require('../models/subskill');
this.insertIntoDb('subskills', SubSkill)
// Cities
const { City } = require('../models/city');
ris = this.insertIntoDb('cities', City)
// Province
const { Province } = require('../models/province');
ris = this.insertIntoDb('provinces', Province)
},
};

View File

@@ -0,0 +1,114 @@
module.exports = {
list: [
{_id: 1, prov: 'AG', descr: 'Agrigento'},
{_id: 2, prov: 'AL', descr: 'Alessandria'},
{_id: 3, prov: 'AN', descr: 'Ancona'},
{_id: 4, prov: 'AO', descr: 'Aosta'},
{_id: 5, prov: 'AR', descr: 'Arezzo'},
{_id: 6, prov: 'AP', descr: 'Ascoli Piceno'},
{_id: 7, prov: 'AT', descr: 'Asti'},
{_id: 8, prov: 'AV', descr: 'Avellino'},
{_id: 9, prov: 'BA', descr: 'Bari'},
{_id: 10, prov: 'BT', descr: 'Barletta-Andria-Trani'},
{_id: 11, prov: 'BL', descr: 'Belluno'},
{_id: 12, prov: 'BN', descr: 'Benevento'},
{_id: 13, prov: 'BG', descr: 'Bergamo'},
{_id: 14, prov: 'BI', descr: 'Biella'},
{_id: 15, prov: 'BO', descr: 'Bologna'},
{_id: 16, prov: 'BZ', descr: 'Bolzano'},
{_id: 17, prov: 'BS', descr: 'Brescia'},
{_id: 18, prov: 'BR', descr: 'Brindisi'},
{_id: 19, prov: 'CA', descr: 'Cagliari'},
{_id: 20, prov: 'CL', descr: 'Caltanissetta'},
{_id: 21, prov: 'CB', descr: 'Campobasso'},
{_id: 22, prov: 'CI', descr: 'Carbonia-Iglesias'},
{_id: 23, prov: 'CE', descr: 'Caserta'},
{_id: 24, prov: 'CT', descr: 'Catania'},
{_id: 25, prov: 'CZ', descr: 'Catanzaro'},
{_id: 26, prov: 'CH', descr: 'Chieti'},
{_id: 27, prov: 'CO', descr: 'Como'},
{_id: 28, prov: 'CS', descr: 'Cosenza'},
{_id: 29, prov: 'CR', descr: 'Cremona'},
{_id: 30, prov: 'KR', descr: 'Crotone'},
{_id: 31, prov: 'CN', descr: 'Cuneo'},
{_id: 32, prov: 'EN', descr: 'Enna'},
{_id: 33, prov: 'FM', descr: 'Fermo'},
{_id: 34, prov: 'FE', descr: 'Ferrara'},
{_id: 35, prov: 'FI', descr: 'Firenze'},
{_id: 36, prov: 'FG', descr: 'Foggia'},
{_id: 37, prov: 'FC', descr: 'Forli-Cesena'},
{_id: 38, prov: 'FR', descr: 'Frosinone'},
{_id: 39, prov: 'GE', descr: 'Genova'},
{_id: 40, prov: 'GO', descr: 'Gorizia'},
{_id: 41, prov: 'GR', descr: 'Grosseto'},
{_id: 42, prov: 'IM', descr: 'Imperia'},
{_id: 43, prov: 'IS', descr: 'Isernia'},
{_id: 44, prov: 'SP', descr: 'La Spezia'},
{_id: 45, prov: 'AQ', descr: 'L'},
{_id: 46, prov: 'LT', descr: 'Latina'},
{_id: 47, prov: 'LE', descr: 'Lecce'},
{_id: 48, prov: 'LC', descr: 'Lecco'},
{_id: 49, prov: 'LI', descr: 'Livorno'},
{_id: 50, prov: 'LO', descr: 'Lodi'},
{_id: 51, prov: 'LU', descr: 'Lucca'},
{_id: 52, prov: 'MC', descr: 'Macerata'},
{_id: 53, prov: 'MN', descr: 'Mantova'},
{_id: 54, prov: 'MS', descr: 'Massa-Carrara'},
{_id: 55, prov: 'MT', descr: 'Matera'},
{_id: 56, prov: 'ME', descr: 'Messina'},
{_id: 57, prov: 'MI', descr: 'Milano'},
{_id: 58, prov: 'MO', descr: 'Modena'},
{_id: 59, prov: 'MB', descr: 'Monza e della Brianza'},
{_id: 60, prov: 'NA', descr: 'Napoli'},
{_id: 61, prov: 'NO', descr: 'Novara'},
{_id: 62, prov: 'NU', descr: 'Nuoro'},
{_id: 63, prov: 'OT', descr: 'Olbia-Tempio'},
{_id: 64, prov: 'OR', descr: 'Oristano'},
{_id: 65, prov: 'PD', descr: 'Padova'},
{_id: 66, prov: 'PA', descr: 'Palermo'},
{_id: 67, prov: 'PR', descr: 'Parma'},
{_id: 68, prov: 'PV', descr: 'Pavia'},
{_id: 69, prov: 'PG', descr: 'Perugia'},
{_id: 70, prov: 'PU', descr: 'Pesaro e Urbino'},
{_id: 71, prov: 'PE', descr: 'Pescara'},
{_id: 72, prov: 'PC', descr: 'Piacenza'},
{_id: 73, prov: 'PI', descr: 'Pisa'},
{_id: 74, prov: 'PT', descr: 'Pistoia'},
{_id: 75, prov: 'PN', descr: 'Pordenone'},
{_id: 76, prov: 'PZ', descr: 'Potenza'},
{_id: 77, prov: 'PO', descr: 'Prato'},
{_id: 78, prov: 'RG', descr: 'Ragusa'},
{_id: 79, prov: 'RA', descr: 'Ravenna'},
{_id: 80, prov: 'RC', descr: 'Reggio Calabria'},
{_id: 81, prov: 'RE', descr: 'Reggio Emilia'},
{_id: 82, prov: 'RI', descr: 'Rieti'},
{_id: 83, prov: 'RN', descr: 'Rimini'},
{_id: 84, prov: 'RM', descr: 'Roma'},
{_id: 85, prov: 'RO', descr: 'Rovigo'},
{_id: 86, prov: 'SA', descr: 'Salerno'},
{_id: 87, prov: 'VS', descr: 'Medio Campidano'},
{_id: 88, prov: 'SS', descr: 'Sassari'},
{_id: 89, prov: 'SV', descr: 'Savona'},
{_id: 90, prov: 'SI', descr: 'Siena'},
{_id: 91, prov: 'SR', descr: 'Siracusa'},
{_id: 92, prov: 'SO', descr: 'Sondrio'},
{_id: 93, prov: 'TA', descr: 'Taranto'},
{_id: 94, prov: 'TE', descr: 'Teramo'},
{_id: 95, prov: 'TR', descr: 'Terni'},
{_id: 96, prov: 'TO', descr: 'Torino'},
{_id: 97, prov: 'OG', descr: 'Ogliastra'},
{_id: 98, prov: 'TP', descr: 'Trapani'},
{_id: 99, prov: 'TN', descr: 'Trento'},
{_id: 100, prov: 'TV', descr: 'Treviso'},
{_id: 101, prov: 'TS', descr: 'Trieste'},
{_id: 102, prov: 'UD', descr: 'Udine'},
{_id: 103, prov: 'VA', descr: 'Varese'},
{_id: 104, prov: 'VE', descr: 'Venezia'},
{_id: 105, prov: 'VB', descr: 'Verbano-Cusio-Ossola'},
{_id: 106, prov: 'VC', descr: 'Vercelli'},
{_id: 107, prov: 'VR', descr: 'Verona'},
{_id: 108, prov: 'VV', descr: 'Vibo Valentia'},
{_id: 109, prov: 'VI', descr: 'Vicenza'},
{_id: 110, prov: 'VT', descr: 'Viterbo'},
],
};

View File

@@ -0,0 +1,56 @@
module.exports = {
list: [
{
_id: 1,
descr: "Abitare",
},
{
_id: 2,
descr: "Alimentazione",
},
{
_id: 30,
descr: "Assistenza Legale",
},
{
_id: 1,
descr: "Autodeterminazione",
},
{
_id: 1,
descr: "Gruppi Locali",
},
{
_id: 1,
descr: "Istruzione",
},
{
_id: 1,
descr: "Lavoro",
},
{
_id: 1,
descr: "Mobilità",
},
{
_id: 1,
descr: "Salute",
},
{
_id: 1,
descr: "Sport",
},
{
_id: 1,
descr: "Tecnologia",
},
{
_id: 1,
descr: "",
},
{
_id: 1,
descr: "",
},
]
}

View File

@@ -21,6 +21,8 @@ const {Graduatoria} = require('../models/graduatoria');
const mongoose = require('mongoose').set('debug', false); const mongoose = require('mongoose').set('debug', false);
const cfgserver = mongoose.model('cfgserver'); const cfgserver = mongoose.model('cfgserver');
const uuidv4 = require('uuid/v4'); // I chose v4 you can select others
const ftp = require('../ftp/FTPClient'), const ftp = require('../ftp/FTPClient'),
formidable = require('formidable'), formidable = require('formidable'),
folder = path.join(__dirname, 'upload'); folder = path.join(__dirname, 'upload');
@@ -48,6 +50,7 @@ const {SubSkill} = require('../models/subskill');
const {MySkill} = require('../models/myskill'); const {MySkill} = require('../models/myskill');
const {StatusSkill} = require('../models/statusSkill'); const {StatusSkill} = require('../models/statusSkill');
const {City} = require('../models/city'); const {City} = require('../models/city');
const {Province} = require('../models/province');
const {Sector} = require('../models/sector'); const {Sector} = require('../models/sector');
const {Level} = require('../models/level'); const {Level} = require('../models/level');
const Pickup = require('../models/pickup'); const Pickup = require('../models/pickup');
@@ -313,14 +316,16 @@ function getTableByTableName(tablename) {
mytable = StatusSkill; mytable = StatusSkill;
else if (tablename === 'cities') else if (tablename === 'cities')
mytable = City; mytable = City;
else if (tablename === 'provinces')
mytable = Province;
else if (tablename === 'sectors') else if (tablename === 'sectors')
mytable = Sector; mytable = Sector;
else if (tablename === 'levels') else if (tablename === 'levels')
mytable = Level; mytable = Level;
else if (shared_consts.TablePickup.includes(tablename)) else if (shared_consts.TablePickup.includes(tablename))
mytable = Pickup; mytable = Pickup;
else if (shared_consts.TableCities.includes(tablename)) //else if (shared_consts.TableCities.includes(tablename))
mytable = City; // mytable = City;
return mytable; return mytable;
} }
@@ -1602,16 +1607,29 @@ function uploadFile(req, res, version) {
// Create Dir if doesn't exist: // Create Dir if doesn't exist:
tools.mkdirpath(mydir); tools.mkdirpath(mydir);
let filename = file.name;
let ext = path.extname(filename);
//++Todo: Modifica del nomefile... da passare al frontend
//if (mydir.includes('profile')) {
// filename = uuidv4() + ext;
//}
file.name = filename
let newname = mydir + '/' + file.name; let newname = mydir + '/' + file.name;
let resized_img = mydir + '/' + server_constants.PREFIX_IMG + file.name; let resized_img = mydir + '/' + server_constants.PREFIX_IMG + filename;
console.log('move from ', file.path, 'to :', newname); console.log('move from ', file.path, 'to :', newname);
// For local: ... resolve this... sending through the static folder... // For local: ... resolve this... sending through the static folder...
// res.sendFile(path.resolve(file.name)); // res.sendFile(path.resolve(filename));
oldpath = file.path
file.path = newname;
// Move in the folder application ! // Move in the folder application !
tools.move(file.path, newname, (err) => { tools.move(oldpath, newname, (err) => {
if (err) if (err)
console.log('err:', err); console.log('err:', err);
@@ -1644,7 +1662,8 @@ function uploadFile(req, res, version) {
}) })
})(); })();
res.end(); // res.end();
// return res.send({filename: newname });
}); });
@@ -1654,6 +1673,10 @@ function uploadFile(req, res, version) {
} }
}); });
form.on('end', function() {
console.log('-> upload done');
});
form.on('aborted', () => { form.on('aborted', () => {
console.error('Request aborted by the user'); console.error('Request aborted by the user');
res.status(400).send(); res.status(400).send();
@@ -1670,7 +1693,7 @@ function uploadFile(req, res, version) {
} }
router.post('/upload/:dir', authenticate, (req, res) => { router.post('/upload/:dir', authenticate, (req, res) => {
uploadFile(req, res, 0); return uploadFile(req, res, 0);
}); });
@@ -1679,7 +1702,7 @@ router.post('/uploadnew/:vers/:dir/', authenticate, (req, res) => {
let version = tools.getVersionint(versionstr); let version = tools.getVersionint(versionstr);
try { try {
uploadFile(req, res, version); return uploadFile(req, res, version);
} catch (e) { } catch (e) {
console.log('error', e); console.log('error', e);

View File

@@ -73,6 +73,7 @@ router.post('/', async (req, res) => {
'email', 'email',
'password', 'password',
'username', 'username',
'group',
'name', 'name',
'surname', 'surname',
'idapp', 'idapp',

View File

@@ -11,6 +11,7 @@ const cors = require('cors');
const fs = require('fs'); const fs = require('fs');
//const throttle = require('express-throttle-bandwidth'); //const throttle = require('express-throttle-bandwidth');
// app.use(throttle(1024 * 128)) // throttling bandwidth
const port = process.env.PORT; const port = process.env.PORT;
@@ -60,6 +61,8 @@ mongoose.set('debug', process.env.DEBUG);
const cfgserver = mongoose.model('cfgserver'); const cfgserver = mongoose.model('cfgserver');
const { ObjectID } = require('mongodb'); const { ObjectID } = require('mongodb');
const populate = require('./populate/populate');
const printf = require('util').format; const printf = require('util').format;
myLoad().then(ris => { myLoad().then(ris => {
@@ -253,6 +256,8 @@ async function mystart() {
await resetProcessingJob(); await resetProcessingJob();
populate.popolaTabelleNuove();
faitest(); faitest();

View File

@@ -2044,6 +2044,10 @@ module.exports = {
return namesurname; return namesurname;
}, },
isFileExists(filename) {
return fs.existsSync(filename)
},
getiPAddressUser(req) { getiPAddressUser(req) {
try { try {
const striniziale = '::ffff:'; const striniziale = '::ffff:';

View File

@@ -58,7 +58,6 @@ module.exports = {
SITES_KEY_TO_CRYPTED: ['email_pwd'], SITES_KEY_TO_CRYPTED: ['email_pwd'],
TablePickup: ['countries', 'phones'], TablePickup: ['countries', 'phones'],
TableCities: ['cities', 'province'],
PaymentTypes: [ PaymentTypes: [
'Nessuno', 'Nessuno',
@@ -67,6 +66,8 @@ module.exports = {
'In Contanti alla CNM' 'In Contanti alla CNM'
], ],
PARAM_SHOW_PROVINCE: 1,
TABLES_ID_NUMBER: ['permissions', 'levels', 'statusSkills', 'sectors', 'skills', 'subskills', 'cities', 'myskills'], TABLES_ID_NUMBER: ['permissions', 'levels', 'statusSkills', 'sectors', 'skills', 'subskills', 'cities', 'myskills'],
TABLES_USER_ID: ['myskills'], TABLES_USER_ID: ['myskills'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybots'], TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybots'],
@@ -163,7 +164,7 @@ module.exports = {
fieldsUserToChange() { fieldsUserToChange() {
return ['_id', 'index', 'username', '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']
} }
}; };