From bf4fe00e209861911637b5975eb107039c58e2ea Mon Sep 17 00:00:00 2001 From: Lucas Caresia Date: Thu, 17 Oct 2024 12:42:37 -0300 Subject: [PATCH 1/2] Added actions --- .../create-employee/create-employee.mjs | 59 ++++++++++ .../delete-employee/delete-employee.mjs | 29 +++++ .../update-employee/update-employee.mjs | 66 +++++++++++ components/onbee_app/onbee_app.app.mjs | 103 +++++++++++++++++- components/onbee_app/package.json | 7 +- pnpm-lock.yaml | 5 +- 6 files changed, 261 insertions(+), 8 deletions(-) create mode 100644 components/onbee_app/actions/create-employee/create-employee.mjs create mode 100644 components/onbee_app/actions/delete-employee/delete-employee.mjs create mode 100644 components/onbee_app/actions/update-employee/update-employee.mjs diff --git a/components/onbee_app/actions/create-employee/create-employee.mjs b/components/onbee_app/actions/create-employee/create-employee.mjs new file mode 100644 index 0000000000000..e2c9f269661c4 --- /dev/null +++ b/components/onbee_app/actions/create-employee/create-employee.mjs @@ -0,0 +1,59 @@ +import app from "../../onbee_app.app.mjs"; + +export default { + key: "onbee_app-create-employee", + name: "Create Employee", + description: "Adds an employee to the system. [See the documentation](https://docs.onboardee.io/api/#tag/Employees/paths/~1employees~1add/post)", + version: "0.0.1", + type: "action", + props: { + app, + firstname: { + propDefinition: [ + app, + "firstname", + ], + }, + surname: { + propDefinition: [ + app, + "surname", + ], + }, + privateEmail: { + propDefinition: [ + app, + "privateEmail", + ], + }, + workEmail: { + propDefinition: [ + app, + "workEmail", + ], + }, + dateOfBirth: { + propDefinition: [ + app, + "dateOfBirth", + ], + }, + }, + + async run({ $ }) { + const response = await this.app.createEmployee({ + $, + data: { + firstname: this.firstname, + surname: this.surname, + privateEmail: this.privateEmail, + workEmail: this.workEmail, + dateOfBirth: this.dateOfBirth, + }, + }); + + $.export("$summary", `Successfully created Employee with ID '${response.payload._id}'`); + + return response; + }, +}; diff --git a/components/onbee_app/actions/delete-employee/delete-employee.mjs b/components/onbee_app/actions/delete-employee/delete-employee.mjs new file mode 100644 index 0000000000000..d9fe18aaf377c --- /dev/null +++ b/components/onbee_app/actions/delete-employee/delete-employee.mjs @@ -0,0 +1,29 @@ +import app from "../../onbee_app.app.mjs"; + +export default { + key: "onbee_app-delete-employee", + name: "Delete Employee", + description: "Delete an employee with the specified ID. [See the documentation](https://docs.onboardee.io/api/#tag/Employees/paths/~1employees~1edit~1{id}/post)", + version: "0.0.1", + type: "action", + props: { + app, + employeeId: { + propDefinition: [ + app, + "employeeId", + ], + }, + }, + + async run({ $ }) { + const response = await this.app.deleteEmployee({ + $, + employeeId: this.employeeId, + }); + + $.export("$summary", `Successfully deleted Employee with ID '${this.employeeId}'`); + + return response; + }, +}; diff --git a/components/onbee_app/actions/update-employee/update-employee.mjs b/components/onbee_app/actions/update-employee/update-employee.mjs new file mode 100644 index 0000000000000..6465134947dd9 --- /dev/null +++ b/components/onbee_app/actions/update-employee/update-employee.mjs @@ -0,0 +1,66 @@ +import app from "../../onbee_app.app.mjs"; + +export default { + key: "onbee_app-update-employee", + name: "Update Employee", + description: "Update an employee with the specified ID. [See the documentation](https://docs.onboardee.io/api/#tag/Employees/paths/~1employees~1edit~1{id}/post)", + version: "0.0.1", + type: "action", + props: { + app, + employeeId: { + propDefinition: [ + app, + "employeeId", + ], + }, + firstname: { + propDefinition: [ + app, + "firstname", + ], + }, + surname: { + propDefinition: [ + app, + "surname", + ], + }, + privateEmail: { + propDefinition: [ + app, + "privateEmail", + ], + }, + workEmail: { + propDefinition: [ + app, + "workEmail", + ], + }, + dateOfBirth: { + propDefinition: [ + app, + "dateOfBirth", + ], + }, + }, + + async run({ $ }) { + const response = await this.app.updateEmployee({ + $, + employeeId: this.employeeId, + data: { + firstname: this.firstname, + surname: this.surname, + privateEmail: this.privateEmail, + workEmail: this.workEmail, + dateOfBirth: this.dateOfBirth, + }, + }); + + $.export("$summary", `Successfully updated Employee with ID '${response.payload._id}'`); + + return response; + }, +}; diff --git a/components/onbee_app/onbee_app.app.mjs b/components/onbee_app/onbee_app.app.mjs index e8516dc8589d4..4f58d0fc2204e 100644 --- a/components/onbee_app/onbee_app.app.mjs +++ b/components/onbee_app/onbee_app.app.mjs @@ -1,11 +1,104 @@ +import { axios } from "@pipedream/platform"; + export default { type: "app", app: "onbee_app", - propDefinitions: {}, + propDefinitions: { + employeeId: { + type: "string", + label: "Employee ID", + description: "ID of the Employee", + async options() { + const response = await this.getEmployees(); + + const employeeIds = response.payload; + + return employeeIds.map(({ + _id, firstname, surname, + }) => ({ + value: _id, + label: `${firstname} ${surname}`, + })); + }, + }, + firstname: { + type: "string", + label: "First Name", + description: "First name of the employee", + }, + surname: { + type: "string", + label: "Last Name", + description: "Last name of the employee", + }, + privateEmail: { + type: "string", + label: "Private Email", + description: "Private email of the employee", + optional: true, + }, + workEmail: { + type: "string", + label: "Work Email", + description: "Work email of the employee", + optional: true, + }, + dateOfBirth: { + type: "string", + label: "Date of Birth", + description: "Date of birth of the employee, i.e.: `1997-12-03`", + optional: true, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + _baseUrl() { + return `https://${this.$auth.workspace_name}.onbee.app/api`; + }, + async _makeRequest(opts = {}) { + const { + $ = this, + path, + headers, + ...otherOpts + } = opts; + return axios($, { + ...otherOpts, + url: this._baseUrl() + path, + headers: { + ...headers, + Authorization: `Bearer ${this.$auth.api_token}`, + }, + }); + }, + async createEmployee(args = {}) { + return this._makeRequest({ + path: "/employees/add", + method: "post", + ...args, + }); + }, + async updateEmployee({ + employeeId, ...args + }) { + return this._makeRequest({ + path: `/employees/edit/${employeeId}`, + method: "post", + ...args, + }); + }, + async deleteEmployee({ + employeeId, ...args + }) { + return this._makeRequest({ + path: `/employee-delete/${employeeId}`, + ...args, + }); + }, + async getEmployees(args = {}) { + return this._makeRequest({ + path: "/employee-list/", + ...args, + }); }, }, -}; \ No newline at end of file +}; diff --git a/components/onbee_app/package.json b/components/onbee_app/package.json index 4d831d0540210..3563b8bb603bc 100644 --- a/components/onbee_app/package.json +++ b/components/onbee_app/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/onbee_app", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream Onbee.app Components", "main": "onbee_app.app.mjs", "keywords": [ @@ -11,5 +11,8 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.0.3" } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de0e792c04bf2..bbab060a94e6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6739,7 +6739,10 @@ importers: uuid: 9.0.1 components/onbee_app: - specifiers: {} + specifiers: + '@pipedream/platform': ^3.0.3 + dependencies: + '@pipedream/platform': 3.0.3 components/oncehub: specifiers: From a0c0a8b5b7caa8c052bc2eed0edc83f223d85d76 Mon Sep 17 00:00:00 2001 From: Lucas Caresia Date: Tue, 22 Oct 2024 12:38:10 -0300 Subject: [PATCH 2/2] Update components/onbee_app/actions/update-employee/update-employee.mjs Co-authored-by: michelle0927 --- .../onbee_app/actions/update-employee/update-employee.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/onbee_app/actions/update-employee/update-employee.mjs b/components/onbee_app/actions/update-employee/update-employee.mjs index 6465134947dd9..8aef737fdc8c2 100644 --- a/components/onbee_app/actions/update-employee/update-employee.mjs +++ b/components/onbee_app/actions/update-employee/update-employee.mjs @@ -19,12 +19,14 @@ export default { app, "firstname", ], + optional: true, }, surname: { propDefinition: [ app, "surname", ], + optional: true, }, privateEmail: { propDefinition: [