- Introduced `CleanOldLockCronJob` to handle scheduled cleaning of old locks.
- Implemented tests in `CleanOldLockCronJobTest` to verify behavior, including conditions for execution based on elapsed time.
- Utilized `MockClock` for precise time-based testing scenarios.
- Introduced `CleanOldLock` service to remove expired locks older than 24 hours.
- Added `removeExpiredBefore` method in `StoredObjectLockRepository` for efficient deletion of expired locks.
- Created `CleanOldLockTest` to verify the cleaning service functionality using `MockClock`.
- Implemented `WebdavLockController::lockDocument` to handle LOCK requests for creating and renewing locks.
- Introduced access control checks using `StoredObjectRoleEnum::EDIT` to restrict lock operations to authorized users.
- Added test suite `WebdavLockControllerTest` to validate locking and renewing scenarios, including edge cases.
- Refactored lock logic into `lockOrRenewToken` for streamlined processing.
- Modified `StoredObjectLockManager` logic to prevent unnecessary lock ID regeneration when updating existing locks.
- Added `testSetLockExistingUpdatesLockWithoutNewLockId` to verify behavior.
- Ensured `persist` is not called again for existing locks.
- Moved `putDocument` method from `WebdavController` to the new `WebdavPutController`.
- Introduced stricter locking and permission checks during PUT operations.
- Added new test suite `WebdavPutControllerTest` to cover different scenarios, including lock validation and access control.
- Updated existing logic in `WebdavControllerTest` to reflect these changes.
- Implemented the `parseIfCondition` method in `LockTokenParser` to extract lock tokens from `if` headers.
- Added `LockTokenParserTest` with multiple test cases using data providers to validate parsing logic, including scenarios with no headers, resource URIs, and "not" conditions.
- Implemented `LockTimeoutAnalyzer` to parse timeout values from RFC-compliant strings and return `DateInterval` objects.
- Added `LockTimeoutAnalyzerTest` with data providers to validate handling of various timeout cases, including "Second" and "Infinite".
- Replaced Redis-based locking mechanism with database-based `StoredObjectLock` management using `EntityManagerInterface`.
- Integrated `MockClock` and `Security` components for lock timing and user association.
- Updated test cases to include database persistence and user assignment during lock operations.
- Implemented `onKernelTerminate` event listener to handle deferred database flush for lock updates.
- Implemented `getRandomUser` method to fetch a random user using `EntityManagerInterface`.
- Added support for random user retrieval by querying `User` entity repository.
- Added `isActiveAt` method in `StoredObjectLock` to check if a lock is active at a specific time.
- Implemented `isLockedAt` method in `StoredObject` to determine if an object is locked at a given time.
- Included unit tests for `isActiveAt` method in `StoredObjectLockTest` to validate various scenarios.
- Created `StoredObjectLock` entity to manage locks on stored objects.
- Introduced `StoredObjectLockMethodEnum` to define locking methods.
- Added relationships between `StoredObject` and `StoredObjectLock` with appropriate methods for management.
- Added database migrations to create necessary tables and constraints for lock handling.
Replace `ActivityVoter::SEE` with `AccompanyingPeriodVoter::SEE` for correct authorization check
Closes#506
See merge request Chill-Projet/chill-bundles!972
- Implemented `ReferrerMainCenterAggregatorTest` to validate data transformation and query logic.
- Added data providers and query builders to ensure comprehensive test coverage.
- Verified correct handling of rolling dates and aggregator logic.
Resolve "Lors de la ré-assignation des parcours, l'UI ne mentionne pas qu'une opération a été réalisée"
Closes#503
See merge request Chill-Projet/chill-bundles!969
Resolve "Lors de l'import de code postaux, les codes absents de l'import depuis la même source ne sont pas supprimés"
Closes#502
See merge request Chill-Projet/chill-bundles!968
Resolve "Téléchargement des documents d'un workflow: limiter à 30 téléchargements plutôt que 100"
Closes#500
See merge request Chill-Projet/chill-bundles!964
Resolve "Des codes postaux marqués comme supprimés apparaissent toujours dans la recherche d'adresse"
Closes#499
See merge request Chill-Projet/chill-bundles!963