diff --git a/app/Http/Controllers/ESign/EsignApiController.php b/app/Http/Controllers/ESign/EsignApiController.php index 537822d3..32347c8c 100644 --- a/app/Http/Controllers/ESign/EsignApiController.php +++ b/app/Http/Controllers/ESign/EsignApiController.php @@ -3,12 +3,14 @@ namespace App\Http\Controllers\ESign; use App\Http\Controllers\Controller; +use App\Mail\EsignRequestMail; use App\Models\ESign\EsignContract; use App\Models\ESign\EsignSigner; use App\Models\ESign\EsignSignField; use App\Models\ESign\EsignAuditLog; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Mail; use Illuminate\Support\Str; class EsignApiController extends Controller @@ -256,10 +258,11 @@ public function send(Request $request, int $id): JsonResponse 'updated_by' => auth()->id(), ]); - // 첫 번째 서명자 상태 변경 + // 첫 번째 서명자 상태 변경 + 메일 발송 $nextSigner = $contract->signers()->orderBy('sign_order')->first(); if ($nextSigner) { $nextSigner->update(['status' => 'notified']); + Mail::to($nextSigner->email)->send(new EsignRequestMail($contract, $nextSigner)); } EsignAuditLog::create([ @@ -295,6 +298,7 @@ public function remind(Request $request, int $id): JsonResponse if ($nextSigner) { $nextSigner->update(['status' => 'notified']); + Mail::to($nextSigner->email)->send(new EsignRequestMail($contract, $nextSigner, isReminder: true)); } EsignAuditLog::create([ diff --git a/app/Mail/EsignRequestMail.php b/app/Mail/EsignRequestMail.php new file mode 100644 index 00000000..d847256b --- /dev/null +++ b/app/Mail/EsignRequestMail.php @@ -0,0 +1,47 @@ +isReminder ? '[리마인더] ' : ''; + + return new Envelope( + subject: "{$prefix}[SAM] 전자계약 서명 요청 - {$this->contract->title}", + ); + } + + public function content(): Content + { + $signUrl = config('app.url') . '/esign/sign/' . $this->signer->access_token; + + return new Content( + html: 'emails.esign.request', + with: [ + 'contractTitle' => $this->contract->title, + 'signerName' => $this->signer->name, + 'signUrl' => $signUrl, + 'expiresAt' => $this->contract->expires_at?->format('Y-m-d H:i'), + 'isReminder' => $this->isReminder, + ], + ); + } +} diff --git a/resources/views/emails/esign/request.blade.php b/resources/views/emails/esign/request.blade.php new file mode 100644 index 00000000..b3d5a1a5 --- /dev/null +++ b/resources/views/emails/esign/request.blade.php @@ -0,0 +1,79 @@ + + +
+ + +| + + | +