From 842a041fe5678dc7e7ac4588ca3b8b05918b68bc Mon Sep 17 00:00:00 2001 From: paoloar77 Date: Wed, 26 Jan 2022 01:31:22 +0100 Subject: [PATCH] - Pagina MySkills personale --- src/server/models/city.js | 3 +- src/server/models/myskill.js | 282 ++++++++++++++++++++++++++- src/server/models/user.js | 24 +++ src/server/populate/contribtypes.js | 96 +++++++++ src/server/populate/populate.js | 36 ++-- src/server/router/index_router.js | 2 +- src/server/router/myskills_router.js | 45 +++++ src/server/server.js | 2 + src/server/telegram/telegrambot.js | 4 + 9 files changed, 473 insertions(+), 21 deletions(-) create mode 100644 src/server/populate/contribtypes.js create mode 100755 src/server/router/myskills_router.js diff --git a/src/server/models/city.js b/src/server/models/city.js index bb80281..b0740f7 100755 --- a/src/server/models/city.js +++ b/src/server/models/city.js @@ -118,8 +118,7 @@ CitySchema.statics.executeQueryPickup = async function(idapp, params) { let filterfind = {comune: {$regex: '^' + strfind, $options: 'i'}}; - const ris = await City.find(filterfind, {comune: 1, prov: 1, reg: 1}).lean().limit(10); - + let ris = await City.find(filterfind, {comune: 1, prov: 1, reg: 1}).lean().limit(10); return [...risexact, ...ris]; diff --git a/src/server/models/myskill.js b/src/server/models/myskill.js index 65a41a7..5ea2b9a 100755 --- a/src/server/models/myskill.js +++ b/src/server/models/myskill.js @@ -35,9 +35,6 @@ const MySkillSchema = new Schema({ { type: Number, }], - idSector: { - type: Number, - }, idContribType: [ { type: String, @@ -98,6 +95,7 @@ MySkillSchema.pre('save', async function(next) { }); MySkillSchema.statics.findAllIdApp = async function(idapp) { + const MySkill = this; const query = [ {$match: {idapp}}, @@ -154,6 +152,284 @@ MySkillSchema.statics.executeQueryTable = function(idapp, params) { return tools.executeQueryTable(this, idapp, params); }; +MySkillSchema.statics.getMySkillByIdkill = function (idapp, idSkill) { + const MySkill = this; + + const query = [ + { + "$match": { + "$and": [ + { + "_id": parseInt(idSkill) + } + ] + } + }, + { + "$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": { + "recSkill": 1, + "sector": 1, + "idSkill": 1, + "idSubSkill": 1, + "idStatusSkill": 1, + "idContribType": 1, + "idCity": 1, + "numLevel": 1, + "photos": 1, + "note": 1, + "subTitle": 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": "skills", + "localField": "idSkill", + "foreignField": "_id", + "as": "recSkill" + } + }, + { + "$replaceRoot": { + "newRoot": { + "$mergeObjects": [ + { + "$arrayElemAt": [ + "$recSkill", + 0 + ] + }, + "$$ROOT" + ] + } + } + }, + { + "$project": { + "recSkill": 1, + "sector": 1, + "idSkill": 1, + "idSubSkill": 1, + "idStatusSkill": 1, + "idContribType": 1, + "idCity": 1, + "numLevel": 1, + "photos": 1, + "note": 1, + "subTitle": 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": "sectors", + "localField": "recSkill.idSector", + "foreignField": "_id", + "as": "sector" + } + }, + { + "$replaceRoot": { + "newRoot": { + "$mergeObjects": [ + { + "$arrayElemAt": [ + "$sector", + 0 + ] + }, + "$$ROOT" + ] + } + } + }, + { + "$project": { + "recSkill": 1, + "sector": 1, + "idSkill": 1, + "idSubSkill": 1, + "idStatusSkill": 1, + "idContribType": 1, + "idCity": 1, + "numLevel": 1, + "photos": 1, + "note": 1, + "subTitle": 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": "subskills", + "localField": "idSubSkill", + "foreignField": "_id", + "as": "myskill" + } + }, + { + "$replaceRoot": { + "newRoot": { + "$mergeObjects": [ + { + "$arrayElemAt": [ + "$myskill", + 0 + ] + }, + "$$ROOT" + ] + } + } + }, + { + "$project": { + "recSkill": 1, + "sector": 1, + "idSkill": 1, + "idSubSkill": 1, + "idStatusSkill": 1, + "idContribType": 1, + "idCity": 1, + "numLevel": 1, + "photos": 1, + "note": 1, + "subTitle": 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": { + "recSkill": 1, + "sector": 1, + "idSkill": 1, + "idSubSkill": 1, + "idStatusSkill": 1, + "idContribType": 1, + "idCity": 1, + "numLevel": 1, + "photos": 1, + "note": 1, + "subTitle": 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 MySkill.aggregate(query).then((rec) => { + return rec ? rec[0] : null; + }); +}; + + const MySkill = mongoose.model('MySkill', MySkillSchema); module.exports = {MySkill}; diff --git a/src/server/models/user.js b/src/server/models/user.js index 3fec8ba..1e1aec5 100755 --- a/src/server/models/user.js +++ b/src/server/models/user.js @@ -225,6 +225,12 @@ const UserSchema = new mongoose.Schema({ username_telegram: { type: String, }, + firstname_telegram: { + type: String, + }, + lastname_telegram: { + type: String, + }, website: { type: String, }, @@ -1660,6 +1666,24 @@ UserSchema.statics.SetTelegramIdSuccess = async function(idapp, id, teleg_id) { }; +UserSchema.statics.setUsernameTelegram = async function(idapp, id, username_telegram, firstname_telegram, lastname_telegram) { + const User = this; + + const fields_to_update = { + 'profile.username_telegram': username_telegram, + 'profile.firstname_telegram': firstname_telegram, + 'profile.lastname_telegram': lastname_telegram, + }; + + return User.findOneAndUpdate({ + idapp, + _id: id, + }, {$set: fields_to_update}, {new: false}).then((record) => { + return record; + }); + +}; + UserSchema.statics.getLangByIndOrder = async function(idapp, ind_order) { const User = this; diff --git a/src/server/populate/contribtypes.js b/src/server/populate/contribtypes.js new file mode 100644 index 0000000..e07e9bd --- /dev/null +++ b/src/server/populate/contribtypes.js @@ -0,0 +1,96 @@ +const {ObjectID} = require('mongodb'); + +module.exports = { + list: [ + { + "_id" : ObjectID("615a353c002c8298f4495be7"), + "idapp" : "1", + "__v" : 0, + "label" : "Dono" + }, + + { + "_id" : ObjectID("61bc466567de9a1f54b25494"), + "idapp" : "1", + "__v" : 0, + "label" : "Offerta Libera" + }, + + { + "_id" : ObjectID("61bc454867de9a1f54b25462"), + "idapp" : "1", + "__v" : 0, + "label" : "Baratto" + }, + + { + "_id" : ObjectID("61bc482667de9a1f54b2549b"), + "idapp" : "1", + "__v" : 0, + "label" : "Euro" + }, + { + "_id" : ObjectID("61bc482667de9a1f54b2549b"), + "idapp" : "1", + "__v" : 0, + "label" : "Scambio di Beni" + }, + { + "_id" : ObjectID("61bc482667de9a1f54b2549c"), + "idapp" : "1", + "__v" : 0, + "label" : "Scambio di Lavoro" + }, + { + "_id" : ObjectID("61cae7da4c7b5931a5f367c9"), + "idapp" : "1", + "__v" : 0, + "label" : "Sardex" + }, + { + "_id" : ObjectID("615a353c002c8298f4495bf7"), + "idapp" : "12", + "__v" : 0, + "label" : "Dono" + }, + + { + "_id" : ObjectID("61bc466567de9a1f54b254f4"), + "idapp" : "12", + "__v" : 0, + "label" : "Offerta Libera" + }, + + { + "_id" : ObjectID("61bc454867de9a1f54b254f2"), + "idapp" : "12", + "__v" : 0, + "label" : "Baratto" + }, + + { + "_id" : ObjectID("61bc482667de9a1f54b254fb"), + "idapp" : "12", + "__v" : 0, + "label" : "Euro" + }, + { + "_id" : ObjectID("61bc482667de9a1f54b25411"), + "idapp" : "12", + "__v" : 0, + "label" : "Scambio di Beni" + }, + { + "_id" : ObjectID("61bc482667de9a1f54b25412"), + "idapp" : "12", + "__v" : 0, + "label" : "Scambio di Lavoro" + }, + { + "_id" : ObjectID("61cae7da4c7b5931a5f36712"), + "idapp" : "12", + "__v" : 0, + "label" : "Sardex" + }, + ] +} diff --git a/src/server/populate/populate.js b/src/server/populate/populate.js index 9c91397..cbf1118 100644 --- a/src/server/populate/populate.js +++ b/src/server/populate/populate.js @@ -25,28 +25,34 @@ module.exports = { }, popolaTabelleNuove() { + const abilita = false; let ris = null; - // Sectors - const { Sector } = require('../models/sector'); - this.insertIntoDb('sectors', Sector) + if (abilita) { + // Sectors + const { Sector } = require('../models/sector'); + this.insertIntoDb('sectors', Sector) - // Skills (Competenze) - const { Skill } = require('../models/skill'); - this.insertIntoDb('skills', Skill) + // Skills (Competenze) + const { Skill } = require('../models/skill'); + this.insertIntoDb('skills', Skill) - // SubSectors - const { SubSkill } = require('../models/subskill'); - this.insertIntoDb('subskills', SubSkill) + // SubSectors + const { SubSkill } = require('../models/subskill'); + this.insertIntoDb('subskills', SubSkill) - // Cities - const { City } = require('../models/city'); - ris = this.insertIntoDb('cities', City) + // Cities + const {City} = require('../models/city'); + this.insertIntoDb('cities', City) - // Province - const { Province } = require('../models/province'); - ris = this.insertIntoDb('provinces', Province) + // Province + const { Province } = require('../models/province'); + this.insertIntoDb('provinces', Province) + // Contribtypes + const { Contribtype } = require('../models/contribtype'); + this.insertIntoDb('contribtypes', Contribtype) + } }, diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 9ea1ef1..c3d5666 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -1662,7 +1662,7 @@ function uploadFile(req, res, version) { }) })(); - // res.end(); + res.end(); // return res.send({filename: newname }); }); diff --git a/src/server/router/myskills_router.js b/src/server/router/myskills_router.js new file mode 100755 index 0000000..baeb1a7 --- /dev/null +++ b/src/server/router/myskills_router.js @@ -0,0 +1,45 @@ +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 { MySkill } = require('../models/myskill'); +var { User } = require('../models/user'); + +const {ObjectID} = require('mongodb'); + +//GET orders +router.post('/page', authenticate, function(req, res, next) { + let idSkill = req.body.idSkill; + let idapp = req.body.idapp; + + return MySkill.getMySkillByIdkill(idapp, idSkill).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(e); + } + }); + +}); + +module.exports = router; diff --git a/src/server/server.js b/src/server/server.js index 153c54a..0a5d187 100755 --- a/src/server/server.js +++ b/src/server/server.js @@ -102,6 +102,7 @@ myLoad().then(ris => { const products_router = require('./router/products_router'); const cart_router = require('./router/cart_router'); const orders_router = require('./router/orders_router'); + const myskills_router = require('./router/myskills_router'); const { MyEvent } = require('./models/myevent'); @@ -154,6 +155,7 @@ myLoad().then(ris => { app.use('/products', products_router); app.use('/cart', cart_router); app.use('/orders', orders_router); + app.use('/myskills', myskills_router); // catch 404 and forward to error handler // app.use(function (req, res, next) { diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js index 939dc36..903a93c 100755 --- a/src/server/telegram/telegrambot.js +++ b/src/server/telegram/telegrambot.js @@ -2343,7 +2343,11 @@ class Telegram { if (code.length < 7) { if (rec) { if (code === telegcode) { + try { + await User.setUsernameTelegram(this.idapp, user._id, msg.from.username || '', msg.from.first_name || '', msg.from.last_name || ''); + } catch (e) {} // let ris = await this.getUser(msg, rec, false); + rec.status = Status.VERIFIED; await User.SetTelegramIdSuccess(this.idapp, user._id, msg.from.id).then((recuser) => {