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

88 行
2.0KB

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