[mod] allow empty membership number

This commit is contained in:
roydfalk 2024-05-27 19:10:01 +02:00
parent 5457c6dd4d
commit 70b9bd0073
3 changed files with 43 additions and 21 deletions

View file

@ -24,11 +24,15 @@ namespace _espe.api
{ {
register< register<
{ {
membership_number : string; membership_number : (null | string);
name_real_value : string; name_real_value : string;
email_address_private : (null | string); email_address_private : (null | string);
}, },
_espe.type.member_id (
string
|
_espe.type.member_id
)
>( >(
rest_subject, rest_subject,
lib_plankton.http.enum_method.post, lib_plankton.http.enum_method.post,
@ -71,25 +75,41 @@ namespace _espe.api
return Promise.reject(new Error("impossible")); return Promise.reject(new Error("impossible"));
} }
else { else {
const member_id : _espe.type.member_id = await _espe.service.member.project( if (
{ (! _espe.conf.get().settings.facultative_membership_number)
"membership_number": input.membership_number, &&
"name_real_value": input.name_real_value, (
"email_address_private": ( (input.membership_number === null)
("email_address_private" in input) ||
? ( (input.membership_number === "")
(input.email_address_private !== "") )
? input.email_address_private ) {
return Promise.resolve({
"status_code": 400,
"data": "membership number required"
});
}
else {
const member_id : _espe.type.member_id = await _espe.service.member.project(
{
"membership_number": input.membership_number,
"name_real_value": input.name_real_value,
"email_address_private": (
("email_address_private" in input)
? (
(input.email_address_private !== "")
? input.email_address_private
: null
)
: null : null
) ),
: null }
), );
} return Promise.resolve({
); "status_code": 201,
return Promise.resolve({ "data": member_id
"status_code": 201, });
"data": member_id }
});
} }
} }
} }

View file

@ -97,6 +97,7 @@ namespace _espe.conf
target_domain : string; target_domain : string;
frontend_url_base : (null | string); frontend_url_base : (null | string);
prefix_for_nominal_email_addresses : string; prefix_for_nominal_email_addresses : string;
facultative_membership_number : boolean;
registration_email : { registration_email : {
subject : string; subject : string;
body : string; body : string;
@ -248,6 +249,7 @@ namespace _espe.conf
"target_domain": (node_settings["target_domain"] ?? "example.org"), "target_domain": (node_settings["target_domain"] ?? "example.org"),
"frontend_url_base": (node_settings["frontend_url_base"] ?? null), // TODO: mandatory? "frontend_url_base": (node_settings["frontend_url_base"] ?? null), // TODO: mandatory?
"prefix_for_nominal_email_addresses": (node_settings["prefix_for_nominal_email_addresses"] ?? "member-"), "prefix_for_nominal_email_addresses": (node_settings["prefix_for_nominal_email_addresses"] ?? "member-"),
"facultative_membership_number": (node_settings["facultative_membership_number"] ?? false),
"registration_email": { "registration_email": {
"subject": ((node_settings["registration_email"] ?? {})["subject"] ?? "Registration"), "subject": ((node_settings["registration_email"] ?? {})["subject"] ?? "Registration"),
"body": ((node_settings["registration_email"] ?? {})["body"] ?? "URL: {{url}}"), "body": ((node_settings["registration_email"] ?? {})["body"] ?? "URL: {{url}}"),

View file

@ -307,7 +307,7 @@ namespace _espe.service.member
*/ */
export async function project( export async function project(
data : { data : {
membership_number : string; membership_number : (null | string);
name_real_value : string; name_real_value : string;
email_address_private : (null | string); email_address_private : (null | string);
} }