MemberRegistrationService
in package
uses
LocatorAwareTrait
Handles member registration and SCA membership card submission.
Covers file upload validation, image scaling, age-based status assignment, token generation, and building email notification variables. Controller-layer concerns (request parsing, flash, redirect) remain in MembersController.
Table of Contents
Constants
- MAX_MEMBERSHIP_CARD_PIXELS : mixed = 25000000
- MEMBERSHIP_CARD_IMAGE_TYPES : mixed = ['image/gif' => 'gif', 'image/jpeg' => 'jpg', '...
Properties
Methods
- __construct() : mixed
- Initialize the registration service.
- applyRegistrationData() : void
- Assign registration fields to a new member entity based on age.
- assignStatusAndTokens() : void
- Assign age-based status and generate tokens for a new member.
-
buildAdultRegistrationEmailVars()
: array{resetUrl: string, registrationVars: array
, secretaryVars: array } - Build the email variables for an adult registration notification.
- buildMinorRegistrationEmailVars() : array<string, mixed>
- Build the email variables for a minor registration notification.
- deleteMembershipCard() : array{success: bool, message?: string}
- Delete a membership card after its member record no longer references it.
- getMembershipCardResponse() : Response|null
- Stream a membership card from persistent storage or the legacy local path.
- processCardUpload() : array{success: bool, message?: string, fileName?: string, documentId?: int}
- Validate and store an uploaded membership card image.
- processScaCardUpload() : array{success: bool, message?: string, fileName?: string, documentId?: int}
- Validate and persist an updated SCA membership card.
- saveMember() : bool
- Save a new member entity.
- storeMembershipCard() : array{success: bool, message?: string, fileName?: string, documentId?: int}
- Validate image content and store it through tenant-aware document storage.
Constants
MAX_MEMBERSHIP_CARD_PIXELS
private
mixed
MAX_MEMBERSHIP_CARD_PIXELS
= 25000000
MEMBERSHIP_CARD_IMAGE_TYPES
private
mixed
MEMBERSHIP_CARD_IMAGE_TYPES
= ['image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/webp' => 'webp']
Properties
$documentService
private
DocumentService
$documentService
$Members
private
MembersTable
$Members
Methods
__construct()
Initialize the registration service.
public
__construct([DocumentService|null $documentService = null ]) : mixed
Parameters
- $documentService : DocumentService|null = null
applyRegistrationData()
Assign registration fields to a new member entity based on age.
public
applyRegistrationData(Member $member, array<string, mixed> $data) : void
Parameters
- $member : Member
-
New member entity.
- $data : array<string, mixed>
-
Form data from the registration request.
assignStatusAndTokens()
Assign age-based status and generate tokens for a new member.
public
assignStatusAndTokens(Member $member) : void
Parameters
- $member : Member
-
Entity with birth fields already set.
buildAdultRegistrationEmailVars()
Build the email variables for an adult registration notification.
public
buildAdultRegistrationEmailVars(Member $member) : array{resetUrl: string, registrationVars: array, secretaryVars: array}
Parameters
- $member : Member
-
Newly registered member.
Return values
array{resetUrl: string, registrationVars: arraybuildMinorRegistrationEmailVars()
Build the email variables for a minor registration notification.
public
buildMinorRegistrationEmailVars(Member $member) : array<string, mixed>
Parameters
- $member : Member
-
Newly registered minor.
Return values
array<string, mixed>deleteMembershipCard()
Delete a membership card after its member record no longer references it.
public
deleteMembershipCard(int|null $documentId, string|null $legacyPath) : array{success: bool, message?: string}
Parameters
- $documentId : int|null
- $legacyPath : string|null
Return values
array{success: bool, message?: string}getMembershipCardResponse()
Stream a membership card from persistent storage or the legacy local path.
public
getMembershipCardResponse(Member $member) : Response|null
Parameters
- $member : Member
Return values
Response|nullprocessCardUpload()
Validate and store an uploaded membership card image.
public
processCardUpload(UploadedFileInterface $file, int $memberId, int $uploaderId) : array{success: bool, message?: string, fileName?: string, documentId?: int}
Parameters
- $file : UploadedFileInterface
- $memberId : int
- $uploaderId : int
Return values
array{success: bool, message?: string, fileName?: string, documentId?: int}processScaCardUpload()
Validate and persist an updated SCA membership card.
public
processScaCardUpload(UploadedFileInterface $file, int $memberId, int $uploaderId) : array{success: bool, message?: string, fileName?: string, documentId?: int}
Parameters
- $file : UploadedFileInterface
- $memberId : int
- $uploaderId : int
Return values
array{success: bool, message?: string, fileName?: string, documentId?: int}saveMember()
Save a new member entity.
public
saveMember(Member $member) : bool
Parameters
- $member : Member
-
Entity to persist.
Return values
bool —True on success.
storeMembershipCard()
Validate image content and store it through tenant-aware document storage.
private
storeMembershipCard(UploadedFileInterface $file, int $memberId, int $uploaderId) : array{success: bool, message?: string, fileName?: string, documentId?: int}
Parameters
- $file : UploadedFileInterface
- $memberId : int
- $uploaderId : int