Repository navigation
feat(booknetic): add the Booknetic integration - #239
Open
RishadAlam wants to merge 11 commits into
Open
RishadAlam wants to merge 11 commits into
RishadAlam wants to merge 11 commits into
Conversation
Controller runs the flow, Helper serves the dropdown lists through one refresh_booknetic_options route, and Service fires one Pro filter per action and logs every result.
Required options render as selects, optional options sit under Utilities, and record IDs stay in the field map so flows can map them.
SetEditIntegComponents only loads the custom form trigger fields for entities in customFormIntegrations.
Booknetic throws on limits and invalid slots. The flow now logs the message instead of failing the request that fired the trigger. Option lists stop at 500 rows.
Create Appointment and Create In-App Notification accept a mapped ID in place of the list choice, and each action shows a short note on formats and limits. Option lists load on demand and are no longer saved in the flow. Parallel list loads share one loader.
Core Booknetic gateways return no link, so the action always failed. Only paid add-on gateways create links.
The select reads its value only on mount, so it now remounts after its options load. Field definitions come from staticData instead of the copy saved in the flow. Utilities show the chosen value under each option.
✅ WordPress Plugin Check Report
📊 ReportAll checks passed! No errors or warnings found. 🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check |
Update Payment asked for a JSON object of every price key, which a flow cannot build. It now takes a Service Price number. Also removes explanatory comments from the Booknetic files.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds the Booknetic integration to the free plugin. This covers the action config UI, the free-side action backend that fires one Pro filter for each action, and the Booknetic entry in the trigger lists. There are 40 Pro write actions for appointments, payments, customers, staff, locations, services, service extras, categories and in-app notifications, plus 14 Pro triggers.
Pro side: https://github.com/bit-apps-pro/bit-integrations-pro/pull/160
Motivation & Context
This ports the Booknetic integration from Bit Flows (Bit-Pi) to Bit Integrations. The port drops the get/list actions and any action or trigger that core Booknetic cannot run:
Main still resolves only
{Name}ControllerinFlow::isActionExists(). For that reason the action usesBookneticController(execute only),BookneticHelper(routes) andBookneticService(switch +LogHandler::save). Rename the Controller toBookneticActionafter the action restructure merges.Related Links: (if applicable)
Type of Change
Key Changes
Backend
backend/Actions/Booknetic/:BookneticController::execute().BookneticService: oneswitchcase per action. Each case firesHooks::apply(Config::withPrefix('booknetic_<action>'), …)and passes only the arguments that action's Pro handler reads. Every path is logged.BookneticHelper::refreshOptions(): serves every dropdown list through onerefresh_booknetic_optionsroute. It takes an allow-listedtype, sanitized withsanitize_key, and caps each list at 500 rows.try/catch (Throwable)around the dispatch. Booknetic throws on plan limits and invalid slots, and the flow now logs that message instead of failing the request that fired the trigger.BooknetictoAllTriggersName.phpas a Pro trigger.Frontend
AllIntegrations/Booknetic/.staticData.jsholds all actions, field maps, required selects, Utilities and per-action notes in one place.flow_details.staticDatainstead of the copy saved in the flow.i < requiredFldsand.labelare now.lengthand.key), in the Booknetic copy only.NewInteg,EditInteg,IntegInfo,SelectAction,tutorialLinksandcustomFormIntegrations. The last one lets flows with a Booknetic trigger open in edit mode.booknetic.webplogo.Testing
All tests ran end to end in the browser on a local site with Booknetic 5.2.2:
eslint --max-warnings=0,prettier --check,php-cs-fixer(repo config),php -landvite buildall pass.Checklist
Changelog
🤖 Generated with Claude Code