Fixed: le reactions devono stare in una tabella a parte (reactions).

- cambiata la gestione dei seen, fav, book, attend
This commit is contained in:
Surya Paolo
2023-09-27 18:39:05 +02:00
parent f88b753f26
commit 2b359d5260
18 changed files with 4166 additions and 131 deletions

View File

@@ -7,6 +7,7 @@ import { CDateTime } from '@/components/CDateTime'
import { CMyPage } from '@/components/CMyPage'
import { CMyGroup } from '@/components/CMyGroup'
import { CMyChipList } from '@/components/CMyChipList'
import { CGridTableUser } from '@/components/CGridTableUser'
import { CMyFieldRec } from '@/components/CMyFieldRec'
import { CMyUser } from '@/components/CMyUser'
import { CLabel } from '@/components/CLabel'
@@ -20,7 +21,7 @@ import { useI18n } from '@/boot/i18n'
import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar'
import { costanti } from '@costanti'
import { EState, IBookedEventPage, IColGridTable, IBookedEvent, IEvents, IMessage, IMessagePage, IParamDialog } from '@model'
import { EState, IReaction, IBookedEventPage, IColGridTable, IBookedEvent, IEvents, IMessage, IMessagePage, IParamDialog, ISearchList } from '@model'
import { shared_consts } from '@/common/shared_vuejs'
import { colCitys, fieldsTable } from '@store/Modules/fieldsTable'
import { useRoute, useRouter } from 'vue-router'
@@ -35,7 +36,7 @@ export default defineComponent({
components: {
CProfile, CTitleBanner,
CMyFieldDb, CDateTime, CMyPage, CMyFieldRec, CAccomodation,
CMyUser, CGalleryImages, CMyChipList, CLabel, CMyGroup
CMyUser, CGalleryImages, CMyChipList, CLabel, CMyGroup, CGridTableUser,
},
props: {
table: {
@@ -69,6 +70,10 @@ export default defineComponent({
const $route = useRoute()
const { t } = useI18n()
const arrfilterand: any = ref([])
const searchList = ref(<ISearchList[]>[])
const filter = ref(costanti.FIND_PEOPLE)
const showPic = ref(false)
const loading = ref(false)
@@ -77,8 +82,8 @@ export default defineComponent({
const contextDay = ref(<any>null)
const usersList = ref({ show: false, title: '', list: [] })
const bookedList = ref(<any>{ show: false, title: '', list: [] })
const usersList = ref(<any>{ show: false, title: '', list: [], loadfromDb: false, tipofavbook: 0 })
const bookedList = ref(<any>{ show: false, title: '', list: [], loadfromDb: false, tipofavbook: 0 })
const formbookEventDefault = ref(<IBookedEvent>{
userId: '',
@@ -138,12 +143,35 @@ export default defineComponent({
const idnotif = computed(() => $route.query.idnotif ? $route.query.idnotif.toString() : '')
const arrbookings = computed(() => calendarStore.findAllBookedByIdEvent(myrec.value._id))
const filtercustom: any = computed(() => {
let queryreact = {}
if (usersList.value.tipofavbook === costanti.TIPOFAVBOOK.SEEN) {
queryreact = {seen: true}
} else if (usersList.value.tipofavbook === costanti.TIPOFAVBOOK.FAVORITE) {
queryreact = {fav: true}
} else if (usersList.value.tipofavbook === costanti.TIPOFAVBOOK.BOOKMARK) {
queryreact = {book: true}
} else if (usersList.value.tipofavbook === costanti.TIPOFAVBOOK.ATTEND) {
queryreact = {attend: true}
}
return [{
idapp: process.env.APP_ID,
tab: tools.getNumTabByTable(props.table),
idrec: myrec.value._id,
...queryreact,
}]
})
function profile() {
return userStore.my.profile
}
function load() {
// Carica il profilo di quest'utente
// Carica il record
if (props.idRec) {
userStore.loadGeneric(props.table, props.idRec, idnotif.value).then((ris) => {
myrec.value = ris
@@ -210,29 +238,32 @@ export default defineComponent({
if (myset) {
await userStore.setFavorite($q, t, myrec.value._id, props.table, myrec.value);
}
mylist = myrec.value.myfav
mylist = myrec.value.myreaction ? myrec.value.myreaction.filter((rec: IReaction) => rec.fav) : []
} else if (tipo === costanti.TIPOFAVBOOK.BOOKMARK) {
if (myset) {
await userStore.setBookmark($q, t, myrec.value._id, props.table, myrec.value);
}
mylist = myrec.value.mybook
mylist = myrec.value.myreaction ? myrec.value.myreaction.filter((rec: IReaction) => rec.book) : []
} else if (tipo === costanti.TIPOFAVBOOK.SEEN) {
if (myset) {
loading.value = true
const risrecord = await userStore.setSeen($q, t, myrec.value._id, props.table, myrec.value)
if (risrecord) {
myrec.value = risrecord
calendarStore.updatearrBookingEvent(myrec.value._id, risrecord.mybookings)
if (!userStore.isSeen(myrec.value._id, props.table)) {
loading.value = true
const risrecord = await userStore.setSeen($q, t, myrec.value._id, props.table, myrec.value)
if (risrecord && risrecord.mybookings) {
myrec.value = risrecord
bookEventpage.value.state = EState.None
calendarStore.updatearrBookingEvent(myrec.value._id, risrecord.mybookings)
const findev = calendarStore.findEventBooked(myrec.value._id, false)
EditBookEvent(false)
bookEventpage.value.state = EState.None
const findev = calendarStore.findEventBooked(myrec.value._id, false)
EditBookEvent(false)
}
loading.value = false
}
loading.value = false
}
mylist = myrec.value.myseen
mylist = myrec.value.myreaction ? myrec.value.myreaction.filter((rec: IReaction) => rec.seen) : []
} else if (tipo === costanti.TIPOFAVBOOK.ATTEND) {
if (myset) {
// userStore.setAttend($q, t, myrec.value._id, props.table, bookEventpage.value.bookedevent.numpeople, myrec.value);
@@ -240,17 +271,19 @@ export default defineComponent({
mylist = arrbookings.value
if (!myset && mylist && mylist.length > 0) {
bookedList.value.show = true;
bookedList.value.title = title;
bookedList.value.list = mylist;
bookedList.value.show = true
bookedList.value.title = title
bookedList.value.list = mylist
}
return true;
}
if (!myset && mylist && mylist.length > 0) {
usersList.value.show = true;
usersList.value.title = title;
usersList.value.list = mylist;
if (!myset && mylist) {
usersList.value.show = true
usersList.value.title = title
usersList.value.tipofavbook = tipo
usersList.value.loadfromDb = true
usersList.value.list = mylist
}
}
@@ -442,6 +475,101 @@ export default defineComponent({
arrbookings.value.find((recbook: IBookedEvent) => recbook.userId === userStore.my._id && recbook.booked)
}
function extraparams() {
return {
lookupPipeline1: {
lk_tab: 'users',
lk_LF: 'userId',
lk_FF: '_id',
lk_as: 'user',
lk_proj: {
name: 1,
surname: 1,
username: 1,
'profile.handshake': 1,
'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1,
'profile.resid_province': 1,
'mycities.reg': 1,
},
},
/*
{
$lookup: {
from: "users",
let: { searchId: { $toObjectId: "$userId" } },
pipeline: [
{
$match: {
$expr: {
$and: [
{ $eq: ["$_id", "$$searchId"] },
],
},
},
},
{
$project: {
name: 1,
surname: 1,
username: 1,
"profile.handshake": 1,
"profile.img": 1,
"profile.mygroups": 1,
"profile.qualifica": 1,
"profile.resid_province": 1,
"mycities.reg": 1,
},
}
],
as: "user",
},
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: [
{
$arrayElemAt: [
"$mycities",
0,
],
},
{
$arrayElemAt: [
"$user",
0,
],
},
"$$ROOT",
],
},
},
},
lookup1: {
lk_tab: 'provinces',
lk_LF: 'profile.resid_province',
lk_FF: 'prov',
lk_as: 'mycities',
lk_proj: {
username: 1,
name: 1,
surname: 1,
'profile.handshake': 1,
'profile.img': 1,
'profile.mygroups': 1,
'profile.qualifica': 1,
'profile.resid_province': 1,
'mycities.reg': 1,
}
},
*/
}
}
onMounted(mounted)
@@ -485,6 +613,11 @@ export default defineComponent({
isAlreadyBooked,
bookEventForm,
loading,
arrfilterand,
filtercustom,
searchList,
filter,
extraparams,
}
}
})