checkToken(); // メール作成 $this->getEmail(); // 送信 if ($this->emailManager === null) { throw new LogicException("EmailManager不正"); } $this->emailManager->confirm(); } catch (Exception $e) { logger($e->getMessage()); logger($e->getFile()); logger($e->getLine()); return $this->failed(); } return $this->success(); } private function success() { return response()->json([ 'result' => 'SUCCESS' ]); } private function failed() { return response()->json([ 'result' => 'FAILED' ]); } private function checkToken() { $currectToken = config('mail.emailSendOrderToken'); if ($this->param->token !== $currectToken) { logs()->warning("Email送信依頼トークン不正"); throw new Exception("Email送信依頼トークン不正"); } } private function getEmail() { $emailId = $this->param->emailId; if ($emailId === Email::TERMINATE_ORDER_APPROVE) { $application = TerminateApplication::findByApplicationNo($this->param->applicationNo); $seasonTicketContract = SeasonTicketContract::find($application->seasonTicketContractRecordNo); $this->setEmail(new TerminateOrderApprove($seasonTicketContract, $application)); return; } if ($emailId === Email::VEHICLE_INFO_UPDATE_ORDER_APPROVE) { $application = VehicleInfoUpdateApplication::findByApplicationNo($this->param->applicationNo); $seasonTicketContract = SeasonTicketContract::find($application->seasonTicketContractRecordNo); $this->setEmail(new VehicleInfoUpdateOrderApprove($seasonTicketContract, $application)); return; } if ($emailId === Email::USER_INFO_UPDATE_ORDER_APPROVE) { $application = UserInfoUpdateApplication::findByApplicationNo($this->param->applicationNo); $seasonTicketContract = SeasonTicketContract::find($application->seasonTicketContractRecordNo); $this->setEmail(new UserInfoUpdateOrderApprove($seasonTicketContract, $application)); return; } if ($emailId === Email::ENTRY_APPROVE) { $entry = SeasonTicketContractEntry::find($this->param->seasonTicketContractEntryRecordNo); $parking = $entry->getParking(); $this->setEmail(new EntryApprove($parking, $entry)); return; } if ($emailId === Email::ENTRY_PAYMENT_COMPLETE) { $entry = SeasonTicketContractEntry::find($this->param->seasonTicketContractEntryRecordNo); $parking = $entry->getParking(); $this->setEmail(new EntryPaymentComplete($parking, $entry)); return; } if ($this->email === null || $this->emailManager === null) { throw new LogicException("setEmail不正"); } } private function setEmail(BaseEmailer $email) { $this->email = $email; $this->emailManager = new EmailManager($email); } }