Fixed members handling
This commit is contained in:
@@ -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) => {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user