package zendesk

import (
	"encoding/json"
)

type Organization struct {
	ID         uint64 `json:"id,omitempty"`
	Name       string `json:"name"`
	ExternalID string `json:"external_id"`
}

func (c *Client) CreateOrganization(org Organization) (Organization, error) {
	var payload, result struct {
		Organization Organization `json:"organization"`
	}
	payload.Organization = org

	body, err := c.post("/organizations.json", payload)
	if err != nil {
		return Organization{}, err
	}

	err = json.Unmarshal(body, &result)
	if err != nil {
		return Organization{}, err
	}

	return result.Organization, nil
}

func (c *Client) CreateOrUpdateOrganization(org Organization) (Organization, error) {
	var payload, result struct {
		Organization Organization `json:"organization"`
	}
	payload.Organization = org

	body, err := c.post("/organizations/create_or_update.json", payload)
	if err != nil {
		return Organization{}, err
	}

	err = json.Unmarshal(body, &result)
	if err != nil {
		return Organization{}, err
	}

	return result.Organization, nil
}
