Commit graph

63 commits

Author SHA1 Message Date
e7f49ccf84
feat(tests): add DummyEntityIdA and DummyEntityIdB classes
These classes extend EntityId for testing purposes.
2026-08-21 17:10:21 +02:00
4421d34a43
feat(health): implement strictly-typed health check subsystem with DB, cache, and SMTP checks 2026-08-21 16:47:14 +02:00
891b21ba61
test(security): add unit tests for audit entities, presenter, and ClientConsoleResolver 2026-08-21 16:16:26 +02:00
6d63e68908
feat(infra): add HasUuidV7CreatedAt trait to derive created_at from UUIDv7 2026-08-21 16:11:56 +02:00
37bd6cdbdd
feat(shared): implement PSR-20 Clock contract, Utc facade, and RFC3339 normalization 2026-08-21 15:45:32 +02:00
1df3a27c98 feat(config): introduce typed configuration objects, dedicated value objects and enforce global class referencing 2026-08-21 15:01:36 +02:00
0063727790 refactor(tests): fix IncoSheets directory casing 2026-08-21 14:31:14 +02:00
a82a1558bd feat(security): add arcadia:security:audit-logs CLI command with CSV export and typed audit details 2026-08-21 14:30:20 +02:00
61073f4fcd feat(security): add database audit logging and asynchronous markdown email alerts for api client actions 2026-08-21 12:07:13 +02:00
709568f1ed feat(brand): handle on-demand brand renaming with BrandRenamed event and historical preservation 2026-08-21 11:36:37 +02:00
cc368c7102 feat(brand): add dedicated BrandCache service, event invalidation, and persist brand name locally 2026-08-21 11:27:32 +02:00
dc83df4105 feat(security): add audit log listeners and tests for client secret and status events 2026-08-21 11:09:25 +02:00
62289d2222 refactor(domain): introduce Domain Builders for IncoComposition and IncoSheet 2026-08-21 10:13:43 +02:00
abe60df95f feat(event): implement BrandCreated event and listeners
- Added BrandCreated event to encapsulate brand creation details.
- Created LogBrandCreated listener to log brand creation events.
- Updated BrandResolver to dispatch BrandCreated event upon new brand creation.
- Introduced EventServiceProvider to register event listeners.
- Added unit tests for BrandCreated event and LogBrandCreated listener.
2026-08-21 09:45:06 +02:00
9c2c109d51 feat(usecase): add Transactional interface and update use cases
- Implemented Transactional interface for use cases requiring database transactions.
- Updated CreateClient, RegenerateClientSecret, and SetClientStatus to implement Transactional.
- Modified LaravelExecutor to handle transactional use cases appropriately.
- Enhanced tests for LaravelExecutor to cover transactional behavior.
2026-08-21 09:38:29 +02:00
aca627ff78 test(presentation): add missing unit tests for API and Console presenters 2026-08-20 18:22:20 +02:00
8f933db9fa
feat(inco): migrate to IncoBrand VO, BrandResolver domain service and BrandCode filtering 2026-08-20 18:16:31 +02:00
1f8f03e6d8
feat(brand): add Brand use cases, API v1 endpoints, console command, OpenAPI spec and Bruno collection 2026-08-20 17:35:47 +02:00
20ec692160
feat(infra): add Brand Eloquent models, migrations, casts, adapters and seeders 2026-08-20 17:35:42 +02:00
a42a79861d
feat(domain): add Brand entity, value objects, ports, and generator & resolver domain services 2026-08-20 17:35:38 +02:00
6be00bb21e
refactor(domain): make read-only entity constructors private and introduce hydrate static methods 2026-08-20 15:05:33 +02:00
4d68a97889
feat(security): derive client createdAt from UUIDv7 and add HasTimestampIdentifier interface 2026-08-20 12:53:07 +02:00
c8a46bb9b3
fix(shared): harmonize delete exception contracts on Repository and ClientRepository (LSP) 2026-08-20 09:48:10 +02:00
2bbfc7fa08
fix(shared): prevent cross-type equality in EntityId::equals (LSP) 2026-08-20 09:45:54 +02:00
98356465d5
fix(infra): align since filter in InMemoryEmployeeDirectory with Eloquent adapter (LSP) 2026-08-20 09:45:11 +02:00
bad76036f1
feat(security): add FindClient use case with Paginated search and anticipate in console commands 2026-08-18 17:45:42 +02:00
d3786aaed6
feat(console): add CreateClient command and enforce unique slug for ApiClient 2026-08-18 17:31:29 +02:00
43758922ad
feat(console): add ToggleClientStatus command and related logic
- Implemented command to toggle client status via console.
- Introduced SetClientStatus use case for managing client activation.
- Added presenters and views for command output.
- Created tests for command functionality and edge cases.
2026-08-18 16:56:15 +02:00
e7f5f71005
feat(arcadia): add dedicated NotFound exceptions for Employee, IncoSheet and IncoComposition 2026-08-18 12:09:35 +02:00
e7904682b6
feat(infra): add ApiClient Eloquent model, repository adapter, security services, migrations, seeders and tests 2026-08-18 12:03:29 +02:00
fa86b9c4e6
feat(security): implement security bounded context entities, value objects, ports, use cases and unit tests 2026-08-18 12:03:25 +02:00
5c10d51fba
feat(infra): add in-memory directory and repository doubles with unit tests and refactor usecase tests to pure black-box 2026-08-18 11:54:47 +02:00
1fdf7ea9cc refactor(application): move usecases under Application\Arcadia\Usecase and NotFoundException to Application\Shared\Exceptions 2026-08-17 11:18:53 +02:00
fc368cdc46 refactor(shared): reorganize DDD core building blocks into sub-namespaces (Model, Port, Event) 2026-08-17 10:31:28 +02:00
13091c4ec6
build: require php ^8.5 and remove league/uri dependency 2026-08-17 09:32:49 +02:00
ac552a4530
refactor: adopt native PHP 8.5 \Uri\Rfc3986\Uri for request URIs and pagination links 2026-08-17 09:30:21 +02:00
8f82f86966
refactor(application): unify filter and sorter VOs between Application and Domain layers 2026-08-14 16:28:44 +02:00
2900c85b33
test(IncoSheets): add test for PaginatedShortIncoSheet instantiation
Added a test to verify the correct instantiation of PaginatedShortIncoSheet
from the IncoShortSheet domain entity.
2026-08-14 16:26:08 +02:00
bfe0b0010c
feat(IncoSheets): introduce IncoShortSheet entity and IncoShortSheetDirectory with SQL select optimization and search pagination 2026-08-14 16:15:49 +02:00
91114cb67b
feat(inco-compositions): add IncoCompositionShow feature
- Implemented IncoCompositionShowController to handle requests for inco composition details.
- Created IncoCompositionDto for response data structure.
- Added IncoCompositionShowRequest for request validation.
- Developed IncoCompositionShowResponse for formatting API responses.
- Introduced IncoCompositionShowPresenter and IncoCompositionShowView for presentation logic.
- Added tests for IncoCompositionShow feature and OpenAPI conformance.
2026-08-14 15:56:58 +02:00
f667532ff7
refactor(domain): regroup Inco entities and Value Objects under Inco/ and Inco/Composition/ 2026-08-14 15:38:10 +02:00
4d24e5c3fa
feat(IncoSheets): add search functionality for inco sheets
- Introduced IncoIdQuery value object for validating search queries.
- Implemented search method in IncoSheetDirectory and EloquentIncoSheetDirectory.
- Created IncoSheetsSearchController to handle search requests.
- Added IncoSheetsSearchRequest for validating incoming search parameters.
- Developed IncoSheetsSearchResponse for formatting search results.
- Added tests for search functionality in IncoSheetsSearchTest.
- Updated OpenAPI tests to validate search endpoint.
2026-08-14 15:06:54 +02:00
70375f8139
feat(dto): implement PaginationDto for pagination metadata
Added PaginationDto to handle pagination details and links for API responses.
Updated related response classes to utilize the new PaginationDto.
2026-08-14 12:02:13 +02:00
753456368c
style: format code for consistency and readability
Refactor code formatting for improved consistency across multiple files.
2026-08-14 11:50:26 +02:00
152ee2b5a2
feat(api): add IncoSheets feature with DDD clean architecture, tests & OpenAPI spec
- Use cases: FindAllIncoSheets & FindIncoSheet (filters, pagination, short projection)
- Presentation: controllers, FormRequests with scalar validation, DTOs (camelCase)
- Ports & Adapters: IncoSheetDirectory & EloquentIncoSheetDirectory
- Tests: Pest 4 unit, integration, OpenAPI spectator conformance, dynamic arch tests
- Docs: updated Bruno collection and OpenAPI spec
2026-08-14 11:33:05 +02:00
53b0dd9f1e
feat(employees): implement filtering and sorting for employee retrieval
Added Filter and Sorter classes to handle employee filtering and sorting criteria. Updated FindAllEmployees use case to utilize these new classes for improved employee data retrieval.
2026-08-14 09:30:21 +02:00
58749030bf
feat(employees): add support for filtering by multiple site IDs
- Updated EmployeeFilter to accept an array of SiteId.
- Modified EloquentEmployeeDirectory to handle multiple site filters.
- Enhanced EmployeesIndexRequest to validate siteIds as an array.
- Added tests for siteIds filtering in EmployeesIndexTest and EmployeeOpenApiTest.
2026-08-13 15:30:53 +02:00
b64c1ef366
feat(employees): add filtering capabilities for employee retrieval
- Introduced EmployeeFilter value object for filtering criteria.
- Updated EmployeeDirectory and EloquentEmployeeDirectory to support filtering.
- Modified FindAllEmployees use case to accept filter input.
- Enhanced EmployeesIndexRequest to handle filter parameters.
- Added tests for filtering functionality in EmployeesIndexTest and EloquentEmployeeDirectoryTest.
2026-08-13 15:09:37 +02:00
05ececd879
feat(RequestHelper): add pagination and URI conversion methods
Implement pagination logic and methods to convert request URLs to League URI instances.
2026-08-13 14:52:51 +02:00
e8d92e771a
test(UuidHelper): enhance UUID version checks and add fallback test 2026-08-13 13:24:21 +02:00