package models

type CreateContactReq struct {
	Name               string         `json:"name"`                // Название контакта
	FirstName          string         `json:"first_name"`          // Имя контакта
	LastName           string         `json:"last_name"`           // Фамилия контакта
	ResponsibleUserID  int32          `json:"responsible_user_id"` // ID пользователя, ответственного за контакт
	CreatedBy          int64          `json:"created_by"`          // ID пользователя, создавший контакт
	UpdatedBy          int64          `json:"updated_by"`          // ID пользователя, изменивший контакт
	CreatedAt          int64          `json:"created_at"`          // Дата создания контакта, передается в Unix Timestamp
	UpdatedAt          int64          `json:"updated_at"`          // Дата изменения контакта, передается в Unix Timestamp
	CustomFieldsValues []FieldsValues `json:"custom_fields_values"`
	TagsToAdd          []Tag          `json:"tags_to_add"`
	Embed              Embedd         `json:"_embedded"`
	RequestID          string         `json:"request_id"`
}

type ContactResponse struct {
	Links struct {
		Self struct {
			Href string `json:"href"`
		} `json:"self"`
	} `json:"_links"`
	Embedded struct {
		Contacts []struct {
			ID        int32  `json:"id"`
			RequestID string `json:"request_id"`
			Links     struct {
				Self struct {
					Href string `json:"href"`
				} `json:"self"`
			} `json:"_links"`
		} `json:"contacts"`
	} `json:"_embedded"`
}

type LinkedContactReq struct {
	EntityID     int32  `json:"entity_id"`      // ID главной сущности
	ToEntityID   int32  `json:"to_entity_id"`   // ID связанной сущности
	ToEntityType string `json:"to_entity_type"` // Тип связанной сущности (leads, contacts, companies, customers, catalog_elements)
	Metadata     struct {
		//CatalogID int  `json:"catalog_id"` // ID каталога
		//Quantity  int  `json:"quantity"`   // Количество прикрепленных элементов каталогов
		IsMain bool `json:"is_main"` // Является ли контакт главным
		//UpdatedBy int  `json:"updated_by"` // ID пользователя, от имени которого осуществляется прикрепление
		//PriceID   int  `json:"price_id"`   // ID поля типа Цена, которое будет установлено для привязанного элемента в контексте сущности
	} `json:"metadata"`
}

type LinkedContactResponse struct {
	TotalItems int `json:"_total_items"`
	Links      struct {
		Self struct {
			Href string `json:"href"`
		} `json:"self"`
	} `json:"_links"`
	Embedded struct {
		Links []struct {
			EntityID     int    `json:"entity_id"`
			EntityType   string `json:"entity_type"`
			ToEntityID   int    `json:"to_entity_id"`
			ToEntityType string `json:"to_entity_type"`
			Metadata     struct {
				Quantity  int  `json:"quantity"`
				CatalogID int  `json:"catalog_id"`
				IsMain    bool `json:"is_main"`
				UpdatedBy int  `json:"updated_by"`
				PriceID   int  `json:"price_id"`
			} `json:"metadata"`
		} `json:"links"`
	} `json:"_embedded"`
}
