DONE: use full name for date in letter, include password in email after membership is done, block ic_number to exclude - (#9)
Co-authored-by: ISMAIL MASSERAN <topaz@ISMAILs-Macbook.local> Reviewed-on: #9
This commit was merged in pull request #9.
This commit is contained in:
@@ -19,6 +19,7 @@ class MembershipApplicationPassedNotification extends Notification implements Sh
|
||||
public function __construct(
|
||||
public MembershipApplication $application,
|
||||
public Document $resultLetter,
|
||||
public ?string $plainPassword = null,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -40,6 +41,8 @@ class MembershipApplicationPassedNotification extends Notification implements Sh
|
||||
data: [
|
||||
'application' => $this->application,
|
||||
'applicant' => $applicant,
|
||||
'plainPassword' => $this->plainPassword,
|
||||
'loginUrl' => rtrim(config('user.frontend_url'), '/'),
|
||||
],
|
||||
)->attach(
|
||||
Storage::disk(Document::STORAGE_DISK)->path($this->resultLetter->path),
|
||||
|
||||
@@ -9,6 +9,15 @@ Permohonan keahlian anda (**{{ $application->application_number }}**) **dilulusk
|
||||
|
||||
Surat keputusan rasmi dilampirkan dalam e-mel ini.
|
||||
|
||||
@if ($plainPassword)
|
||||
Akaun portal anda telah didaftarkan. Maklumat log masuk adalah seperti berikut:
|
||||
|
||||
- **E-mel:** {{ $applicant->email }}
|
||||
- **Kata laluan:** {{ $plainPassword }}
|
||||
|
||||
Sila log masuk di [{{ $loginUrl }}]({{ $loginUrl }}) dan tukar kata laluan anda selepas log masuk kali pertama.
|
||||
@endif
|
||||
|
||||
Terima kasih atas minat anda. Untuk sebarang pertanyaan, sila hubungi pejabat koperasi.
|
||||
|
||||
@include('emails.partials.footer')
|
||||
|
||||
@@ -274,15 +274,18 @@ class MembershipApplicationService
|
||||
}
|
||||
|
||||
return DB::transaction(function () use ($application, $boardMeetingReference, $boardMeetingDate) {
|
||||
$plainPassword = null;
|
||||
|
||||
if ($application->board_result === BoardResult::Pass->value && ! $application->user_id) {
|
||||
$user = $this->createMemberFromApplication($application);
|
||||
$application->update(['user_id' => $user->id]);
|
||||
$member = $this->createMemberFromApplication($application);
|
||||
$application->update(['user_id' => $member['user']->id]);
|
||||
$plainPassword = $member['plainPassword'];
|
||||
$application->refresh();
|
||||
}
|
||||
|
||||
$resultLetter = $this->storeResultLetter($application, $boardMeetingReference, $boardMeetingDate);
|
||||
|
||||
$this->sendResultNotification($application, $resultLetter);
|
||||
$this->sendResultNotification($application, $resultLetter, $plainPassword);
|
||||
|
||||
$application->update([
|
||||
'status' => ApplicationStatus::Completed,
|
||||
@@ -438,7 +441,7 @@ class MembershipApplicationService
|
||||
'application' => $application,
|
||||
'applicant' => $applicant,
|
||||
'boardMeetingReference' => $boardMeetingReference,
|
||||
'boardMeetingDate' => Carbon::parse($boardMeetingDate)->translatedFormat('d M Y'),
|
||||
'boardMeetingDate' => Carbon::parse($boardMeetingDate)->translatedFormat('d F Y'),
|
||||
'isPassed' => $isPassed,
|
||||
'letterSubject' => $isPassed
|
||||
? 'KELULUSAN PERMOHONAN MENJADI ANGGOTA KOPERASI PERMODALAN KELANTAN BERHAD (KoPKB)'
|
||||
@@ -447,7 +450,10 @@ class MembershipApplicationService
|
||||
];
|
||||
}
|
||||
|
||||
protected function createMemberFromApplication(MembershipApplication $application): User
|
||||
/**
|
||||
* @return array{user: User, plainPassword: string}
|
||||
*/
|
||||
protected function createMemberFromApplication(MembershipApplication $application): array
|
||||
{
|
||||
$application->loadMissing(['applicant', 'heirs']);
|
||||
$applicant = $application->applicant;
|
||||
@@ -458,10 +464,12 @@ class MembershipApplicationService
|
||||
]);
|
||||
}
|
||||
|
||||
$plainPassword = Str::password(16);
|
||||
|
||||
$user = User::create([
|
||||
'name' => $applicant->name,
|
||||
'email' => $applicant->email,
|
||||
'password' => Hash::make(Str::password(16)),
|
||||
'password' => Hash::make($plainPassword),
|
||||
'ic_number' => $applicant->ic_number,
|
||||
'phone_number' => $applicant->phone_number,
|
||||
'position' => $applicant->current_position,
|
||||
@@ -507,7 +515,10 @@ class MembershipApplicationService
|
||||
|
||||
app(EmailVerificationOtpService::class)->send($user);
|
||||
|
||||
return $user;
|
||||
return [
|
||||
'user' => $user,
|
||||
'plainPassword' => $plainPassword,
|
||||
];
|
||||
}
|
||||
|
||||
public function lookupMemberByIcNumber(string $icNumber): ?User
|
||||
@@ -532,12 +543,15 @@ class MembershipApplicationService
|
||||
->notify(new MembershipApplicationSubmittedNotification($application));
|
||||
}
|
||||
|
||||
protected function sendResultNotification(MembershipApplication $application, Document $resultLetter): void
|
||||
{
|
||||
protected function sendResultNotification(
|
||||
MembershipApplication $application,
|
||||
Document $resultLetter,
|
||||
?string $plainPassword = null,
|
||||
): void {
|
||||
$application->loadMissing('applicant');
|
||||
|
||||
$notification = $application->board_result === BoardResult::Pass->value
|
||||
? new MembershipApplicationPassedNotification($application, $resultLetter)
|
||||
? new MembershipApplicationPassedNotification($application, $resultLetter, $plainPassword)
|
||||
: new MembershipApplicationFailedNotification($application, $resultLetter);
|
||||
|
||||
Notification::route('mail', $application->applicant->email)->notify($notification);
|
||||
|
||||
Reference in New Issue
Block a user