package peserta

import "api-service/internal/models"

// === PESERTA MODELS ===

// PesertaRequest represents peserta lookup request
type PesertaRequest struct {
	models.BaseRequest
	NoKartu    string `json:"nokartu" validate:"required,min=13,max=13"`
	NIK        string `json:"nik,omitempty" validate:"omitempty,min=16,max=16"`
	TanggalSEP string `json:"tglsep" validate:"required" example:"2024-01-15"`
	NoTelepon  string `json:"notelp,omitempty" validate:"omitempty,max=15"`
}

// PesertaData represents peserta information from BPJS
type PesertaData struct {
	NoKartu          string `json:"noKartu"`
	NIK              string `json:"nik"`
	Nama             string `json:"nama"`
	Pisa             string `json:"pisa"`
	Sex              string `json:"sex"`
	TanggalLahir     string `json:"tglLahir"`
	TelephoneMsisdn  string `json:"tglTAT"`
	TelephoneAsat    string `json:"tglTMT"`
	KodeCabang       string `json:"kdCabang"`
	NamaCabang       string `json:"nmCabang"`
	KodeJenisPeserta string `json:"kdJnsPst"`
	NamaJenisPeserta string `json:"nmJnsPst"`
	KelasRawat       string `json:"klsRawat"`
	Status           string `json:"statusPeserta"`
	Aktif            string `json:"aktif"`
	KeteranganAktif  string `json:"ketAktif"`
	NoSKTM           string `json:"noSKTM,omitempty"`
	NoKTP            string `json:"noKtp"`
	Asuransi         string `json:"asuransi,omitempty"`
	CoB              string `json:"cob,omitempty"`
	TunggakanIuran   string `json:"tglTunggak,omitempty"`
	MR               struct {
		NoMR         string `json:"noMR"`
		NamaMR       string `json:"nmMR"`
		Sex          string `json:"sex"`
		TglLahir     string `json:"tglLahir"`
		TglMeninggal string `json:"tglMeninggal,omitempty"`
	} `json:"mr,omitempty"`
}

// PesertaResponse represents peserta API response
type PesertaResponse struct {
	models.BaseResponse
	Data     *PesertaData `json:"data,omitempty"`
	MetaData interface{}  `json:"metaData,omitempty"`
}
