package dto

import "time"

type LocationCreateRequest struct {
	Label         string  `json:"label"` // Home, Work, etc.
	Receivername  string  `json:"receivername"`
	Receiverphone string  `json:"receiverphone"`
	Address       string  `json:"address"`
	Landmark      string  `json:"landmark"`
	City          string  `json:"city"`
	State         string  `json:"state"`
	Pincode       string  `json:"pincode"`
	Latitude      float64 `json:"latitude"`
	Longitude     float64 `json:"longitude"`
	Isdefault     bool    `json:"isdefault"`
}

type ParcelRequest struct {
	Itemcategory         string  `json:"itemcategory"`
	Itemdescription      string  `json:"itemdescription"`
	Declaredvalue        float64 `json:"declaredvalue"`
	Weight               float64 `json:"weight"`        // optional — miler weighs at pickup
	Length               float64 `json:"length"`        // optional
	Width                float64 `json:"width"`         // optional
	Height               float64 `json:"height"`        // optional
	Isfragile            bool    `json:"isfragile"`
	Needsinsurance       bool    `json:"needsinsurance"`
	Requireslargevehicle bool    `json:"requireslargevehicle"`
}

type PickupBookingRequest struct {
	Pickuplocationid    *int            `json:"pickuplocationid"`
	Pickupaddress       string          `json:"pickupaddress"`   // required
	Pickuppincode       string          `json:"pickuppincode"`   // required
	Pickuplatitude      float64         `json:"pickuplatitude"`
	Pickuplongitude     float64         `json:"pickuplongitude"`
	Deliveryaddress     string          `json:"deliveryaddress"` // optional — can be filled later
	Deliverypincode     string          `json:"deliverypincode"` // optional
	Deliverylatitude    float64         `json:"deliverylatitude"`
	Deliverylongitude   float64         `json:"deliverylongitude"`
	Preferredpickupfrom *time.Time      `json:"preferredpickupfrom"`
	Preferredpickupto   *time.Time      `json:"preferredpickupto"`
	ServiceOption       string          `json:"serviceoption"` // Normal, Fast, Superfast
	Parcels             []ParcelRequest `json:"parcels"`
}

type PaymentRequest struct {
	Amount         float64 `json:"amount"`
	Paymentmode    string  `json:"paymentmode"` // Cash, UPI, Card, Wallet
	Transactionref string  `json:"transactionref"`
}

type MilerLocationUpdateRequest struct {
	Latitude  float64 `json:"latitude"`
	Longitude float64 `json:"longitude"`
	Pincode   string  `json:"pincode"`
}

type MilerAvailabilityRequest struct {
	Status string `json:"status"` // Offline, Available, Break, etc.
}

type PricingQuoteRequest struct {
	Pickuppincode    string          `json:"pickuppincode"`
	Deliverypincode  string          `json:"deliverypincode"`
	Pickuplatitude   float64         `json:"pickuplatitude"`
	Pickuplongitude  float64         `json:"pickuplongitude"`
	Deliverylatitude float64         `json:"deliverylatitude"`
	Deliverylongitude float64         `json:"deliverylongitude"`
	Parcels          []ParcelRequest `json:"parcels"`
}
