actions/add-customer/add-customer.mjs
import { ConfigurationError } from "@pipedream/platform"; import app from "../../mews.app.mjs"; import utils from "../../common/utils.mjs"; export default { name: "Add Customer", description: "Adds a new customer to the system. [See the documentation](https://mews-systems.gitbook.io/connector-api/operations/customers#add-customer)", key: "mews-add-customer", version: "0.0.2", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { app, overwriteExisting: { type: "boolean", label: "Overwrite Existing", description: "Whether an existing customer should be overwritten in case of duplicity. This applies only to basic personal information", }, lastName: { optional: false, propDefinition: [ app, "lastName", ], }, firstName: { propDefinition: [ app, "firstName", ], }, secondLastName: { propDefinition: [ app, "secondLastName", ], }, title: { propDefinition: [ app, "title", ], }, nationalityCode: { propDefinition: [ app, "countryCode", ], label: "Nationality Code", description: "ISO 3166-1 code of the Country", }, sex: { propDefinition: [ app, "sex", ], }, birthDate: { propDefinition: [ app, "birthDate", ], }, birthPlace: { propDefinition: [ app, "birthPlace", ], }, occupation: { propDefinition: [ app, "occupation", ], }, email: { propDefinition: [ app, "email", ], }, phone: { propDefinition: [ app, "phone", ], }, loyaltyCode: { propDefinition: [ app, "loyaltyCode", ], }, notes: { description: "Internal notes about the customer", propDefinition: [ app, "notes", ], optional: true, }, carRegistrationNumber: { propDefinition: [ app, "carRegistrationNumber", ], }, dietaryRequirements: { propDefinition: [ app, "dietaryRequirements", ], }, taxIdentificationNumber: { propDefinition: [ app, "taxIdentificationNumber", ], }, companyId: { propDefinition: [ app, "companyId", ], optional: true, }, address: { propDefinition: [ app, "address", ], }, classifications: { propDefinition: [ app, "classifications", ], }, options: { propDefinition: [ app, "options", ], }, italianDestinationCode: { propDefinition: [ app, "italianDestinationCode", ], }, italianFiscalCode: { propDefinition: [ app, "italianFiscalCode", ], }, }, async run({ $ }) { const { app, title, firstName, lastName, secondLastName, nationalityCode, sex, birthDate, birthPlace, occupation, email, phone, loyaltyCode, notes, carRegistrationNumber, dietaryRequirements, taxIdentificationNumber, companyId, address, classifications, options, overwriteExisting, italianDestinationCode, italianFiscalCode, } = this; const parsedClassifications = classifications ? utils.parseArray(classifications) : undefined; if (parsedClassifications && !Array.isArray(parsedClassifications)) { throw new ConfigurationError("**Classifications** must be an array when provided"); } const parsedAddress = address ? utils.parseJson(address) : undefined; if (parsedAddress && typeof parsedAddress !== "object") { throw new ConfigurationError("**Address** must be a valid address object"); } const response = await app.customersAdd({ $, data: { LastName: lastName, FirstName: firstName, SecondLastName: secondLastName, Title: title, NationalityCode: nationalityCode, Sex: sex, BirthDate: birthDate, BirthPlace: birthPlace, Occupation: occupation, Email: email, Phone: phone, LoyaltyCode: loyaltyCode, Notes: notes, CarRegistrationNumber: carRegistrationNumber, DietaryRequirements: dietaryRequirements, TaxIdentificationNumber: taxIdentificationNumber, CompanyId: companyId, Address: parsedAddress, Classifications: parsedClassifications, Options: options, OverwriteExisting: overwriteExisting, ItalianDestinationCode: italianDestinationCode, ItalianFiscalCode: italianFiscalCode, }, }); $.export("$summary", `Successfully added customer${response.Email ? ` with email ${response.Email}` : ""}`); return response; }, };