選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

112 行
3.6KB

  1. <?php
  2. namespace App\Email\Members;
  3. use App\Kintone\Models\Parking;
  4. use App\Kintone\Models\PaymentPlan;
  5. use App\Kintone\Models\SeasonTicketContractEntry;
  6. use App\Kintone\Models\SeasonTicketContractPlan;
  7. class EntryApprovePayToYucho extends Members
  8. {
  9. private ?PaymentPlan $firstMonthPaymentPlan = null;
  10. private ?PaymentPlan $partitialPaymentPlan = null;
  11. private ?PaymentPlan $depositPaymentPlan = null;
  12. public function __construct(
  13. private Parking $parking,
  14. private SeasonTicketContractEntry $entry,
  15. private SeasonTicketContractPlan $plan,
  16. ) {
  17. $this->setEmail($entry->email);
  18. parent::__construct(null);
  19. }
  20. public function getTemplateName(): string
  21. {
  22. return 'emails.members.entry_approve_pay_to_yucho';
  23. }
  24. public function getSubject(): string
  25. {
  26. return "【利用確認事項】申込受付 月極定期駐車場ナビ";
  27. }
  28. /**
  29. * 初月分の入金予定をセット
  30. *
  31. * @param PaymentPlan $plan
  32. * @return void
  33. */
  34. public function setFirstMonthPaymentPlan(PaymentPlan $plan)
  35. {
  36. $this->firstMonthPaymentPlan = $plan;
  37. }
  38. /**
  39. * 日割り分の入金予定をセット
  40. *
  41. * @param PaymentPlan $plan
  42. * @return void
  43. */
  44. public function setPartitialPaymentPlan(PaymentPlan $plan)
  45. {
  46. $this->partitialPaymentPlan = $plan;
  47. }
  48. /**
  49. * 保証金の入金予定をセット
  50. *
  51. * @param PaymentPlan $plan
  52. * @return void
  53. */
  54. public function setDepositPaymentPlan(PaymentPlan $plan)
  55. {
  56. $this->depositPaymentPlan = $plan;
  57. }
  58. public function getMemberParams(): array
  59. {
  60. $entry = $this->entry;
  61. return [
  62. 'customer_name' => $entry->customerName ?? "-",
  63. 'customer_name_kana' => $entry->customerNameKana ?? "-",
  64. 'parking_name' => $entry->parkingName ?? "-",
  65. 'type_name' => $this->plan->vehicleType,
  66. 'season_ticket_select' => null, //##TODO
  67. 'plan_name' => $entry->planName ?? "-",
  68. 'vehicle_no' => $entry->vehicleNo ?? "-",
  69. 'use_start_date' => $entry->useStartDate ? $entry->useStartDate->format('Y/m/d') : "-",
  70. 'payment_method' => $entry->paymentMethod ?? "-",
  71. 'amount' => number_format($entry->amount ?? 0),
  72. 'payment_explain' => EntryMessageBuilder::getPaymentExplainStr(
  73. $this->firstMonthPaymentPlan,
  74. $this->partitialPaymentPlan,
  75. $this->depositPaymentPlan,
  76. ),
  77. 'tax_explain' => EntryMessageBuilder::getTaxExplain($this->plan),
  78. 'can_terminate_15' => in_array(Parking::ELEMENT_CAN_TERMINATE_DATE_15, $this->parking->canTerminateDate ?? []),
  79. 'can_terminate_end_of_month' => in_array(Parking::ELEMENT_CAN_TERMINATE_DATE_END_OF_MONTH, $this->parking->canTerminateDate ?? []),
  80. 'deposit_explain' => EntryMessageBuilder::getDepositExplain(
  81. $this->depositPaymentPlan
  82. ),
  83. 'total_payment_amount' => number_format($this->totalPaymentAmount()),
  84. ];
  85. }
  86. private function totalPaymentAmount()
  87. {
  88. $total = 0;
  89. if ($this->firstMonthPaymentPlan) {
  90. $total += $this->firstMonthPaymentPlan->paymentPlanAmount;
  91. }
  92. if ($this->partitialPaymentPlan) {
  93. $total += $this->partitialPaymentPlan->paymentPlanAmount;
  94. }
  95. if ($this->depositPaymentPlan) {
  96. $total += $this->depositPaymentPlan->paymentPlanAmount;
  97. }
  98. return $total;
  99. }
  100. }