* chore: platform-libraries export updateNewTeamMemberEventTypes
* chore: platform-libraries export updateNewTeamMemberEventTypes
* chore: v2 api bump platform-libraries to 0.0.22
* fix: add created managed user to assignAllMembers: true team event-types
* fix: add created organizations user to assignAllMembers: true team event-types
* refactor: organization teams chose if team creator is auto-accepted
* refactor: managed users have only 2 default event types with video
* refactor: lowercase schedulingType for creating team event-types
* refactor: lowercase schedulingType for creating team event-types
* feat: separate platform teams by OAuth client
* swagger regenerate
* refactor: delete platform team when oauth client deleted
* revert: keep 4 default event-types
* fix: tests && merge of main into this branch
* fix: typecheck
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* feat: No-show bookings - do not count towards a member's round robin assignment
* filter no show organizer
* remove logs
* fix: filter bookings where host attendee is no show
* fix: use not condition for noShow
* chore: test
* add default false for noShowHost
* Revert "chore: test"
This reverts commit c914a8fc4a14ca9c7d8c4a08ff8b0f463789171c.
* chore: integration test
* fix: noShowHost not working for null
* Update packages/lib/server/getLuckyUser.ts
* chore: update test description
---------
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: gh0st91848 <gh0st91848@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* refactor: event-types CREATE, UPDATE accept scheduleId and return scheduleId
* chore: enable passing scheduleId to event-types create handler
* chore: use platform-libraries at version 0.0.20
* fix: remove team output schedule
* finish merge main into this branch
* fix: dont allow adding scheduleId to event-type if user does not own schedule
* 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>
* feat: RECORDING_TRANSCRIPTION_READY webhook
* refactor: split into diff files and restructuring
* feat: finish batch processor finished
* chore: types
* fix: type error
* chore: change name of triggger
* test: add unit test
* fix: type
* fix: type err
* chore: test
* feat: add booking reference repository and other imp
* chore: log
* fix: import
* chore: type error
* fix: update test
* fix: test
* fix: test
* fix: add timeout
* chore: move beforeEach
* Mock missing env variables to test. These vars are not set in CI
---------
Co-authored-by: Hariom <hariombalhara@gmail.com>
* chore: Remove deprecated logo/avatar/away fields
* Use right variables for accounts-step-card
* Remove more deprecated logo/avatar usage
* Dont drop the fields until all usages are gone
* Remove the avatar/logo drops for staggered release
* fix: Typescript blindspot (unvalidated include fields)
* fix: Further updates (mostly to API) typescript missed
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* added dropdown for no-shows in past bookings
* added layout
* nit
* todo comment: figure out how to close dropdown
* more todo comments
* Adds TRPC route among other WIP
* functional update
* fixes type err
* fix type err
* fix: styles
* strikethrough in email
* NITs
* removed stale comment
* add tests
* err comment
---------
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* fix timezone display on booking page to reflect event availability timezone
* migrate fetching event owner's schedule to server side
* migrate fetching event owner's schedule to server side
* fix e2e test errors
* Add WEBAPP_URL_FOR_OAUTH to salesforce auth
* In event manager constructor include "_crm" credentials as calendar creds
* Change crm apps to type to end with `_crm`
* Move sendgrid out of CRM
* Add zoho bigin to CRM apps
* When getting apps, use slug
* Add `crm` variants
* Hubspot Oauth use `WEBAPP_URL_FOR_OAUTH`
* Refactor creating credentials
* Fix empty CRM page
* Use credentials with `_crm`
* Abstract getAppCategoryTitle
* Add integration.handler changes
* Init crmManager
* Change salesforce to CrmService
* Create crmManager
* Create contact on new event
* Create event
* Create new CRM reference
* - Fix create new contact for salesforce
- Add reschedule to crmManager
* Create deleteAllCRMEvents
* When searching for credential, look for current credentials in class
* On cancel, delete 3rd party events
* Add delete method
* Type fix
* Type fix
* Convert Close.com to CrmService
* Convert Close.com to CrmService
* Move hubspot to CrmService
* Convert Pipedrive to CrmService
* Rename classes to CrmService
* Move ZohoCrm to CrmService
* Move Bigin to CrmService
* Type return for CrmServices
* Fix type errors
* Close.com create leads and contacts
* Fix tests
* Type fix
* Zoho bug fixes
* Clean up
* Type fixes
* Remove apiDeletes
* Type fixes
* Specific typing
* Type fix
* Type fix
* Type fix
* Type fix
* Type fix
* feat: Enable CRM apps on a per event type basis (#14450)
* Add Salesforce to be an event type app
* Handle new booking, only get enabled CRM credentials
* Abstract generating search params
* Add close.com to event type
* Clean up
* Move hubspot to event type
* Add pipedrive to event type
* Add zoho bigin to event type
* Add zoho crm to event type
* Remove console.log
* Add deleting CRM apps from event type
* Delete event type apps
* Fix deleting credentials
* Add CRM app data to event type metadata
* Backwards compatibility: add CRM credential if doesn't exist on event type
* Don't include user CRM credentials for backwards comp
* Backwards compatibility show CRM app is enabled and dirty field
* Clean up
* Type fixes
* Type fixes
* Type fix
* Type fix
* Remove console.log
* Test fix
* Upgrade embed-react vite version - dev
* Change build can't find error message
* Add back omni install prop
* Clean up
* Refactor `writeAppDataToEventType`
* Use eventType repository in writeAppDataToEventType
* Clean up old comments
* Add error logging
* createCRMEvents pass event uid as created event uid
* Use `getUid`
* Clean up props in create crm event
* Small changes to `crmManager`
* Fix zoho CRM
* refactor crmManager
* Undo vite config change
* Fix teamId query
* Fix bigin error
* Remove need for `writeAppDataToEventType`
* Add `getAllCredentials` test
* Add crmManager tests
* Type fixes
* Fix type errors
* Fix getAllCredentials test
* Fix tests
* Skip CRM manager tests for now
* feat: Skip RR Assignment if Contact Exists In Salesforce (#14556)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Update yarn.lock
* @zomars feedback - use new URL for state params
* fix: update hook to not produce enabled === undefined
* fix: update app card interfaces to use the new enabled from useIsAppEnabled
* fix: feedback for crm RR skip (#15160)
* code clean up
* fix type any
* test setup for RR lead skip
* code clean up
* simplify code
* type error
* finshed first test for RR lead skip
* add seconds test
* add test for handleNewBooking
* test if teamMember is set
* fix missing enabled key
* fix tests
* fix type error
* use setSystemTime instead of getDate
* remove nested if
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* fix type error
* fix: remove app metadata from all eventTypes on deleting the app
* fix: update hook to not produce enabled === undefined (default to false)
---------
Co-authored-by: Shaik-Sirajuddin <sirajuddinshaik30gmail.com>
Co-authored-by: Shaik-Sirajuddin <sirajudddinshaik30@gmail.com>
Co-authored-by: Shaik-Sirajuddin <89742297+Shaik-Sirajuddin@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
* Fix seeder and update message to inform well about org deletion implication
* Cleanup tempOrgRedirect as well
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* feat: Workflow — Send Email to Specific Email
* disable button when verifyEmail pending
* add verified emails table and routes
* fix: include teamId in verifyEmailCode
* fix: include email address in activate handler
* fix: check team before adding email
* feat: check verified email, add to team if only users
* remove logs
* fix: if statement
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* change email to verify your email
* fix: show error if saving unverified email
* fix: show email in subject
* verify email when editing steps
* remove double calls from same block
* verify email when creating new step
---------
Co-authored-by: v0ltZzie <161201747+v0ltZzie@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* wip
* wip
* wip
* Add tests
* Update getSchedule.test.ts
* Update types.ts
* Self review fixes
* Update text
* PR feedback from Carina
* Use utcoffset for range as well
* Remove logging from the function that runs on every timeslot
* Add one more test
* Show x days instead of x+1 days for both ROLLING and ROLLING_WINDOW
* refactor tests
* Move bookingScenario imports to the top as they import prismock mock that has to be imported very early
* More reordering of imports
* Fix accidental min update at wrong place
* Handle legacy value of zero for periodDays
* Range fix
* Fix isDateOutOfBound not being checked properly during booking. Also added a test for the case
* Fix duplicate element, how the hell it reached there
* Use today plus x days for ROLLING periodType
* Add disabled for Checkbox as well
* Revert logger.ts
* Formatting
Signed-off-by: zomars <zomars@me.com>
* Fix ordering of imports that is causing tests failure
---------
Signed-off-by: zomars <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* chore: open disableGuests for eventtypes apiv2
* fixup! chore: open disableGuests for eventtypes apiv2
* fixup! fixup! chore: open disableGuests for eventtypes apiv2
* chore: add disableGuests to create handler
* feat: Redirect when event type does not match booking type
* Favour early return
* If multiple bookingUid/rescheduleUid given, use first
* rescheduleUid/bookingUid behaviour is required
* feat: setup usePublicEvent with orgSlug and duration
* feat: setup useAvailableSlots with eventTypeSlug and orgSlug
* fix & feat: fix TS issues and allow passing multiple users to Booker
* refactor: dont show [15min] [30min] [60min] [1h30min] picker
* fix: pass orgSlug to handleNewBooking -> loadUsers -> findUsersByUsername to not return empty users[]
* refactor: display attendees in booking confirmation screen
* fix: getting slots get orgSlug from props not event
* revert: Booker username use props instead of hardcoded values
* refactor: setup BookerStore org and use it for selectedTime + isDynamic logic
* refactor: hide 'what is this meeting about' input in final booking step
* fix: TS error
* revert: what is the meeting about field hiding
* revert: make org as org? in booker store
* revert: createNewBooking -> loadUsers -> get forced orgSlug from header not body
* refactor: useHandleBookEvent get orgSlug from booker store not props
* fix: if entity undefined dont access orgSlug
* refactor: add isDynamic prop as queryKey for usePublicEvent
* refactor: remove unused prop
* re-add docs
* fix: typescript error
* fix: force platform orgSlug in handleNewBooking.ts
* fix: remove duplicate setSelectedDuration declaration
* refactor: destructure properies from body instead of req.body
* fix: entity optional and hide event members
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* Install upstash redis again - base of noficationSender
* Setup email handler etc and use tasker
* Remove logs
* Sending emails and correct format and spacing in emails
* Update email styles
* Update email styles
* add switch to enable feature
* fix: reset tasker types - will fix in new PR
* WIP: test suite
* WIP: test suite
* Add redis service and add WIP mock test
* Add tests for redis service and fix lpush
* More working tests
* More working tests
* fix: type error + typo
* update export to match i18n next mock
* (debug) push for debug
* Fix: fixed hosting in mocks
* Add common.json i18n
* add better test descriptions
* reset mocks after each test to allow concurancy
* Remove redundant RedisService.test.ts
* Rename and remove redundant isAdmin check
* Rename to .d.ts
* Add key versioning to constructRedisKey
* Update packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Update packages/trpc/server/routers/viewer/slots/handleNotificationWhenNoSlots.ts
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Add try/catch
* fix breaking when option === undefined
* Add missing await to Promise.all
* Rename data stored in redis to save space
* Include thrown error in logs
---------
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* chore: Billing Service
* chore: others
* chore: don't type
* chore: typo
* chore: use proper wh secret
* chore: updates
* chore: lockfile
* chore: docs and comment out
* chore: updates and include plan
* chore: config
* chore: bring back alias
* chore: update lockfile
* chore: refactor
* chore: default none plan in db
* chore: read from env vars
* chore: feedback
* chore: remove json config
* chore: proper type
* remove event type requires confirmation
* allow sms sending also for team (frontend)
* allow text to attendee for team (backend)
* add rate limiting for SMS (WIP)
* add functionality to lock and unlock SMS sending (+admin UI view)
* rename to smsLockState
* add ability to lock users and teams
* don't send sms if locked
* add missing imports
* fix rate limit namespace
* add translation
* fix type error
* remove prop from UsersTable
* add smsLockState to buildUser
* code clean up
* create seperate sms rate limit function
* fix type error
* add missing userId and teamId to sendSMS
* code improvements
* add User Team type
* fix marking as reviewed
* check monthly sms limit only for user
* don't lock orgs
* fix type error
* fix avatars
* fix type error
* fix type error
* fix type error
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* chore: Remove all avatar/logo references
* Updated user profile to only use avatarUrl
* fix: minor style issue
* chore: Remove redundant includeTeamLogo
* fix: Use right avatar default in event type list
* fix: placeholder avatar team profile, target
* chore: Add logoUrl/avatarUrl to JWT
* fix: Bunch of org avatar issues, fix members list
* Fix logoUrl on org pages
* More type fixes
* Hopefully final type fixes
* Another round of type fixes
* fix: UserForm ts
* fix: Handle as return types, not input types
* fix: Remove profile and add avatarUrl
* fix: notFound as const
* fix: Seeder avatarUrl params
* revert: Migration changes for easier recovery
* fix: Add explicit type to builder as avatar is now set
* Add logoUrl to unpublished entity
* Avatar test out of scope here
* fix: Use the new avatarUrl after save
* chore: Removed getOrgAvatarUrl/getTeamAvatarUrl
* fix: Update sidebar image immediately after change
* Unable to safe unnamed user, so default
* fix: Unpublished page, add organization test
* Add more tests
* add Travel Schedule modal
* UI to list schedules
* set shouldDirty
* add backend to add new travelSchedule
* implement deleting a schedule
* check if schedule is overlapping
* WIP
* fix finding overlapping travel schedule
* only use travelSchedule when default availability is used
* adjust date overrides to timezone schedule
* first version of changeTimeZone cron job
* fix tests by adding travelSchedules
* fixes for cron job api call
* improve unit tests
* add migration
* fix type error
* fix collective-scheduling test
* clean up cron job
* code clean up
* code clean up
* show timezone from travel schedule for date override
* add date override tests
* show tz on date override only in default schedule
* fix deleting old schedules
* minor fixes in cron api handler
* code clean up
* code clean up from feedback
* fix asia/kalkota comment
* fix dark mode
* fix start and end date conversion to utc
* add first unit test for travel schedules
* Fix modal render issue
* show timezone city wtihout _
* fix dark more for datepicker
* reset values after closing dialog
* remove session from middleware
* exit loop early once schedule is found
* fix type error
* add getTravelSchedules handler
* clean up DatePicker
* fix type error
* code clean up
* code clean up
* add indexes
* use deleteMany
* fix icons
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* update typings
* update prisma to include redirect uris for booking success, cancel and reschedule
* update migrations
* add input for uris and send them back in custom hook
* display new uris
* add type for enabling emails
* update prisma schema and add migrations
* chores
* fixup
* chore: fix style, remove console log, rewrite migration
---------
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* chore: change timezone format
* chore: set guest email and guest company to null
* feat: also check states to get id
* chore: improve code
* chore: fix type erro
* chore: update zod schema
* feat: retell AI webhook url
* fix: type error
* chore
* chore: make company and email optional
* chore: remove logs
* chore: type error
* chore: type error
* fix: type err
* fix: pass guest email
* fix: type err
* chore: change date format
* chore: move advanced format