* refactor: FailedBookingsByField to use Insights Routing Service
- Move getFailedBookingsByRoutingFormGroup logic to InsightsRoutingBaseService
- Replace legacy getWhereForTeamOrAllTeams with getBaseConditions()
- Add failedBookingsByFieldInputSchema with date filtering support
- Update tRPC endpoint to use createInsightsRoutingService pattern
- Update component to pass startDate/endDate parameters
- Remove legacy method from routing-events.ts
Follows same pattern as PR #23031 for RoutedToPerPeriod refactoring
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: use useInsightsRoutingParameters hook in FailedBookingsByField
- Add missing import for useInsightsRoutingParameters
- Update component to follow same pattern as PR #23031
- Add columnFilters support to failedBookingsByFieldInputSchema
- Maintain routingFormId parameter from useInsightsParameters
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* refactor: remove separate routingFormId parameter
- Remove routingFormId parameter from getFailedBookingsByFieldData method
- Update component to only use insightsRoutingParameters
- Remove routingFormId from failedBookingsByFieldInputSchema
- Let getBaseConditions handle all filtering including routing form filtering
- Simplify tRPC endpoint to not pass separate routingFormId
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* clean up
* fix
* refactor: use RoutingFormResponseDenormalized directly in getFailedBookingsByFieldData
- Replace complex CTE approach with direct denormalized table query
- Join with App_RoutingForms_Form to access field definitions from JSON
- Use RoutingFormResponseField for response values
- Filter failed bookings with bookingUid IS NULL
- Maintain same data structure for UI compatibility
- Follow existing service patterns for authorization and date filtering
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fixing failed bookings query
* fix query
* fix integration test
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix: refactor RoutedToPerPeriod to use Insights Routing Service
* clean up
* debounce search and increase stale time
* fix wrongn conflict merge
* clean up DownloadButton
* fix query error
* address feedback
* apply feedback
* remove unnecessary CTE
* fix limit
* make startDate and endDate required
* fix type
* remove irrelevant test case
* address feedback
* Multi select event type in insights
* Fixing multi select query generation
* Added null check for eventType filters
* Updated test to support multiselect
* Type fix
---------
Co-authored-by: Devanshu Sharma <devanshusharma658@gmail.com>
- Rename insightsRoutingDI.ts -> InsightsRoutingDIService.ts
- Rename insightsRoutingBase.ts -> InsightsRoutingBaseService.ts
- Update all import statements to use new file names
- No functional changes, only file renames and import updates
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* Fix membership deletion handling and add tests
* fixes
* revert api-v2 specific changes
* Add more tests
* refactor: Move removeMember function into TeamService as private static methods
- Moved removeMember and all related helper functions from separate file into TeamService class
- Made all functions private static methods instead of exporting them
- Deleted the original removeMember.ts file since it's no longer needed
- Updated imports to use the new location
- All integration tests pass successfully
* refactor: Rename memberId to userId in TeamService methods
- Renamed memberId parameter to userId in removeMember private method
- Renamed memberIds parameter to userIds in removeMembers public method
- Updated all calls to removeMembers to use userIds instead of memberIds
- Parameter names now accurately reflect that they are user IDs, not membership IDs
* test: add service unit tests and simplify e2e tests for membership deletion
- Add unit tests for membership deletion services
- Remove redundant deletion behavior tests from controllers
- Keep only happy path tests in e2e controller tests
- Fix unused imports and variables
* package.json version
* fix unit teswtes
* No specs file
* fix unit tests
* fix: Add platform-libraries build step to E2E API v2 workflow
The E2E API v2 tests were failing with TypeScript compilation errors because
TeamService imports from @calcom/platform-libraries require the package to be
built first to generate the dist/ folder with compiled exports.
This adds the same build step that was added to unit-tests.yml to resolve
the module resolution errors.
Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com>
* Making tests clearer and easier to undestand
* chore: bump platform libs
* chore: bump platform libs
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: cal.com <morgan@cal.com>
* refactor: use dependency injection for InsightsBookingService
- Add DI tokens for InsightsBookingService and module
- Rename InsightsBookingService to InsightsBookingBaseService
- Create InsightsBookingService DI interface with create method
- Add DI module and container for InsightsBookingService
- Update tRPC router to use getInsightsBookingService DI container
- Update test file to use InsightsBookingBaseService
- Update documentation to reflect new DI pattern
Follows the same dependency injection pattern established for InsightsRoutingService in PR #22677
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* refactor: restore createInsightsBookingService helper using DI internally
- Keep createInsightsBookingService helper function for cleaner API
- Use getInsightsBookingService DI container internally
- Maintain same function signature and behavior
- All existing calls continue to work unchanged
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* refactor: rename service files with proper capitalization
- Rename insightsBookingBase.ts to InsightsBookingBaseService.ts
- Rename insightsBookingDI.ts to InsightsBookingDIService.ts
- Update all import statements to use new file names
- Maintain existing handler functionality using createInsightsBookingService(ctx, input)
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* revert some changes
* rename
* update doc
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* send bookingId in BOOKING_CANCELLED through requestReschedule
* fix: make customInputs nullable in BookingWebhookFactory
* fix: make customInputs nullable in BookingWebhookFactory
* fix: use raw query at InsightsBookingService
* feat: convert InsightsBookingService to use Prisma.sql raw queries
- Convert auth conditions from Prisma object notation to Prisma.sql
- Convert filter conditions from Prisma object notation to Prisma.sql
- Update return types from Prisma.BookingTimeStatusDenormalizedWhereInput to Prisma.Sql
- Fix type error in isOrgOwnerOrAdmin method
- Follow same pattern as InsightsRoutingService conversion
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* feat: convert InsightsBookingService to use Prisma.sql raw queries
- Convert auth conditions from Prisma object notation to Prisma.sql
- Convert filter conditions from Prisma object notation to Prisma.sql
- Update return types from Prisma.BookingTimeStatusDenormalizedWhereInput to Prisma.Sql
- Fix type error in isOrgOwnerOrAdmin method
- Follow same pattern as InsightsRoutingService conversion
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: update InsightsBookingService integration tests for Prisma.sql format
- Replace Prisma object notation expectations with Prisma.sql template literals
- Add NOTHING_CONDITION constant for consistency with InsightsRoutingService
- Update all test cases to use direct Prisma.sql comparisons
- Use $queryRaw for actual database integration testing
- Follow same testing patterns as InsightsRoutingService
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: exclude intentionally skipped jobs from required CI check failure
- Remove 'skipped' from failure condition in pr.yml and all-checks.yml
- Allow E2E jobs to be skipped without failing the required check
- Only actual failures and cancelled jobs will cause required check to fail
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix tests
* Revert "fix: exclude intentionally skipped jobs from required CI check failure"
This reverts commit 6ff44fc9a8f14ad657f7bba7c2e454e192b66c8f.
* clean up tests
* address feedback
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>