package dto

type CreatePostalCodeRequest struct {
	PostalCode    string `json:"postal_code" binding:"required"`
	ProvinceID    string `json:"province_id" binding:"required"`
	CityID        string `json:"city_id" binding:"required"`
	DistrictID    string `json:"district_id" binding:"required"`
	SubdistrictID string `json:"subdistrict_id" binding:"required"`
}

type CreatePostalCodeResponse struct {
	ID            string  `json:"id"`
	PostalCode    *string `json:"postal_code"`
	ProvinceID    *string `json:"province_id"`
	CityID        *string `json:"city_id"`
	DistrictID    *string `json:"district_id"`
	SubdistrictID *string `json:"subdistrict_id"`
	MerchantID    *string `json:"merchant_id"`
}

type PostalCodeFilterAllRequest struct {
	ID            string `json:"id" form:"id"`
	PostalCode    string `json:"postal_code" form:"postal_code"`
	ProvinceID    string `json:"province_id" form:"province_id"`
	CityID        string `json:"city_id" form:"city_id"`
	DistrictID    string `json:"district_id" form:"district_id"`
	SubdistrictID string `json:"subdistrict_id" form:"subdistrict_id"`
	MerchantID    string `json:"merchant_id" form:"merchant_id"`
}

type UpdatePostalCodeRequest struct {
	PostalCode    string `json:"postal_code" binding:"required"`
	ProvinceID    string `json:"province_id" binding:"required"`
	CityID        string `json:"city_id" binding:"required"`
	DistrictID    string `json:"district_id" binding:"required"`
	SubdistrictID string `json:"subdistrict_id" binding:"required"`
}

type ImportPostalCodeResponse struct {
	JobID     string      `json:"job_id,omitempty"`
	TotalRows int         `json:"total_rows"`
	Imported  int         `json:"imported"`
	Skipped   int         `json:"skipped"`
	Logs      []ImportLog `json:"logs"`
	Errors    []string    `json:"errors"`
	IsAsync   bool        `json:"is_async"`
	Message   string      `json:"message,omitempty"`
}
