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"`
	TglCetakKartu string `json:"tglCetakKartu"`
	TglTAT        string `json:"tglTAT"`
	TglTMT        string `json:"tglTMT"`
	StatusPeserta struct {
		Kode       string `json:"kode"`
		Keterangan string `json:"keterangan"`
	} `json:"statusPeserta"`
	ProvUmum struct {
		KdProvider string `json:"kdProvider"`
		NmProvider string `json:"nmProvider"`
	} `json:"provUmum"`
	JenisPeserta struct {
		Kode       string `json:"kode"`
		Keterangan string `json:"keterangan"`
	} `json:"jenisPeserta"`
	HakKelas struct {
		Kode       string `json:"kode"`
		Keterangan string `json:"keterangan"`
	} `json:"hakKelas"`
	Umur struct {
		UmurSekarang      string `json:"umurSekarang"`
		UmurSaatPelayanan string `json:"umurSaatPelayanan"`
	} `json:"umur"`
	Informasi struct {
		Dinsos      interface{} `json:"dinsos"`
		ProlanisPRB string      `json:"prolanisPRB"`
		NoSKTM      interface{} `json:"noSKTM"`
		ESEP        interface{} `json:"eSEP"`
	} `json:"informasi"`
	Cob struct {
		NoAsuransi interface{} `json:"noAsuransi"`
		NmAsuransi interface{} `json:"nmAsuransi"`
		TglTMT     interface{} `json:"tglTMT"`
		TglTAT     interface{} `json:"tglTAT"`
	} `json:"cob"`
	MR struct {
		NoMR      string `json:"noMR"`
		NoTelepon string `json:"noTelepon"`
	} `json:"mr,omitempty"`
}

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