import zendeskSell from "../../zendesk_sell.app.mjs";
export default {
  key: "zendesk_sell-create-task",
  name: "Create Task",
  description: "Creates a new task. [See the documentation](https://developer.zendesk.com/api-reference/sales-crm/resources/tasks/#create-a-task).",
  type: "action",
  version: "0.0.2",
  annotations: {
    destructiveHint: false,
    openWorldHint: true,
    readOnlyHint: false,
  },
  props: {
    zendeskSell,
    resourceType: {
      type: "string",
      label: "Resource Type",
      description: "Name of the resource type the task is attached to",
      options: [
        "contact",
        "lead",
        "deal",
      ],
      reloadProps: true,
    },
    contactId: {
      propDefinition: [
        zendeskSell,
        "contactId",
      ],
      hidden: true,
    },
    leadId: {
      propDefinition: [
        zendeskSell,
        "leadId",
      ],
      hidden: true,
    },
    dealId: {
      propDefinition: [
        zendeskSell,
        "dealId",
      ],
      hidden: true,
    },
    content: {
      type: "string",
      label: "Content",
      description: "Content of the task",
    },
    completed: {
      type: "boolean",
      label: "Completed",
      description: "Indicator of whether the task is completed or not",
      optional: true,
    },
    dueDate: {
      type: "string",
      label: "Due Date",
      description: "Date and time the task is due in UTC (ISO8601 format)",
      optional: true,
    },
  },
  async additionalProps(props) {
    props.contactId.hidden = this.resourceType !== "contact";
    props.leadId.hidden = this.resourceType !== "lead";
    props.dealId.hidden = this.resourceType !== "deal";
    return {};
  },
  async run({ $ }) {
    const response = await this.zendeskSell.createTask({
      $,
      data: {
        data: {
          resource_type: this.resourceType,
          resource_id: this.resourceType === "contact"
            ? this.contactId
            : this.resourceType === "lead"
              ? this.leadId
              : this.dealId,
          content: this.content,
          completed: this.completed,
          due_date: this.dueDate,
        },
      },
    });
    return response;
  },
};