Fixed members handling

This commit is contained in:
Torsten Schulz
2024-09-25 17:23:01 +02:00
parent 3181a6628d
commit edcfd8130a
6 changed files with 56 additions and 37 deletions

View File

@@ -1,10 +1,14 @@
import MemberService from "../services/memberService.js";
const getClubMembers = async(req, res) => {
console.log('----->getClubMembers');
try {
const { authcode: userToken } = req.headers;
const { id: clubId } = req.params;
res.status(200).json(await MemberService.getClubMembers(userToken, clubId));
const { id: clubId, showAll } = req.params;
if (showAll === null) {
showAll = false;
}
res.status(200).json(await MemberService.getClubMembers(userToken, clubId, showAll));
} catch(error) {
console.log('[getClubMembers] - Error: ', error);
res.status(500).json({ error: 'systemerror' });
@@ -12,6 +16,7 @@ const getClubMembers = async(req, res) => {
}
const getWaitingApprovals = async(req, res) => {
console.log('----->setClubMembers');
try {
console.log('[getWaitingApprovals] - Start');
const { id: clubId } = req.params;
@@ -29,11 +34,16 @@ const getWaitingApprovals = async(req, res) => {
}
const setClubMembers = async (req, res) => {
const { id: memberId, firstname: firstName, lastname: lastName, street, city, birthdate, phone, email, active } = req.body;
const { id: clubId } = req.params;
const { authcode: userToken } = req.headers;
const addResult = await MemberService.setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, phone, email, active);
res.status(addResult.status || 500).json(addResult.response);
try {
const { id: memberId, firstname: firstName, lastname: lastName, street, city, birthdate, phone, email, active } = req.body;
const { id: clubId } = req.params;
const { authcode: userToken } = req.headers;
const addResult = await MemberService.setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, phone, email, active);
res.status(addResult.status || 500).json(addResult.response);
} catch (error) {
console.error('[setClubMembers] - Error:', error);
res.status(500).json({ error: 'Failed to upload image' });
}
}
const uploadMemberImage = async (req, res) => {

View File

@@ -8,10 +8,10 @@ const router = express.Router();
const storage = multer.memoryStorage();
const upload = multer({ storage: storage });
router.post('/:clubId/image/:memberId', authenticate, upload.single('image'), uploadMemberImage);
router.get('/:clubId/image/:memberId', authenticate, getMemberImage);
router.get('/:id', authenticate, getClubMembers);
router.post('/:id', authenticate, setClubMembers);
router.post('/image/:clubId/:memberId', authenticate, upload.single('image'), uploadMemberImage);
router.get('/image/:clubId/:memberId', authenticate, getMemberImage);
router.get('/get/:id/:showAll', authenticate, getClubMembers);
router.post('/set/:id', authenticate, setClubMembers);
router.get('/notapproved/:id', authenticate, getWaitingApprovals);
export default router;

View File

@@ -17,16 +17,22 @@ class MemberService {
where: {
clubId: clubId,
approved: false,
userId: user.id
userId: user.id
}
});
});
}
getClubMembers(userToken, clubId) {
getClubMembers(userToken, clubId, showAll) {
console.log('[getClubMembers] - Check access');
checkAccess(userToken, clubId);
console.log('[getClubMembers] - Find members');
return Member.findAll({ where: { clubId: clubId } })
const where = {
clubId: clubId
};
if (!showAll) {
where.active = true;
}
return Member.findAll({ where })
.then(members => {
return members.map(member => {
const imagePath = path.join('images', 'members', `${member.id}.jpg`);
@@ -66,7 +72,7 @@ class MemberService {
member.birthDate = birthdate;
member.phone = phone;
member.email = email;
member.active = active; // Active status setzen
member.active = active;
await member.save();
} else {
await Member.create({
@@ -78,15 +84,13 @@ class MemberService {
phone: phone,
email: email,
clubId: clubId,
active: active // Active status setzen
active: active
});
}
console.log('[setClubMembers] - load club members');
const members = await this.getClubMembers(userToken, clubId);
console.log('[setClubMembers] - return response');
return {
status: 200,
response: members,
response: { result: "success" },
}
} catch (error) {
console.log(error);

View File

@@ -35,10 +35,15 @@ export const hasUserClubAccess = async(userId, clubId) => {
}
export const checkAccess = async(userToken, clubId) => {
const user = await getUserByToken(userToken);
if (!await hasUserClubAccess(user.id, clubId)) {
console.log('no club access');
const err = new HttpError('noaccess', 403);
throw err;
try {
const user = await getUserByToken(userToken);
if (!await hasUserClubAccess(user.id, clubId)) {
console.log('no club access');
const err = new HttpError('noaccess', 403);
throw err;
}
} catch (error) {
console.log(error);
throw error;
}
}

View File

@@ -302,7 +302,7 @@ export default {
}
},
async loadMembers() {
const response = await apiClient.get(`/clubmembers/${this.currentClub}`);
const response = await apiClient.get(`/clubmembers/get/${this.currentClub}/false`);
this.members = response.data;
},
async loadParticipants(dateId) {
@@ -630,7 +630,7 @@ export default {
},
async loadMemberImage(member) {
try {
const response = await apiClient.get(`/clubmembers/${this.currentClub}/image/${member.id}`, {
const response = await apiClient.get(`/clubmembers/image/${this.currentClub}/${member.id}`, {
responseType: 'blob',
});
const imageUrl = URL.createObjectURL(response.data);
@@ -664,7 +664,7 @@ export default {
},
async loadMemberImage(member) {
try {
const response = await apiClient.get(`/clubmembers/${this.currentClub}/image/${member.id}`, {
const response = await apiClient.get(`/clubmembers/image/${this.currentClub}/${member.id}`, {
responseType: 'blob',
});
this.imageUrl = URL.createObjectURL(response.data);

View File

@@ -125,7 +125,10 @@ export default {
},
methods: {
async init() {
const response = await apiClient.get(`/clubmembers/${this.currentClub}`);
await this.loadMembers();
},
async loadMembers() {
const response = await apiClient.get(`/clubmembers/get/${this.currentClub}/true`);
this.members = response.data;
this.members.forEach(member => {
this.loadMemberImage(member);
@@ -149,8 +152,6 @@ export default {
onFileSelected(event) {
const file = event.target.files[0];
this.memberImage = file;
// Bildvorschau erstellen
if (file) {
const reader = new FileReader();
reader.onload = (e) => {
@@ -174,8 +175,8 @@ export default {
let response;
try {
response = await apiClient.post(`/clubmembers/${this.currentClub}`, memberData);
this.members = response.data;
response = await apiClient.post(`/clubmembers/set/${this.currentClub}`, memberData);
this.loadMembers();
} catch (error) {
console.error("Fehler beim Speichern des Mitglieds:", error);
return;
@@ -186,7 +187,7 @@ export default {
formData.append('image', this.memberImage);
formData.append('clubId', this.currentClub);
try {
await apiClient.post(`/clubmembers/${this.currentClub}/image/${this.memberToEdit.id}`, formData, {
await apiClient.post(`/clubmembers/image/${this.currentClub}/${this.memberToEdit.id}`, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
@@ -210,8 +211,7 @@ export default {
this.newEmail = member.email;
this.newActive = member.active;
try {
const response = await apiClient.get(`/clubmembers/${member.id}/image`, {
params: { clubId: this.currentClub },
const response = await apiClient.get(`/clubmembers/image/${member.id}`, {
responseType: 'blob'
});
this.memberImagePreview = URL.createObjectURL(response.data);
@@ -265,7 +265,7 @@ export default {
},
async loadMemberImage(member) {
try {
const response = await apiClient.get(`/clubmembers/${this.currentClub}/image/${member.id}`, {
const response = await apiClient.get(`/clubmembers/image/${this.currentClub}/${member.id}`, {
responseType: 'blob',
});
const imageUrl = URL.createObjectURL(response.data);