* charge free users for SMS to CA an US
* allow custom template for free users
* fix backend + some UI fixes
* make text editable
* rename back to needsTeamsUpgrade
* add twilio webhook handler tests
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* don't schedule past reminders
* add test
* fix dates in tests
* add early return
* fix sms test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Add credits section to billing
* create seperate router for credits
* add stripe checkout session
* schema changes + code improvements
* rename to creditBalance
* custom quantify input with error message
* add checkout session completed webhook endpoint
* fix typo
* UI fixes
* add payCredits handler
* add error toast message
* allow scheduling sms up as close to 15 minutes in the future
* schedule at most 2 hours in advance
* webhook to pay for sent sms
* continued work on twilio callback
* code clean up
* further implementation for credit handling
* add migration
* object as param for scheduleSMS
* object as param for sendSMS
* fix TrpcSessionUser imports
* fix imports
* add db changes
* add cron job for price setting
* twilio status callback to create expense log
* remove unused code
* set up low credit balance email
* fixes for buying credits
* fixes in api/twilio/webhook
* add test to save credits to credits balance
* fix typos
* add new helper function chargeCredits
* expand twilioProvider
* fix type errors
* adjust tests
* type errors
* clean up
* clean up
* fix subscription active check
* remove some user/org related code
* more changes to remove user/org support
* send emails seperatly to admins
* fixes for team billing page
* fix stripe success url
* fixes to creating expense log
* email imrovements and more
* get monthly team price from stripe
* fix import
* fix monthly credits calculation
* finsih low credit balance warning email
* credit balance limit reached email
* create CreditService
* cancel SMS and send as email instead
* add messageDispatcher
* fix type error
* fix type error
* fix type error
* fix import
* fix unit test
* clean up twilioProvider
* clean up chckSmsPrices/route
* add missing translations
* add skeleton loader
* add admin check to get handler
* code clean up + fixes
* improve scheduling with fallback
* fix type error
* add bookingUid to handleSendingSMS
* add unit tests for creditService
* add more tests to credit-service.test.ts
* add test for cancelScheduledMessagesAndScheduleEmails
* fix test and type error
* add back resolve
* fix empty resolve
* adjust limitReachedAt logic
* address mrge comment on styling
* add getAdminMembership to repository
* twilio/webhook clean up (feedback)
* feedback - clean up
* remove todo comment
* clean up twilio/webhook
* code clean up
* add use client
* add createOneTimeCheckout to stripe service
* refactor repository pattern
* small fixes + clean up
* fix type error
* add missing import
* fix hasAvailableCredits for user
* force-dynamic
* rename credits to creditBalance
* fix stripe import
* remove not needed code
* fix e2e tests
* improve low balance warning email
* dynamic-import CreditService
* index.ts
* fix e2e tests
* remove dynamic import CreditService
* Revert "remove dynamic import CreditService"
This reverts commit e272978a7ff3fc5a04139e656c9f8d2c84a40dda.
* no need to dynamic-import credit service
* Revert "no need to dynamic-import credit service"
This reverts commit ba5ae488d08979a65fb47b5d0722cda9f45d6ea0.
* only select id in getAdminMembership
* revert billing/package.json
* fix type checks
* fix type checks
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: hbjORbj <sldisek783@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Add translations in respective files
* implement multilingual support for email templates
* fix: indentation in common.js & typos in common.js and update.handler.ts
* Add akismet package to tasker
* Create scanWorkflowBody task
* Schedule workflow body scan
* Add AKISMET_API_KEY .env
* Auto lock user if spam is detected
* Uncommit key
* Add safe param to workflow step
* Migration for safe field
* Do not process workflow steps is `safe` is false
* Update migration to set previous records to true
* Address comments
* Refactor `scheduleWorkflowNotifications` to accept an object
* If new steps or editing old ones send to tasker
* Call `scheduleWorkflowNotifications` in task
* Fix `IS_SELF_HOSTED`
* Remove unused function
* Make `safe` optional in schema
* Type fix
* Revert "Make `safe` optional in schema"
This reverts commit d0964702affa87c35562300301473d25635c565b.
* Revert "Type fix"
This reverts commit d9a031303269a2994ae46f576ab2a3d31e4d977b.
* Type fixes
* Type fixes
* Address comments
* Fix tests
* Add tests
* Update tests
* Typo fix
* Update `safe` to `verifiedAt`
* feat: Compare workflow reminder bodies to default template (#19060)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* refactor: `emailReminderTemplate` to accept object as param (#19288)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* Refactor `scheduleEmailReminders`
* Refactor `create.handler` for new workflows
* Refactor `emailReminderManager`
* Refactor `getEmailTemplateText`
* Fix typo
* Type fix - whatsapp plain text template imports
* Type fix - no template found
* Type fix - add `isBrandingDisabled` to `emailReminderTemplate`
* Add workflow and user to prisma mock
* Fix imports for akismet dependencies
* Record user lock reason
* Undo linting changes
* Fix tests
* New workflow, at verify created step
* Handle if `SCANNING_WORKFLOW_STEPS` is toggled
* Move `verifiedAt` checks to specific schedule functions
- `scheduleWhatsappReminder`
- `scheduleEmailReminder`
- `scheduleSMSReminder`
* Update logic
* Do not fallback verifiedAt
* Add comment to next.config.js
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
Closes#19219
* Remove title and subtitle from ICS calendar description
* Remove unused method
* Use generateIcsString function for workflows
* Type fixes
* Refactor typing of CalEventParser
* WIP
* Type fixes
* Fix test
* Fix tests
* type fixes
* Remove duplicate code before `scheduleEmailReminder`
* add org to create workflow button
* add save button for testing in dev mode
* add select all to multi select dropdown
* fix select all
* pass isOrg to WorkflowDetailsPage
* add checkbox to apply to all including future
* fix count text on select
* WIP schema
* shows teams in dropdown
* add team option to UI
* [WIP] refactor for update handler
* filter out "all" from activeOn
* fix type error
* create more helper functions
* create reusable function for scheduling all booking reminders
* finish update workflows for orgs (without testing)
* fix isAuthorized check for orgs
* fix getting newActiveOn
* move all helper functions to util file
* more code clean up
* fix deleting reminders for org workflows
* fix adding and editing steps
* update form data when workflow is saved
* code clean up
* fixing creating/deleting reminders when user is member of several teams
* fix setting activeOn for teams in useffect
* add on delete cascade
* make multiSelectSchenbox searchable
* set activeOn correctly when checkbox true
* WIP
* fix type errors in MultiSelectCheckboxes
* implemented scheduling org-wide workfow notifications (not yet tested)
* fix type errors
* type error
* add missing changes from merge conflict
* remote not needed include statement
* fix type errors
* code clean up + some todo comments
* support org workflows for cancelled workflows
* delete reminders from removed members
* remove reminders if isActiveOnAll is turned off
* fix unti test and type error
* code clean up
* create basis for testing to book org team event
* create org workflow with active team
* fix getting active org workflows on team + test setup
* fix creating workflow step for tests
* fix first org test
* add test for user event type with org workflow active
* use deleteAllWorkflowReminders everywhere
* add test for deleteRemindersFromRemovedActiveOn
* fix type errors
* make all tests pass
* fix type error
* fix getSchedule test
* code clean up
* add missing import
* fix type error
* fix tests
* code clean up
* fix imports
* update reminders when trigger was changed
* check for teamId before userId in reminderScheduler
* move getOrgIdFromMemberOrTeamId to different folder
* code clean up
* fix tests
* test setup for scheduleBookingReminders
* fix typo
* add tests for scheduleBookingReminders
* fix prisma default import
* fix workflowStep type
* add scheduleBookingReminders test for sms
* return dummy sid for scheduleSMS testMode
* clean up + fixes
* add lost changes from merge
* get teamId and userId from incoming evt object
* removing not needed select
* add org support for scheduleMandatory email reminder
* add other teams to dropdown
* move getAllWorkflows to seperate file and call it in parent function
* include org wide workflows in createNewSeat
* some fixes + code clean up
* add new team to select text count when including future teams is checked
* fix upsert and remove sms reminder field
* correctly update activeOn if 'including future ...' is enabled
* list active Org workflows in event workflows settings
* fix sms reminder field in all handlers
* add helper function to check if step was edited
* fix active on badge on workflow
* fix type error
* fix double reminders
* add teamId: null for userWorkflow query
* fix activeOnAll with managed event types
* add missing teamId in getAllWorkflows
* add a dafaut to prisma param
* fix managed event types on select all user workflows
* code clean up
* better variable name
* small fixes in update handler
* fix test name to match function name
* add info badge
* fix workflow count in event type settings
* fix getting bookings from children manged event types
* delete reminders when user is not part of any time no more
* implement feedback
* fix disbale workflow in event type settings
* fix remove member
* create new function getAllWorkflowsFromEventType
* add some removed code
* use promise.allSettled when deleting workflow reminders
* create new function deleteWorkflowRemindersOfRemovedMember.ts
* fix userId param
* delete org worklfows when team is disbanded
* don't trigger active on all workflow if not part of any team
* fix active on count badge
* add test for deleteWorkflowRemidnersOfRemovedMember
* trigger workflow also if not member of any subteam
* fix failing test
* remove unused code
* use testId for go back button
* fixes for managed event types & activateEventTypeHandler
* code clean up
* don't activate workflow on locked managed event type
* fix type error
* type error
* more type fixes
* feedback
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>