Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
App\Core\Engine\Application\Service\InventorySchemaEngine63%
App\Core\Engine\Presentation\Api\InventoryFieldsApiController65%
App\Core\Engine\Application\Security\PermissionGuard76%
App\Core\Engine\Presentation\Web\Support\RecordCreationPrefillResolver79%
App\Core\Engine\Application\Service\DataMappingApplicationService80%
App\Core\Engine\Presentation\Api\RecordCalendarApiController80%
App\Core\Engine\Application\Service\UniversalCrudService81%
App\Core\Engine\Application\Service\RecordModuleContextBuilder81%
App\Core\Engine\Domain\Model\Support\FilterAccessPolicyTrait81%
App\Core\Engine\Application\Query\Clause\Filter\RelationalFilterClauseBuilder83%
App\Core\Engine\Infrastructure\Repository\SqlInventoryRecordRepository83%
App\Core\Engine\Application\Service\ImageUploadService83%
App\Core\Engine\Application\Security\PermissionContextFactory84%
App\Core\Engine\Infrastructure\Repository\Loader\SqlFieldMetadataLoader85%
App\Core\Engine\Application\Transformer\UserReferenceTransformer85%
App\Core\Engine\Presentation\Api\RecordHierarchyApiController86%
App\Core\Engine\Application\Service\UniversalFieldCleanupService87%
App\Core\Engine\Presentation\Api\CentralEngineApiController87%
App\Core\Engine\Application\Service\UniversalRecordEnricher88%
App\Core\Engine\Presentation\Web\Support\RecordTitleResolver88%
App\Core\Engine\Presentation\Web\HtmxEngineDispatchHandler89%
App\Core\Engine\Domain\Model\Relation1mMetadata89%
App\Core\Engine\Application\Service\UniversalUserStructureService89%
App\Core\Engine\Application\Service\PrefixGeneratorService89%
App\Core\Engine\Infrastructure\Repository\SqlMetadataRepository89%
App\Core\Engine\Application\Service\KanbanBoardQueryService89%

Project Risks

Class CRAP
App\Core\Engine\Application\Service\UniversalCrudService381
App\Core\Engine\Presentation\Web\HtmxEngineDispatchHandler187
App\Core\Engine\Presentation\Api\CentralEngineApiController142
App\Core\Engine\Application\Service\KanbanBoardQueryService118
App\Core\Engine\Presentation\Web\Support\RecordCreationPrefillResolver106
App\Core\Engine\Application\Security\PermissionGuard88
App\Core\Engine\Infrastructure\Repository\SqlInventoryRecordRepository87
App\Core\Engine\Application\Security\PermissionContextFactory62
App\Core\Engine\Application\Service\UniversalRecordEnricher59
App\Core\Engine\Application\Service\RecordModuleContextBuilder52
App\Core\Engine\Application\Service\ImageUploadService52
App\Core\Engine\Infrastructure\Repository\SqlMetadataRepository37
App\Core\Engine\Application\Query\Clause\Filter\RelationalFilterClauseBuilder34
App\Core\Engine\Application\Service\PrefixGeneratorService30
App\Core\Engine\Infrastructure\Repository\Loader\SqlFieldMetadataLoader25
App\Core\Engine\Application\Service\DataMappingApplicationService24
App\Core\Engine\Application\Service\UniversalUserStructureService21
App\Core\Engine\Application\Service\InventorySchemaEngine21
App\Core\Engine\Presentation\Api\RecordCalendarApiController20
App\Core\Engine\Presentation\Api\InventoryFieldsApiController19
App\Core\Engine\Domain\Model\Support\FilterAccessPolicyTrait17
App\Core\Engine\Application\Service\UniversalFieldCleanupService15
App\Core\Engine\Domain\Model\Relation1mMetadata14
App\Core\Engine\Presentation\Web\Support\RecordTitleResolver12
App\Core\Engine\Application\Transformer\UserReferenceTransformer7
App\Core\Engine\Presentation\Api\RecordHierarchyApiController6

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
updateSpecialAccess0%
hasSharedRecordAccess0%
canPerformModuleAction0%
shouldCopyInventory0%
dropInventoryColumn0%
getDefaultSummaryFields0%
resolveMatrixPayload0%
copyPicklistValues0%
findWidget0%
findAllActiveWidgets0%
findGlobalSearchFields0%
findGlobalSearchFields0%
findAllActiveWidgets0%
findPicklistValues0%
applyRelationalNotInFilter11%
filterFieldsByPermission14%
fetchNavigation14%
filterVisibleFieldsByProfile18%
syncToClientIfNeeded25%
filterHiddenReadFields28%
resolveModuleLabel28%
sanitizeWriteFields33%
handleGridRelationDelete33%
parseJsonBody37%
handleHierarchyException40%
actionNavigation42%
persistProfileIdToSession42%
getTableColumns42%
fetchModuleContext44%
delete44%
loadUserProfileIdFromDb50%
handlePostCreateSideEffects50%
enrichColumnExpression50%
update50%
resolveHiddenViews50%
extractColumnFilters50%
resolvePolymorphicPrefills51%
assertModuleAccess53%
resolveInitialCalendarDates54%
actionStatus55%
applySecurityConditions57%
loadPicklistValuesMap59%
loadUserStructureIdsFromDb60%
resolveCanCreate60%
hasColumnFallback60%
actionRelatedCalendarEvents60%
actionRelatedWorkTime60%
resolvePresentationMode60%
resolveFallbackTitle60%
resolveItemColumnValue60%
cleanupRelationMmReferences61%
saveInventoryItemsIfApplicable62%
isClientModule62%
detectMimeType63%
resolveNextGridstackY64%
getPdo66%
applyStatusUpdate66%
padNumber66%
resolveFieldTagValue66%
sanitizeReferenceItem66%
assertPermissionContext66%
formatDuplicatedName66%
routeDataExchange68%
normalizeUpdatePayload68%
applySpecialAccessConditions70%
detectPriorityPicklistId70%
routeLanguageTranslations70%
resolveFallbackTitle75%
resolveFieldTitle75%
resolveDimensions75%
generateThumbnail75%
getRecordItems75%
saveRecordItems75%
deleteRecordItem75%
findCurrencyRate75%
addNewGroupRow75%
enrichRelationData75%
resolveRelationOptions75%
schema75%
listRelatedCalendarEvents75%
detectNameColumn77%
fetchUserStructureIds77%
resolveCatalogWidgetLabel77%
resolveCatalogWidgetIcon77%
cascadePartyPrefill77%
isRelationTableAccessible78%
saveItems78%
resolveSortOrder80%
isPublicLevelPermitted80%
resolveAccessColumn80%
getExcludedDescendantIds80%
addInventoryColumn80%
transformRow80%
resolveRelationLabel80%
parseArray80%
normalizeStringWriteValue80%
routeModuleRelations80%
canEdit80%
canDelete80%
fetchModuleRecords80%
loadTableColumns81%
assertCanEditRecord81%
findAllStructureOptions81%
actionAvailableSources82%
insert82%
countRelated83%
resolveExchangeRate83%
processRowMutations83%
fetchTicketSpecificEmailContext83%
resolveCalendarEffectiveUserIds83%
update83%
transformWrite83%
isHiddenInView83%
shouldReset83%
resolveRelationMetadata83%
buildStatusCountsWhere85%
assertWriteAccess85%
autoGeocodeRecordData85%
resolveImpersonatorUser85%
hasRecordOwnership85%
applyActionToRecords85%
hasColumn85%
resolveTitle85%
resolveTableName85%
resolveHeuristicIcon85%
executeRelationQuery85%
actionRenderWidget85%
assertReadAccess86%
actionCalendarEvents86%
read86%
actionToggleFavorite86%
applyNotInFilter87%
executeHardDelete87%
provisionBaseInventoryTable87%
syncUserStructures87%
resolveTablePrefix87%
findModuleById87%
actionCalendarUsers87%
fromRow88%
detectModuleFeatures88%
loadRelationLabelsMap88%
fetchCompanyEmailContext88%
resolveSourceRelationKey88%

Project Risks

Method CRAP
resolveItemColumnValue70
resolveModuleLabel55
resolvePolymorphicPrefills49
handlePostCreateSideEffects48
routeModuleRelations47
resolveMatrixPayload42
filterFieldsByPermission37
assertModuleAccess33
applyRelationalNotInFilter30
generateThumbnail29
sanitizeWriteFields21
fetchNavigation20
canPerformModuleAction20
shouldCopyInventory20
filterHiddenReadFields19
actionNavigation16
actionAvailableSources16
resolveSourceRelationKey15
autoGeocodeRecordData14
routeLanguageTranslations14
listRelatedCalendarEvents14
resolveFieldTagValue13
loadUserProfileIdFromDb13
extractColumnFilters13
fetchModuleRecords13
filterVisibleFieldsByProfile12
persistProfileIdToSession12
getTableColumns12
update12
handleGridRelationDelete12
hasSharedRecordAccess12
dropInventoryColumn12
findAllActiveWidgets12
routeDataExchange11
assertReadAccess11
fromRow11
parseJsonBody11
syncToClientIfNeeded10
insert10
shouldReset10
syncUserStructures10
detectModuleFeatures10
resolveCatalogWidgetLabel9
resolveCatalogWidgetIcon9
assertCanEditRecord9
fetchModuleContext9
buildStatusCountsWhere9
enrichRelationData9
schema8
canEdit8
loadPicklistValuesMap8
applySpecialAccessConditions8
loadUserStructureIdsFromDb8
processRowMutations8
assertWriteAccess8
read8
enrichColumnExpression8
resolveHiddenViews8
detectMimeType7
canDelete7
loadTableColumns7
actionStatus7
normalizeUpdatePayload7
cascadePartyPrefill6
isRelationTableAccessible6
saveItems6
transformRow6
resolveRelationMetadata6
resolveImpersonatorUser6
actionCalendarEvents6
findGlobalSearchFields6
sanitizeReferenceItem5
applySecurityConditions5
resolveRelationLabel5
resolveExchangeRate5
transformWrite5
hasRecordOwnership5
resolveHeuristicIcon5
executeRelationQuery5
actionRenderWidget5
loadRelationLabelsMap5
resolveCanCreate5
handleHierarchyException4
saveInventoryItemsIfApplicable4
isClientModule4
getPdo4
applyStatusUpdate4
detectPriorityPicklistId4
resolveFieldTitle4
addNewGroupRow4
detectNameColumn4
isPublicLevelPermitted4
normalizeStringWriteValue4
fetchTicketSpecificEmailContext4
resolveCalendarEffectiveUserIds4
isHiddenInView4
actionToggleFavorite4
applyNotInFilter4
actionCalendarUsers4
resolveInitialCalendarDates3
resolvePresentationMode3
resolveFallbackTitle3
cleanupRelationMmReferences3
resolveNextGridstackY3
resolveFallbackTitle3
findCurrencyRate3
resolveRelationOptions3
resolveSortOrder3
resolveAccessColumn3
getExcludedDescendantIds3
addInventoryColumn3
parseArray3
findAllStructureOptions3
countRelated3
applyActionToRecords3
hasColumn3
resolveTitle3
resolveTableName3
resolveTablePrefix3
fetchCompanyEmailContext3
delete2
update2
hasColumnFallback2
actionRelatedCalendarEvents2
actionRelatedWorkTime2
padNumber2
assertPermissionContext2
formatDuplicatedName2
resolveDimensions2
getRecordItems2
saveRecordItems2
deleteRecordItem2
fetchUserStructureIds2
executeHardDelete2
provisionBaseInventoryTable2
findModuleById2