FieldType::NUMBER, self::FIELD_CUSTOMER_NAME => FieldType::SINGLE_LINE_TEXT, self::FIELD_CUSTOMER_NAME_KANA => FieldType::SINGLE_LINE_TEXT, self::FIELD_PAYMENT_METHOD => FieldType::SINGLE_LINE_TEXT, self::FIELD_EMAIL => FieldType::LINK, self::FIELD_PHONE_NUMBER => FieldType::LINK, self::FIELD_ZIP_CODE => FieldType::SINGLE_LINE_TEXT, self::FIELD_ADDRESS => FieldType::SINGLE_LINE_TEXT, self::FIELD_BANK_BRANCH_ID => FieldType::SINGLE_LINE_TEXT, self::FIELD_BANK_ACCOUNT_REGISTER_REMAIND_DATETIME => FieldType::DATETIME, self::FIELD_IC_SEASON_TICEKT_USER_ID => FieldType::NUMBER, ]; protected const FIELD_NAMES = [ ...parent::FIELD_NAMES, self::FIELD_CUSTOMER_CODE => 'customer_code', self::FIELD_CUSTOMER_NAME => 'customer_name', self::FIELD_CUSTOMER_NAME_KANA => 'customer_name_kana', self::FIELD_EMAIL => 'email', self::FIELD_ZIP_CODE => 'zip_code', self::FIELD_ADDRESS => 'address', self::FIELD_PHONE_NUMBER => 'phone_no', ]; // キャッシュ private bool|null $canPayByCreditcard = null; public static function getSelf(): static { return static::getAccess()->find(Auth::user()->kintone_id); } public static function findByCustomerCode(string $customerCode) { return static::getAccess()->first(static::getQuery()->where(self::FIELD_CUSTOMER_CODE, $customerCode)); } protected function toArrayCustom(): array { return [ 'customer_name_kana_hankaku' => mb_convert_kana($this->customerNameKana, "sk"), 'can_pay_by_creditcard' => $this->canPayByCreditcard(), 'can_apply_to_change_payment_method_creditcard' => $this->canApplyToChangePaymentMethodCreditcard(), ]; } public function isHTICWebUser(): bool { return !!$this->icSeasonTicektUserId; } public function canPayByCreditcard(bool $refresh = false): bool { // キャッシュがあればそれを返却する if (is_bool($this->canPayByCreditcard) && $refresh === false) { return $this->canPayByCreditcard; } $list = SeasonTicketContractRepository::get($this->customerCode); foreach ($list as $ele) { if (!$ele->plan->canPayByCreditcard()) { $this->canPayByCreditcard = false; return $this->canPayByCreditcard; } } $this->canPayByCreditcard = true; return $this->canPayByCreditcard; } // クレジットカード登録申請可否 public function canApplyToChangePaymentMethodCreditcard() { return $this->paymentMethod !== "クレジット" && $this->canPayByCreditcard(); } }