Commit graph

56 commits

Author SHA1 Message Date
0766e9dc8f
refactor(repository): make entity deletion idempotent 2026-08-25 08:26:55 +02:00
e31767cfd0
refactor(brand): make ArcadiaId strictly string value extending EntityId 2026-08-24 21:45:04 +02:00
55576a6971
refactor(security): unify ClientDirectory reading methods into ClientRepository 2026-08-24 21:44:56 +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
5c49b2cc4f
feat(infra): attach HasUuidV7CreatedAt trait to Brand, ApiClient, and ClientAuditLog models 2026-08-21 16:12:01 +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
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
20ae9a2307 feat(event): implement TransactionalDomainEventDispatcher with post-commit release 2026-08-21 10:28:36 +02:00
62289d2222 refactor(domain): introduce Domain Builders for IncoComposition and IncoSheet 2026-08-21 10:13:43 +02:00
fcbd2aa9c0 refactor(inmemory): simplify filtering and sorting logic
Refactor the findAll method by extracting filtering and sorting logic into dedicated private methods for better readability and maintainability.
2026-08-21 09:55:09 +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
8f933db9fa
feat(inco): migrate to IncoBrand VO, BrandResolver domain service and BrandCode filtering 2026-08-20 18:16:31 +02:00
20ec692160
feat(infra): add Brand Eloquent models, migrations, casts, adapters and seeders 2026-08-20 17:35:42 +02:00
6be00bb21e
refactor(domain): make read-only entity constructors private and introduce hydrate static methods 2026-08-20 15:05:33 +02:00
66fc714ca0
refactor(security): update exception handling to use value objects
Refactor exception handling in ClientNameAlreadyExistsException and ClientNotFoundException
to utilize value objects directly, improving type safety and clarity.
2026-08-20 14:30:09 +02:00
4d68a97889
feat(security): derive client createdAt from UUIDv7 and add HasTimestampIdentifier interface 2026-08-20 12:53:07 +02:00
9c28cf2903
refactor(database): add timestamps to ApiClient and Employee models
Updated ApiClient and Employee models to include created_at and updated_at fields for better tracking of records.
2026-08-20 12:08:15 +02:00
15a0ff55a3
refactor(security): segregate ClientDirectory and ClientRepository ports (ISP) 2026-08-20 10:02:17 +02:00
c8a46bb9b3
fix(shared): harmonize delete exception contracts on Repository and ClientRepository (LSP) 2026-08-20 09:48:10 +02:00
98356465d5
fix(infra): align since filter in InMemoryEmployeeDirectory with Eloquent adapter (LSP) 2026-08-20 09:45:11 +02:00
2d46f774b3
fix(quality): resolve PHP_CodeSniffer warnings and errors 2026-08-18 18:25:04 +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
e7904682b6
feat(infra): add ApiClient Eloquent model, repository adapter, security services, migrations, seeders and tests 2026-08-18 12:03:29 +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
8ce012d7f7
refactor(models): update Carbon references to Illuminate\Support\Carbon
Updated property type hints in Employee, IncoCompo, and IncoSheet models to use Illuminate\Support\Carbon for consistency.
2026-08-17 09:49:52 +02:00
0c25d663f8
refactor: add explicit types to class constants (PHP 8.3+) 2026-08-17 09:41:10 +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
bfe0b0010c
feat(IncoSheets): introduce IncoShortSheet entity and IncoShortSheetDirectory with SQL select optimization and search pagination 2026-08-14 16:15:49 +02:00
cce81c1a85
style: apply code formatting and docblock fixes 2026-08-14 16:01:34 +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
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
7658483863
feat(api): implement API response transformation middleware
- Added TransformApiV1Response middleware to handle API responses.
- Updated Employee and IncoSheets controllers to return ApiResponse.
- Refactored API routes to use new middleware for v1.
2026-08-14 11:50:12 +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
b7f2de4f92
test(EloquentEmployeeDirectory): add integration tests for employee retrieval and date conversion
Includes tests for finding employees, handling null values, and date conversion.
2026-08-13 14:59:21 +02:00
2529118bcc
refactor(AppServiceProvider): simplify client IP retrieval logic
Removed unnecessary environment check for local client IP.
2026-08-13 14:58:02 +02:00