import mailercloud from "../../mailercloud.app.mjs";
import utils from "../../common/utils.mjs";
export default {
  key: "mailercloud-update-contact",
  name: "Update Contact",
  description: "Update an existing contact in the user's Mailercloud account. [See the documentation](https://apidoc.mailercloud.com/docs/mailercloud-api/55b552af7970c-update-contact)",
  version: "0.0.2",
  annotations: {
    destructiveHint: true,
    openWorldHint: true,
    readOnlyHint: false,
  },
  type: "action",
  props: {
    mailercloud,
    listId: {
      propDefinition: [
        mailercloud,
        "listId",
      ],
      description: "The ID of a list to filter contacts by",
    },
    contactId: {
      propDefinition: [
        mailercloud,
        "contactId",
        (c) => ({
          listId: c.listId,
        }),
      ],
    },
    name: {
      propDefinition: [
        mailercloud,
        "name",
      ],
    },
    city: {
      propDefinition: [
        mailercloud,
        "city",
      ],
    },
    state: {
      propDefinition: [
        mailercloud,
        "state",
      ],
    },
    zip: {
      propDefinition: [
        mailercloud,
        "zip",
      ],
    },
    country: {
      propDefinition: [
        mailercloud,
        "country",
      ],
    },
    phone: {
      propDefinition: [
        mailercloud,
        "phone",
      ],
    },
    industry: {
      propDefinition: [
        mailercloud,
        "industry",
      ],
    },
    department: {
      propDefinition: [
        mailercloud,
        "department",
      ],
    },
    jobTitle: {
      propDefinition: [
        mailercloud,
        "jobTitle",
      ],
    },
    organization: {
      propDefinition: [
        mailercloud,
        "organization",
      ],
    },
  },
  async run({ $ }) {
    const response = await this.mailercloud.updateContact({
      contactId: this.contactId,
      data: utils.cleanObject({
        name: this.name,
        city: this.city,
        state: this.state,
        zip: this.zip,
        country: this.country,
        phone: this.phone,
        industry: this.industry,
        department: this.department,
        job_title: this.jobTitle,
        organization: this.organization,
      }),
      $,
    });
    $.export("$summary", `Successfully updated contact with ID: ${this.contactId}`);
    return response;
  },
};