package dto

import (
	"github.com/UpmeshLTD/urus-aio/infrastructure/common"
)

type PickupPoint struct {
	ID          int64  `json:"id"`
	LastName    string `json:"lastName"`
	FirstName   string `json:"firstName"`
	Email       string `json:"email"`
	PhoneNumber string `json:"phoneNumber"`

	Address *Address `json:"address"`

	Default    bool `json:"default"`
	Deactivate bool `json:"deactivate"`
}

type GetPickupPointsRequest struct {
	Deactivate bool `form:"deactivate"`
	common.Pagination
}

type CreatePickupPointRequest struct {
	LastName    string `json:"lastName" validate:"required"`
	FirstName   string `json:"fistName" validate:"required"`
	Email       string `json:"email" validate:"required"`
	PhoneNumber string `json:"phoneNumber" validate:"required"`

	Address *CreateAddressRequest `json:"address" validate:"required"`

	Default bool `json:"default"`
}

type CreatePickupPointResponse struct {
	Data *PickupPoint `json:"data"`
}

type UpdatePickupPointRequest struct {
	ID          int64  `uri:"id" swaggerignore:"true"`
	LastName    string `json:"lastName"`
	FirstName   string `json:"fistName"`
	Email       string `json:"email"`
	PhoneNumber string `json:"phoneNumber"`

	Address *UpdatePickupPointAddressRequest `json:"address"`

	Default    bool `json:"default"`
	Deactivate bool `json:"deactivate"`
}

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

type GetPickupPointsResponse struct {
	Data  []*PickupPoint `json:"data"`
	Total int64          `json:"total"`
}

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

type GetPickupPointResponse struct {
	Data *PickupPoint `json:"data"`
}

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