領収証発行サービス
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

85 行
1.9KB

  1. <?php
  2. namespace App\Logic\ReceiptIssuingOrder;
  3. use App\Codes\ReceiptIssuingOrderStatus;
  4. use App\Codes\SMSSendPurpose;
  5. use App\Logic\SMS\SMSManager;
  6. use App\Models\ReceiptIssuingOrder;
  7. use Illuminate\Support\Facades\View;
  8. use LogicException;
  9. class CreateManager extends ReceiptIssuingOrderManager
  10. {
  11. public function __construct(
  12. protected ReceiptIssuingOrder $order,
  13. protected SMSManager $smsManager
  14. ) {
  15. }
  16. public function init()
  17. {
  18. $order = $this->order;
  19. $this->initialized = true;
  20. return $this;
  21. }
  22. public function id(): string
  23. {
  24. return $this->order->id ?? "";
  25. }
  26. public function fill(array $attr)
  27. {
  28. $this->order->fill($attr);
  29. return $this;
  30. }
  31. public function create(): array
  32. {
  33. $order = $this->order;
  34. // パラメータチェック
  35. $messages = $this->paramCheck();
  36. if (count($messages) !== 0) {
  37. return $messages;
  38. }
  39. // モデル更新
  40. $order->status = ReceiptIssuingOrderStatus::CREATED;
  41. $this->refreshToken();
  42. $contractId = $this->loginUser()->getContractId();
  43. if ($contractId === null) {
  44. throw new LogicException("契約不良");
  45. }
  46. $order->setContract($contractId)
  47. ->save();
  48. // SMS配信
  49. $smsSendOrder = $this->smsManager::makeSMSSendOrder($order, SMSSendPurpose::SEND_RECEIPT_ISSUING_ORDER_FORM, $this->makeSMSContents());
  50. $smsSendOrder->send();
  51. return [];
  52. }
  53. private function paramCheck(): array
  54. {
  55. $ret = [];
  56. $order = $this->order;
  57. return $ret;
  58. }
  59. private function makeSMSContents(): string
  60. {
  61. return View::make('sms.announce_receipt_issusing_order_form', [
  62. 'url' => implode('/', [config('app.url'), 'receipt-issuing-order/create', $this->order->access_token])
  63. ])->render();
  64. }
  65. }