* fix(jwt): update import path for isTokenExpired function to remove file extension
* packages/graphql: add slot tests
* fix(slots): update error handling for customer and slot retrieval, enhance time validation in slot updates
* fix(slots): update error messages for missing datetime fields and improve validation logic in slot updates
* fix(slots): update error messages and validation logic for slot creation and updates, including handling of datetime fields and master status
* refactor(slots): rename checkUpdateIsTimeChanging to checkUpdateDatetime for clarity in slot update validation
* test(slots): add comprehensive tests for getAvailableTimeSlots method, including edge cases and error handling
* fix(api): standardize error messages for customer and slot retrieval, and improve validation logic in slots service
* refactor(slots): rename validation methods for clarity and consistency in slot service
* OrdersService: add checkBeforeCreate
* add orders.test.js
* test(orders): add validation test for missing datetime_end in order creation
* feat(orders): implement updateOrder functionality with comprehensive validation tests
- Added updateOrder method in OrdersService with checks for permissions, order state, and datetime validation.
- Implemented tests for various scenarios including successful updates, permission errors, and validation failures.
- Enhanced error handling for overlapping time and invalid state changes.
- Updated GraphQL operations to support sorting in GetOrders query.
* fix(orders): update datetime validation logic and test cases for order creation and completion
- Modified order creation tests to set datetime_start to one hour in the past for past orders.
- Updated the OrdersService to use isNowOrAfter for validating order completion against the start time.
- Enhanced datetime utility function to accept a unit parameter for more flexible comparisons.
* fix(calendar): initialize selected date in ScheduleCalendar component if not set
- Added useEffect to set the selected date to the current date if it is not already defined.
- Imported useEffect alongside useState for managing component lifecycle.
* fix(order-form): initialize selected date in DateSelect component if not set
- Added useEffect to set the selected date to the current date if it is not already defined.
- Renamed setDate to setSelectedDate for clarity in state management.
* refactor(orders): streamline order creation logic and enhance test setup
- Removed redundant variable assignments in the createOrder method for cleaner code.
- Updated test setup in orders.test.js to use global mocks for user and service retrieval, improving test clarity and maintainability.
- Added checks for required fields in order creation to ensure data integrity.
* feat(layout): integrate TelegramProvider and BackButton into main layout for enhanced navigation
* refactor(layout): remove BackButton from main layout and update navigation imports
* use ui back button for non tma mode
* feat(profile): add 'Услуги' link button to LinksCard for service management
* feat(services): add create and update service functionalities with corresponding API actions and hooks
* chore(docker): add healthcheck to service in docker-compose.yml and update deploy workflow to include docker compose down
* refactor(orders): add useOrdersInfiniteQuery for improved pagination and add load more button in orders list components
* refactor(graphql): remove NotifyService and related notification logic from orders and API, clean up unused dependencies
* refactor(api): streamline customer, order, service, and slot actions by wrapping server functions with client action utility to rethrow error messages to client
* refactor(profile): comment out change role feature
* refactor(orders): update OrderServices and ServiceSelect components to utilize ServiceCard, and enhance service fields with duration in GraphQL types
* refactor(schedule): implement forbidden order states to disable editing slots with active orders
* fix(deploy): update SSH configuration to use dynamic port from secrets for improved flexibility
* refactor(api/orders): simplify order creation logic by removing unnecessary validations and improving error handling
* refactor(contact-row): replace role display logic with useIsMaster hook for improved clarity
* refactor(profile/orders-list): update header text from "Общие записи" to "Недавние записи" for better clarity
gql: GetOrders add sort slot.date:desc
* refactor(profile/orders-list): enhance OrderCard component by adding avatarSource prop based on user role
* feat(order-form): implement date selection with event highlighting and monthly view for available time slots
* refactor(i18n/config): update timeZone from 'Europe/Amsterdam' to 'Europe/Moscow'
* refactor(order-form/datetime-select): enhance date selection logic to include slot availability check
* refactor(datetime-format): integrate dayjs timezone support with default Moscow timezone for date and time formatting
* fix(contact-row): replace useIsMaster hook with isCustomerMaster utility for role display logic
* refactor(service-card): replace formatTime with getMinutes for duration display
* refactor(order-datetime): update date and time handling to use datetime_start and datetime_end for improved consistency
* refactor(profile): streamline profile and slot pages by integrating session user retrieval and updating booking logic with BookButton component
* fix(navigation): append query parameter to bottom-nav links and enhance back navigation logic in success page
* web/packages: upgrade next
* fix(api/orders): update master validation logic to handle optional masters
* fix(api/notify, api/orders): enhance notification messages and update order state handling for masters
* fix react typings
* refactor(order-buttons, action-panel): streamline button handlers and add return functionality
* fix(contacts, orders): replace empty state messages with DataNotFound component for better user feedback
* feat(bot): add share bot command and update environment configuration for BOT_URL
* fix: pnpm-lock.yaml
* feat(bot): implement add contact wizard scene and enhance contact handling logic
* feat(profile): add BookContactButton component to enhance booking functionality
* fix(order-buttons): update cancel and confirm button logic based on order state
* feat(service-select): share services list for all
enhance service card display with duration formatting and improve layout
- Replace Docker Buildx setup with direct Docker installation.
- Update Docker Hub login method to use command line.
- Separate build and push steps for web and bot images for clarity and maintainability.