package jp.co.example.kaiin.model;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 会員マスタ（KAIIN_MASTER）エンティティ。
 *
 * <p>生成元: input/kaiin-item-teigi.csv（項目定義書 12項目）
 * <p>生成: Claude Code（項目定義書から自動生成・人手レビュー前）
 */
public class KaiinMaster {

    /** 会員番号（K+7桁数字。主キー） */
    private String kaiinNo;

    /** 会員氏名（最大40文字・必須） */
    private String kaiinName;

    /** 会員氏名カナ（全角カタカナのみ・最大60文字・必須） */
    private String kaiinKana;

    /** メールアドレス（最大254文字・必須・一意） */
    private String mailAddress;

    /** 電話番号（ハイフン区切り・最大13文字・任意） */
    private String telNo;

    /** 性別区分（1:男性 2:女性 9:回答しない・任意） */
    private String seibetsuKbn;

    /** 生年月日（1900-01-01以降の過去日付・任意） */
    private LocalDate birthDate;

    /** 会員ランク区分（1:ゴールド 2:シルバー 3:ブロンズ・必須） */
    private String rankKbn;

    /** ポイント残高（0以上・必須・初期値0） */
    private long pointZan;

    /** 退会フラグ（0:在会 1:退会・必須・初期値0） */
    private String taikaiFlg = "0";

    /** 登録日時（必須） */
    private LocalDateTime createTs;

    /** 更新日時（必須） */
    private LocalDateTime updateTs;

    public String getKaiinNo() { return kaiinNo; }
    public void setKaiinNo(String kaiinNo) { this.kaiinNo = kaiinNo; }

    public String getKaiinName() { return kaiinName; }
    public void setKaiinName(String kaiinName) { this.kaiinName = kaiinName; }

    public String getKaiinKana() { return kaiinKana; }
    public void setKaiinKana(String kaiinKana) { this.kaiinKana = kaiinKana; }

    public String getMailAddress() { return mailAddress; }
    public void setMailAddress(String mailAddress) { this.mailAddress = mailAddress; }

    public String getTelNo() { return telNo; }
    public void setTelNo(String telNo) { this.telNo = telNo; }

    public String getSeibetsuKbn() { return seibetsuKbn; }
    public void setSeibetsuKbn(String seibetsuKbn) { this.seibetsuKbn = seibetsuKbn; }

    public LocalDate getBirthDate() { return birthDate; }
    public void setBirthDate(LocalDate birthDate) { this.birthDate = birthDate; }

    public String getRankKbn() { return rankKbn; }
    public void setRankKbn(String rankKbn) { this.rankKbn = rankKbn; }

    public long getPointZan() { return pointZan; }
    public void setPointZan(long pointZan) { this.pointZan = pointZan; }

    public String getTaikaiFlg() { return taikaiFlg; }
    public void setTaikaiFlg(String taikaiFlg) { this.taikaiFlg = taikaiFlg; }

    public LocalDateTime getCreateTs() { return createTs; }
    public void setCreateTs(LocalDateTime createTs) { this.createTs = createTs; }

    public LocalDateTime getUpdateTs() { return updateTs; }
    public void setUpdateTs(LocalDateTime updateTs) { this.updateTs = updateTs; }
}
