package dto

type SubLevelLocation struct {
	ID                int64  `json:"id"`
	InternationalName string `json:"internationalName"`
	LocalizedName     string `json:"localizedName"`
	ParentID          int64  `json:"parentId"`
}

type Address struct {
	ID                int64               `json:"id"`
	Address1          string              `json:"address1"`
	Address2          string              `json:"address2"`
	PostalCode        string              `json:"postalCode"`
	UnitNumber        string              `json:"unitNumber"`
	CountryID         int64               `json:"countryId"`
	SubLevelLocations []*SubLevelLocation `json:"subLevelLocations"`
	Deactivate        bool                `json:"deactivate"`
}

type CreateAddressRequest struct {
	CountryCode         string  `json:"countryCode" validate:"required"`
	Address1            string  `json:"address1" validate:"required"`
	Address2            string  `json:"address2"`
	PostalCode          string  `json:"postalCode"`
	UnitNumber          string  `json:"unitNumber"`
	SubLevelLocationIDs []int64 `json:"subLevelLocationIds"`
}

type CreateAddressResponse struct {
	Data *Address `json:"data"`
}

type UpdateAddressRequest struct {
	ID                  int64   `uri:"id"`
	Address1            string  `json:"address1" validate:"required"`
	Address2            string  `json:"address2"`
	PostalCode          string  `json:"postalCode"`
	UnitNumber          string  `json:"unitNumber"`
	SubLevelLocationIDs []int64 `json:"subLevelLocationIds"`
	Deactivate          bool    `json:"deactivate"`
}

type DeleteAddressRequest struct {
	ID int64 `uri:"id"`
}

type GetAddressRequest struct {
	ID int64 `uri:"id"`
}

type GetAddressResponse struct {
	Data *Address `json:"data"`
}
