Files
2026-02-13 15:57:28 +07:00

133 lines
3.6 KiB
Go

package transaction
import (
"encoding/json"
"time"
)
type TicketRequest struct {
KodeLayanan string `json:"kode_layanan" binding:"required"`
}
type TicketResponse struct {
Message string `json:"message"`
Data *TicketData `json:"data"`
}
type TicketData struct {
Ticket string `json:"ticket" db:"ticket"`
CheckIn bool `json:"check_in" db:"check_in"`
CheckInDate string `json:"check_in_datetime" db:"check_in_datetime"`
DateStart string `json:"datetime_start" db:"datetime_start"`
DateEnd string `json:"datetime_end" db:"datetime_end"`
}
type CreateTicketRequest struct {
IDLoket string `json:"idloket" db:"id" binding:"required"`
NamaDokter string `json:"dokter"`
IdKlinik string `json:"idklinik"`
NamaKlinik string `json:"namaklinik"`
IDpembayaran string `json:"idpembayaran"`
Statuspasien string `json:"statuspasien"`
Statuspasien2 string `json:"statuspasien2"`
Idklinikstatus string `json:"idklinikstatus"`
}
type CreateTicketResponse struct {
KodeLoket string `json:"code" db:"code"`
}
type BarcodeResponse struct {
Message string `json:"message"`
Data *BarcodeData `json:"data"`
}
type BarcodeData struct {
IdBarcode string `json:"id" db:"id"`
Barcode string `json:"barcode" db:"visit_code"`
NamaKlinik string `json:"namaklinik"`
CreatedAt time.Time `json:"-" db:"registration_time"`
Active bool `json:"active" db:"active"`
Ticket string `json:"ticket"`
Dokter string `json:"dokter"`
Shift string `json:"shift"`
DatetimeStart time.Time `json:"-"`
RemainingQuota string `json:"remaining_quota" db:"remaining_quota"`
}
type Checkin struct {
Visitcode string `json:"barcode"`
Statuspasien string `json:"statuspasien"`
Statuspasien2 string `json:"statuspasien2"`
Idklinikstatus string `json:"idklinikstatus"`
Idklinikstatus2 string `json:"idklinikstatus2"`
}
type UpdateTiket struct {
Visitcode string `json:"barcode"`
Statuspasien string `json:"statuspasien"`
Statuspasien2 string `json:"statuspasien2"`
Idklinikstatus string `json:"idklinikstatus"`
Idklinikstatus2 string `json:"idklinikstatus2"`
}
type TiketSelesai struct {
IDLoket string `json:"idloket"`
Visitcode string `json:"barcode"`
Statuspasien string `json:"statuspasien"`
Idklinikstatus string `json:"idklinikstatus"`
}
func (b BarcodeData) MarshalJSON() ([]byte, error) {
type Alias BarcodeData
// Struct untuk output JSON
output := struct {
Id string `json:"id"`
Barcode string `json:"barcode"`
NamaKlinik string `json:"namaklinik"`
TanggalBarcode string `json:"tanggalbarcode"`
WaktuBarcode string `json:"waktubarcode"`
Active bool `json:"active"`
Ticket string `json:"ticket"`
Dokter string `json:"dokter"`
Shift string `json:"shift"`
TanggalTiket string `json:"tanggaltiket"`
WaktuTiket string `json:"waktutiket"`
}{
Id: b.IdBarcode,
Barcode: b.Barcode,
NamaKlinik: b.NamaKlinik,
Active: b.Active,
Ticket: b.Ticket,
Dokter: b.Dokter,
Shift: b.Shift,
}
// Format CreatedAt
if !b.CreatedAt.IsZero() {
output.TanggalBarcode = b.CreatedAt.Format("2006-01-02")
output.WaktuBarcode = b.CreatedAt.Format("15:04:05")
}
// Format DatetimeStart
if !b.DatetimeStart.IsZero() {
output.TanggalTiket = b.DatetimeStart.Format("2006-01-02")
output.WaktuTiket = b.DatetimeStart.Format("15:04:05")
}
return json.Marshal(output)
}
type TicketID struct {
ID int `json:"id" db:"id"`
}
//type Loket struct {
// Barcode
// NoAntrean
// Klinik
// Pembayaran
// Dokter
// Fast
//}