package medication

import (
	"encoding/json"
	"time"
)

// TODO: Sesuaikan dengan payload internal API Medication
func MapToInternalAPI(dbData *MedicationDB, orgID string) map[string]interface{} {
	payload := map[string]interface{}{
		"status_code":     "active",
		"kfa_code":        dbData.KodeKFA.String,
		"kfa_display":     dbData.NamaKFA.String,
		"form_code":       dbData.KodeBentuk.String,
		"form_display":    dbData.NamaBentuk.String,
		"manufacturer_id": orgID, // Bisa disesuaikan menjadi dbData.ManufacturerID.String jika beda pabrik
		"batch_number":    dbData.NoBatch.String,
	}
	if dbData.TglKadaluarsa.Valid {
		payload["expiration_date"] = dbData.TglKadaluarsa.Time.Format(time.RFC3339)
	}
	return payload
}

func MapToSyncLog(idx int64, fhirID string, reqPayload interface{}, respBody []byte, status string, errMsg string) MedicationSyncLog {
	reqBytes, _ := json.MarshalIndent(reqPayload, "", "  ")
	return MedicationSyncLog{
		IdxObat:         idx,
		MedicationID:    fhirID,
		RequestPayload:  string(reqBytes),
		ResponsePayload: string(respBody),
		Status:          status,
		ErrorMessage:    errMsg,
	}
}
