package dto

type BasicPricingComponentRequest struct {
	CostComponentID string `json:"cost_component_id" binding:"required"`
	Value           string `json:"value"`
}

type BasicPricingComponentResponse struct {
	ID              string  `json:"id"`
	CostComponentID *string `json:"cost_component_id"`
	Value           *string `json:"value"`
}

type CreateBasicPricingRequest struct {
	ProvinceSourceID         string                         `json:"province_source_id" binding:"required"`
	CitySourceID             string                         `json:"city_source_id" binding:"required"`
	DistrictSourceID         string                         `json:"district_source_id" binding:"required"`
	SubdistrictSourceID      string                         `json:"subdistrict_source_id" binding:"required"`
	PostalCodeSourceID       string                         `json:"postal_code_source_id" binding:"required"`
	ProvinceDestinationID    string                         `json:"province_destination_id" binding:"required"`
	CityDestinationID        string                         `json:"city_destination_id" binding:"required"`
	DistrictDestinationID    string                         `json:"district_destination_id" binding:"required"`
	SubdistrictDestinationID string                         `json:"subdistrict_destination_id" binding:"required"`
	PostalCodeDestinationID  string                         `json:"postal_code_destination_id" binding:"required"`
	PackageTypeID            string                         `json:"package_type_id" binding:"required"`
	ModaID                   string                         `json:"moda_id" binding:"required"`
	LeadTime                 string                         `json:"lead_time" binding:"required"`
	MinimumWeight            float32                        `json:"minimum_weight" binding:"required"`
	Components               []BasicPricingComponentRequest `json:"components" binding:"required,dive"`
}

type CreateBasicPricingResponse struct {
	ID                       string                          `json:"id"`
	ProvinceSourceID         *string                         `json:"province_source_id"`
	CitySourceID             *string                         `json:"city_source_id"`
	DistrictSourceID         *string                         `json:"district_source_id"`
	SubdistrictSourceID      *string                         `json:"subdistrict_source_id"`
	PostalCodeSourceID       *string                         `json:"postal_code_source_id"`
	ProvinceDestinationID    *string                         `json:"province_destination_id"`
	CityDestinationID        *string                         `json:"city_destination_id"`
	DistrictDestinationID    *string                         `json:"district_destination_id"`
	SubdistrictDestinationID *string                         `json:"subdistrict_destination_id"`
	PostalCodeDestinationID  *string                         `json:"postal_code_destination_id"`
	PackageTypeID            *string                         `json:"package_type_id"`
	ModaID                   *string                         `json:"moda_id"`
	LeadTime                 *string                         `json:"lead_time"`
	MinimumWeight            *float32                        `json:"minimum_weight"`
	MerchantID               *string                         `json:"merchant_id"`
	Components               []BasicPricingComponentResponse `json:"components"`
}

type BasicPricingFilterAllRequest struct {
	ID                       string `json:"id" form:"id"`
	ProvinceSourceID         string `json:"province_source_id" form:"province_source_id"`
	CitySourceID             string `json:"city_source_id" form:"city_source_id"`
	DistrictSourceID         string `json:"district_source_id" form:"district_source_id"`
	SubdistrictSourceID      string `json:"subdistrict_source_id" form:"subdistrict_source_id"`
	PostalCodeSourceID       string `json:"postal_code_source_id" form:"postal_code_source_id"`
	ProvinceDestinationID    string `json:"province_destination_id" form:"province_destination_id"`
	CityDestinationID        string `json:"city_destination_id" form:"city_destination_id"`
	DistrictDestinationID    string `json:"district_destination_id" form:"district_destination_id"`
	SubdistrictDestinationID string `json:"subdistrict_destination_id" form:"subdistrict_destination_id"`
	PostalCodeDestinationID  string `json:"postal_code_destination_id" form:"postal_code_destination_id"`
	PackageTypeID            string `json:"package_type_id" form:"package_type_id"`
	ModaID                   string `json:"moda_id" form:"moda_id"`
	MerchantID               string `json:"merchant_id" form:"merchant_id"`
}

type BasicPricingMatchRequest struct {
	ID string `json:"id" form:"id" binding:"required"`
}
