package models

import "time"

type OrderParkir struct {
	Id         uint        `json:"id"`
	TarifId    int         `json:"category_id"`
	Tarif      TarifParkir `gorm:"constraint:OnDelete:CASCADE;foreignKey:TarifId"`
	PlatNomor  string      `json:"plat_nomor"`
	IsBulk     int         `json:"is_bulk"`
	Quantity   int         `json:"qty"`
	PriceTotal int         `json:"price_total"`
	NamaAdmin  string      `json:"nama_admin"`
	CreatedAt  time.Time   `json:"created_at"`
	UpdatedAt  time.Time   `json:"updated_at"`
}

type ResponseOrderParkir struct {
	Id         uint      `json:"id"`
	Type       string    `json:"type"`
	Price      int       `json:"price"`
	PlatNomor  string    `json:"plat_nomor"`
	IsBulk     int       `json:"is_bulk"`
	Quantity   int       `json:"qty"`
	PriceTotal int       `json:"price_total"`
	NamaAdmin  string    `json:"nama_admin"`
	CreatedAt  time.Time `json:"created_at"`
	UpdatedAt  time.Time `json:"updated_at"`
}

func (Obj *OrderParkir) ToResponse() *ResponseOrderParkir {
	return &ResponseOrderParkir{
		Id:         Obj.Id,
		Type:       Obj.Tarif.Name,
		Price:      Obj.Tarif.Price,
		PlatNomor:  Obj.PlatNomor,
		Quantity:   Obj.Quantity,
		PriceTotal: Obj.PriceTotal,
		NamaAdmin:  Obj.NamaAdmin,
		CreatedAt:  Obj.CreatedAt,
		UpdatedAt:  Obj.UpdatedAt,
	}
}

func OrderParkirToResponses(datas []OrderParkir) []ResponseOrderParkir {
	var responses []ResponseOrderParkir
	for _, data := range datas {
		responses = append(responses, *data.ToResponse())
	}
	return responses
}
