feat(ClubSettings): add member data quality requirements configuration
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 38s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 38s
- Introduced new settings for member data quality requirements in club settings, allowing configuration of required fields such as street, postal code, city, phone, and email. - Updated the backend to handle the new memberDataQualityRequirements field in club settings. - Enhanced the frontend to display and manage these requirements in the ClubSettings view, improving user experience and data integrity. - Added localization support for new terms related to member data quality across multiple languages.
This commit is contained in:
@@ -71,7 +71,8 @@ class ClubService {
|
||||
greetingText,
|
||||
associationMemberNumber,
|
||||
myTischtennisFedNickname,
|
||||
autoFetchRankings
|
||||
autoFetchRankings,
|
||||
memberDataQualityRequirements
|
||||
}) {
|
||||
await checkAccess(userToken, clubId);
|
||||
const club = await Club.findByPk(clubId);
|
||||
@@ -81,9 +82,33 @@ class ClubService {
|
||||
const updates = { greetingText, associationMemberNumber };
|
||||
if (myTischtennisFedNickname !== undefined) updates.myTischtennisFedNickname = myTischtennisFedNickname || null;
|
||||
if (autoFetchRankings !== undefined) updates.autoFetchRankings = !!autoFetchRankings;
|
||||
if (memberDataQualityRequirements !== undefined) {
|
||||
updates.memberDataQualityRequirements = this.normalizeMemberDataQualityRequirements(memberDataQualityRequirements);
|
||||
}
|
||||
return await club.update(updates);
|
||||
}
|
||||
|
||||
normalizeMemberDataQualityRequirements(settings) {
|
||||
const defaults = {
|
||||
requireStreet: true,
|
||||
requirePostalCode: true,
|
||||
requireCity: true,
|
||||
requirePhone: true,
|
||||
requireEmail: true
|
||||
};
|
||||
|
||||
if (!settings || typeof settings !== 'object' || Array.isArray(settings)) {
|
||||
return defaults;
|
||||
}
|
||||
|
||||
return Object.fromEntries(
|
||||
Object.entries(defaults).map(([key, defaultValue]) => [
|
||||
key,
|
||||
typeof settings[key] === 'boolean' ? settings[key] : defaultValue
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
async approveUserClubAccess(userToken, clubId, toApproveUserId) {
|
||||
await checkAccess(userToken, clubId);
|
||||
const toApproveUserClub = await UserClub.findOne({
|
||||
|
||||
Reference in New Issue
Block a user