package entities

import (
	"github.com/google/uuid"
	"gorm.io/gorm"
)

type FulfillmentOrder struct {
	BaseEntity

	// unique
	FulfillmentID   uuid.UUID
	CartID          string
	ShippingGroupID *string

	// dimensions
	Width  *float64
	Length *float64
	Height *float64
	Weight *float64

	AddressEditable       bool `gorm:"default:false"`
	DeliveryPhoneEditable bool `gorm:"default:false"`
}

type GetFulfillmentOrderParams struct {
	ID            int64
	FulfillmentID string
	CartID        string
	CartIDs       []string
}

type DeleteFulfillmentOrderParams struct {
	FulfillmentID   string
	CartID          string
	ShippingGroupID *string
}

func (fo *FulfillmentOrder) BeforeCreate(tx *gorm.DB) (err error) {
	if fo.ShippingGroupID == nil || *fo.ShippingGroupID == "" {
		emptyShippingGroupID := EmptyShippingGroupID
		fo.ShippingGroupID = &emptyShippingGroupID
	}
	return
}
