108 lines
1.9 KiB
JavaScript
108 lines
1.9 KiB
JavaScript
|
|
const mongoose = require('mongoose').set('debug', false)
|
||
|
|
const Schema = mongoose.Schema;
|
||
|
|
|
||
|
|
mongoose.Promise = global.Promise;
|
||
|
|
mongoose.level = "F";
|
||
|
|
|
||
|
|
const { ObjectID } = require('mongodb');
|
||
|
|
|
||
|
|
// Resolving error Unknown modifier: $pushAll
|
||
|
|
mongoose.plugin(schema => {
|
||
|
|
schema.options.usePushEach = true
|
||
|
|
});
|
||
|
|
|
||
|
|
const sendNotifSchema = new Schema({
|
||
|
|
idapp: {
|
||
|
|
type: String,
|
||
|
|
},
|
||
|
|
type: {
|
||
|
|
type: Number,
|
||
|
|
},
|
||
|
|
sender: { // mittente
|
||
|
|
type: String,
|
||
|
|
},
|
||
|
|
dest: {
|
||
|
|
type: String,
|
||
|
|
},
|
||
|
|
descr: {
|
||
|
|
type: String,
|
||
|
|
},
|
||
|
|
datenotif: {
|
||
|
|
type: Date,
|
||
|
|
},
|
||
|
|
status: {
|
||
|
|
type: Number,
|
||
|
|
},
|
||
|
|
read: {
|
||
|
|
type: Boolean,
|
||
|
|
default: false
|
||
|
|
},
|
||
|
|
deleted: {
|
||
|
|
type: Boolean,
|
||
|
|
default: false
|
||
|
|
},
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
sendNotifSchema.statics.findAllNotifByUsernameIdAndIdApp = function (username, lastdataread, idapp) {
|
||
|
|
const SendNotif = this;
|
||
|
|
|
||
|
|
return SendNotif.find({
|
||
|
|
$and: [
|
||
|
|
{ idapp },
|
||
|
|
{ 'dest': username },
|
||
|
|
{ 'datenotif': {$gt: new Date(lastdataread)} },
|
||
|
|
]
|
||
|
|
}).then((arrnotif) => {
|
||
|
|
console.log('arrnotif', arrnotif.length);
|
||
|
|
return arrnotif
|
||
|
|
}).catch((err) => {
|
||
|
|
console.error('err', err);
|
||
|
|
});
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
sendNotifSchema.statics.findLastGroupByUserIdAndIdApp = function (username, idapp) {
|
||
|
|
const SendNotif = this;
|
||
|
|
|
||
|
|
return SendNotif.aggregate([
|
||
|
|
{
|
||
|
|
$match: {
|
||
|
|
idapp,
|
||
|
|
dest: username,
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
$group:
|
||
|
|
{
|
||
|
|
_id: "$dest",
|
||
|
|
descr: { $last: "$message" },
|
||
|
|
datenotif: { $last: "$datenotif" },
|
||
|
|
read: { $last: "$read" }
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
{
|
||
|
|
$sort: { datenotif: -1 }
|
||
|
|
},
|
||
|
|
])
|
||
|
|
.then((arrnotif) => {
|
||
|
|
// Remove duplicate
|
||
|
|
// Exclude my chat
|
||
|
|
const myarr = arrnotif.filter((ris) => ris._id !== username);
|
||
|
|
// console.table(myarr);
|
||
|
|
return myarr
|
||
|
|
|
||
|
|
}).catch((err) => {
|
||
|
|
console.error(err);
|
||
|
|
});
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
const SendNotif = mongoose.model('SendNotif', sendNotifSchema);
|
||
|
|
|
||
|
|
module.exports = { SendNotif: SendNotif };
|