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_ALLOW_PAY_BY_CREDITCARD => FieldType::CHECK_BOX, 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_ALLOW_ACCESS_MY_PAGE => FieldType::CHECK_BOX, 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 allowAccessMyPage(): bool { $target = $this->allowAccessMyPage; if (is_array($target) && in_array("許可", $this->allowAccessMyPage, true)) { return true; } return false; } // クレジットカード支払許可 public function allowPayByCreditcard(): bool { $target = $this->allowPayByCreditcard; if (is_array($target) && in_array("許可", $this->allowPayByCreditcard, true)) { return true; } return false; } // クレジットカード登録申請可否 public function canApplyToChangePaymentMethodCreditcard() { return $this->allowPayByCreditcard() && $this->paymentMethod !== "クレジット" && $this->canPayByCreditcard(); } }