"Added picsInInternetAllowed field to Member model and updated related controllers, services, and views to handle new field; modified diary date activity routes and diary view; updated member service and member controller to handle new field; added new routes for diary date
This commit is contained in:
60
backend/services/diaryDateTagService.js
Normal file
60
backend/services/diaryDateTagService.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import DiaryDate from "../models/DiaryDates.js";
|
||||
import DiaryDateTag from "../models/DiaryDateTag.js";
|
||||
import DiaryMemberTag from "../models/DiaryMemberTag.js";
|
||||
import { DiaryTag } from "../models/DiaryTag.js";
|
||||
import Member from "../models/Member.js";
|
||||
import { checkAccess } from '../utils/userUtils.js';
|
||||
import { Op, literal } from "sequelize";
|
||||
|
||||
class DiaryDateTagService {
|
||||
async getDiaryDateMemberTags(userToken, clubId, memberId) {
|
||||
await checkAccess(userToken, clubId);
|
||||
return await DiaryTag.findAll({
|
||||
include: [
|
||||
{
|
||||
model: DiaryMemberTag,
|
||||
as: 'diaryMemberTags',
|
||||
where: { memberId },
|
||||
required: true,
|
||||
include: [
|
||||
{
|
||||
model: DiaryDate,
|
||||
as: 'diaryDates',
|
||||
required: true,
|
||||
on: {
|
||||
'$diaryMemberTags.diary_date_id$': { [Op.eq]: literal('`diaryMemberTags->diaryDates`.`id`') }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
order: [[literal('`diaryMemberTags->diaryDates`.`date`'), 'DESC']],
|
||||
group: ['DiaryTag.id'],
|
||||
having: literal('COUNT(DISTINCT `diaryMemberTags->diaryDates`.`id`) >= 1'),
|
||||
});
|
||||
}
|
||||
|
||||
async addDiaryDateTag(userToken, clubId, diaryDateId, memberId, tag) {
|
||||
console.log(userToken, clubId, diaryDateId, memberId, tag);
|
||||
await checkAccess(userToken, clubId);
|
||||
const tagObject = await DiaryTag.findOne({ where: { id: tag.id } });
|
||||
if (!tagObject) {
|
||||
throw new Error('Tag not found');
|
||||
}
|
||||
const diaryDate = await DiaryDate.findByPk(diaryDateId);
|
||||
if (!diaryDate) {
|
||||
throw new Error('DiaryDate not found');
|
||||
}
|
||||
const member = await Member.findByPk(memberId);
|
||||
if (!member) {
|
||||
throw new Error('Member not found');
|
||||
}
|
||||
const existingTag = await DiaryMemberTag.findOne({ where: { diaryDateId, memberId, tagId: tag.id } });
|
||||
if (!existingTag) {
|
||||
await DiaryMemberTag.create({ diaryDateId, memberId, tagId: tag.id });
|
||||
}
|
||||
return await this.getDiaryDateMemberTags(userToken, clubId, memberId);
|
||||
}
|
||||
}
|
||||
|
||||
export default new DiaryDateTagService();
|
||||
@@ -53,7 +53,8 @@ class MemberService {
|
||||
});
|
||||
}
|
||||
|
||||
async setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, phone, email, active = true, testMembership = false) {
|
||||
async setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, phone, email, active = true, testMembership = false,
|
||||
picsInInternetAllowed = false) {
|
||||
try {
|
||||
console.log('[setClubMembers] - Check access');
|
||||
await checkAccess(userToken, clubId);
|
||||
@@ -73,7 +74,8 @@ class MemberService {
|
||||
member.phone = phone;
|
||||
member.email = email;
|
||||
member.active = active;
|
||||
member.testMembership = testMembership
|
||||
member.testMembership = testMembership;
|
||||
member.picsInInternetAllowed = picsInInternetAllowed;
|
||||
await member.save();
|
||||
} else {
|
||||
await Member.create({
|
||||
@@ -86,7 +88,8 @@ class MemberService {
|
||||
email: email,
|
||||
clubId: clubId,
|
||||
active: active,
|
||||
testMembership: testMembership
|
||||
testMembership: testMembership,
|
||||
picsInInternetAllowed: picsInInternetAllowed,
|
||||
});
|
||||
}
|
||||
console.log('[setClubMembers] - return response');
|
||||
|
||||
Reference in New Issue
Block a user