* wip
* Add preview mode in router
* only fetch bookings of this month for weighted rr
* test set up
* only get bookings of current month
* reverts test setup
* first changes for weight adjustments
* reset booking count + adjust calibration
* depreciate weightAdjustment
* get only bookings created this month
* fix typo
* make sure createdAt for hosts is correct
* use earliest possibel date as fallback
* add missing createdAt date to tests
* fix typo
* clean up changes in tests
* fix typo
* change end date to current date
* fix: Fall back to empty host array when no hosts are found
* fix: Restructure code a little
* fixed test, incorrectly used now outdated var
* perf: remove Dayjs from getLuckyUser
* Refactor getHostsWithCalibration for optimised performance, intentionally break test as findMany is always an array
* Better mock for host.findMany
* Remove team-event-types.test.ts, move to appropriate package
* TypeScript cannot auto-infer that an array is non-empty when assigning to a var
* fix: Type Fixes and DistributionMethod enum add
* Optimise tests
* Added test to show that bookings made before a newHost was added affect the lucky user result
* Throw error when the usersWithHighestPriority is empty, which should never happen
* WIP
* remove comment
* update migrations
* get attributes weights and virtual queue data
* use attribute weights and use bookings of virtual queue only
* clean up migrations
* Add shortfall column and add tests
* code clean up from feedback
* wrapper function for getLuckyUser
* code clean up
* fetch routingFormResponse in handleNewBooking
* fix type errors
* fix type errors in tests
* fix getAttributesQueryValue import for tests
* fix totalWeight
* add test for attributes weights and virtual queues
* clean up code
* add test for prepareQueuesAndAttributesData
* remove console.log
* use lazy import
* Add more tests and more columns to matching members queue
* fix issue from merge
* always send usersAndTheirBookingShortfalls
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* only fetch bookings of this month for weighted rr
* test set up
* only get bookings of current month
* reverts test setup
* first changes for weight adjustments
* reset booking count + adjust calibration
* depreciate weightAdjustment
* get only bookings created this month
* fix typo
* make sure createdAt for hosts is correct
* use earliest possibel date as fallback
* add missing createdAt date to tests
* fix typo
* clean up changes in tests
* fix typo
* change end date to current date
* fix: Fall back to empty host array when no hosts are found
* fix: Restructure code a little
* fixed test, incorrectly used now outdated var
* perf: remove Dayjs from getLuckyUser
* Refactor getHostsWithCalibration for optimised performance, intentionally break test as findMany is always an array
* Better mock for host.findMany
* Remove team-event-types.test.ts, move to appropriate package
* TypeScript cannot auto-infer that an array is non-empty when assigning to a var
* fix: Type Fixes and DistributionMethod enum add
* Optimise tests
* Added test to show that bookings made before a newHost was added affect the lucky user result
* Throw error when the usersWithHighestPriority is empty, which should never happen
* WIP
* remove comment
* update migrations
* get attributes weights and virtual queue data
* use attribute weights and use bookings of virtual queue only
* clean up migrations
* code clean up from feedback
* wrapper function for getLuckyUser
* code clean up
* fetch routingFormResponse in handleNewBooking
* fix type errors
* fix type errors in tests
* fix getAttributesQueryValue import for tests
* fix totalWeight
* add test for attributes weights and virtual queues
* clean up code
* add test for prepareQueuesAndAttributesData
* remove console.log
* use lazy import
* use findUnique
* add fallback weight
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* feat: Implements maxLeadThreshold which puts a maximum to the amount of lead a given host is allowed to be ahead
* Refactor getLuckyUser + implement in handleNewBooking + move logic to repo
* Decoupled @prisma from findQualifiedHosts
* Fix deep type error
* Add maxLeadThreshold to builder.ts
* Removed a console.log :O + fix handleChildrenEventTypes input
* Add distribution UI to enable balanced distribution/maximize availability
* 0-1-2 instead of 0-1-2-3 (3 bookings instead of 4)
* only fetch bookings of this month for weighted rr
* test set up
* only get bookings of current month
* reverts test setup
* first changes for weight adjustments
* reset booking count + adjust calibration
* depreciate weightAdjustment
* get only bookings created this month
* fix typo
* make sure createdAt for hosts is correct
* use earliest possibel date as fallback
* add missing createdAt date to tests
* fix typo
* clean up changes in tests
* fix typo
* change end date to current date
* fix: Fall back to empty host array when no hosts are found
* fix: Restructure code a little
* fixed test, incorrectly used now outdated var
* perf: remove Dayjs from getLuckyUser
* Refactor getHostsWithCalibration for optimised performance, intentionally break test as findMany is always an array
* Better mock for host.findMany
* Remove team-event-types.test.ts, move to appropriate package
* TypeScript cannot auto-infer that an array is non-empty when assigning to a var
* fix: Type Fixes and DistributionMethod enum add
* Optimise tests
* Added test to show that bookings made before a newHost was added affect the lucky user result
* Throw error when the usersWithHighestPriority is empty, which should never happen
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* add booking booking to team settings
* add update mutation
* add missing export
* fix dirty state
* first version of global team limits in getUserAvailability
* add test setup
* create seperate test file for global limits
* add tests for all units
* move limitManager and booking limit functions outside of getUserAvailability
* add migration
* clean up code
* move yearly booking count to booking repository
* code clean up
* don't count rescheduling booking
* add test for getSchedule
* fix type error
* fix type error
* fix type error
* fix from and end date for fetching bookings
* reuse functions
* allow null for bookingLimits
* remove bookings from managed event type
* fix type error
* code clean up
* small fixes form clean up
* fix type issue
* same fixes in teams/_post
* fix existing tz issue
* tests for fix
* adds missingn await
* imrove description
* remove spreading
* fix reschedule issue with booking limits
* fix reschedule error with booking durations
* remove useeffect
* undo commit
* add bookingLimits to UpdateOrgTeamDto
* fix unit tests
* Prepare view for app router migration
* throw error if not in ascending order
* fix disabled update button
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* WIP
* add frontend
* backend to update weight
* UI improvements
* WIP weight algorithm
* enable weights switch + algorithm improvements
* fix weightDescription
* clean up code
* remove OOOEntryHost from schema.prisma
* implement logic (not yet tested)
* add tests for weight algorithm
* add test with weight adjustment
* finish unit tests
* fix type error
* fix type error
* add migration
* fix type error
* fix event type update handler
* fix failing test
* UI fixes for saving hosts
* make sure weightAdjustment is not lost on host changes
* fix weightadjustment for new hosts
* add weightAdjustment to availableUsers
* fix type errors
* fix default value for weight
* make weight and weightAdjustment optional
* fix type errors from schema changes
* type fix
* clean up code
* improve comments
* remove comment
* clean up code
* add tests & weight adjustment improvments
* better variable naming
* fixes for weight adjustments
* make weightAdjustments proportional to weights
* fix previous host weight adjustments
* improved tests for weight adjustments
* save weight and priority + sort hosts correctly
* fix type error
* code clean up
* remove console.log
* use BookingRepository to fetch bookings of users
* use BookingRepository to fetch bookings in getLuckyUser
* fix type errors
* fix weightAdjustment if changed from fixed to rr host
* disable weights when 'assign all' is enabled
* typo
* allow 0 weight
* set min (and max) for weight and priority
* use useWatch
* code clean up
* fix type error
* only count accepted bookings for RR
* fix type error
* improve data fetching of bookings
* only filter bookings of availableUsers
* code clean up form feedback
* fix tests
* don't count no show bookings
* code clean up
* choose user with highest weight
* use one reduce instead of two
* use reduce instead of filter and map
* don't show weights toggle when 'assign all' is enabled
* design fixes
* fix type errors
* fix: type check
* Update packages/features/eventtypes/components/AddMembersWithSwitch.tsx
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* add reassign host to edit dropdown
* add dialog to reassign rr host
* Design improvements
* add translations
* only show reassign for admin/owner
* add first version of email template
* Init rr assign endpoint
* Pass booking information to rr assign endpoint
* Only allow attendee of booking to reassign themselves
* Send email to reassigned and cancelled member
* On reassign change calendar events
* Add workflows for new host
* On reassign new host - rr
* Fix icon
* Abstract reassignment logic
* Update calendar invite
* Add tests
* Clean up
* Merge with `main`
* Type fixes
* Add back dialog and handle no available hosts
* Handle if rr host is not organizer
* Fix calendar invites when organizer doesn't change
* Clean up
* Clean up
* Type fixes
* Type fixes
* Type fixes
* Type fixes
* Type fix
* Type fixes
* Type fixes
* Add custom responses to evt object
* Type fixes
* Type fix
* Type fix
* Type fixes
* Type fixes
* Type fix
* Type fix
* Update tests
* Type fixes
* Fix tests
* Fix tests
* Add booking repository
* Fix tests
* Fix tests
* Add doesUserIdHaveAccessToBooking for user
* Add check if user is team admin
* Check user permission tRPC route
* Type fixes
* Correct Promise.all
* UI fixes
* UI fixes
* Remove unused assigned hosts prop
* Type fix
* Remove unused frontend code
* Include user priority
* Fallback to event type users for older event types
* Get booking workflow reminder
* Revert back to eventType.hosts
* Fix lint
* Handle changing workflows
* Type fixes
* Type fixes
* Type fix
* Fix tests
* Update new booking imports
* Fix imports
* Type fix
* Type fix
* Fix adding all members to reassignment emails
* Fix cancelled RR emails to show old host
* Ensure consistent event titles
* Send new event workflows to new host
* Change event name if organizer changed
* Fix query error
* Delete old booking reference when reassigning
* Type fixes
* Type fixes
* Fix test
* Rename func isAdminOfTeamOrParentOrg
* Select specific workflow fields
* Address workflow feedback
* Delete const
* Address feedback
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* feat: Link to rescheduled booking from the old one
* add original comment
* use fromReschedule
* fix: type check
* review updates
* Update common.json
* change booking page text
* Delete packages/features/bookings/lib/getRescheduledToBooking.tsx
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>