Classes

Coverage Distribution

Complexity

Insufficient Coverage

Class Coverage
App\Action\Admin\CreateAdminTransactionAction0%
App\Action\Admin\CreateInvestorAccountAction0%
App\Action\Admin\GetAdminInvestorLoansAction0%
App\Action\Admin\GetAdminTransactionsAction0%
App\Action\Admin\GetAumHistoryAction0%
App\Action\Auth\ForgotPasswordAction0%
App\Action\Auth\ResetPasswordAction0%
App\Action\Document\CreateRegistrationDocumentsAction0%
App\Action\Home\VersionAction0%
App\Action\Loan\ActivateLoanAction0%
App\Action\Loan\ApproveLoanAction0%
App\Action\Loan\CheckEligibilityAction0%
App\Action\Loan\DenyLoanAction0%
App\Action\Loan\GetActiveLoansAction0%
App\Action\Loan\GetApprovedLoansAction0%
App\Action\Loan\GetLoanAction0%
App\Action\Loan\GetMyLoansAction0%
App\Action\Loan\GetPendingLoansAction0%
App\Action\Loan\MakePaymentAction0%
App\Action\Loan\RequestLoanAction0%
App\Action\SuperAdmin\AccrueInterestAction0%
App\Action\SuperAdmin\DeleteErrorLogsAction0%
App\Action\SuperAdmin\DeleteUserAction0%
App\Action\SuperAdmin\GetErrorLogAction0%
App\Action\SuperAdmin\GetSystemSettingsAction0%
App\Action\SuperAdmin\ListErrorLogsAction0%
App\Action\SuperAdmin\PostInterestAction0%
App\Action\SuperAdmin\ProjectInterestAction0%
App\Action\SuperAdmin\ResolveErrorLogAction0%
App\Action\SuperAdmin\UpdateSystemSettingAction0%
App\Console\AccrueInterestCommand0%
App\Console\InspectPandaDocTemplateCommand0%
App\Console\ListPandaDocTemplatesCommand0%
App\Console\PostMonthlyInterestCommand0%
App\Console\SnapshotAccountBalancesCommand0%
App\Domain\Document\Data\DocumentTemplateData0%
App\Domain\Document\Data\PandaDocDocumentRefData0%
App\Domain\Document\Data\PandaDocTemplateDetailsData0%
App\Domain\Document\Data\PandaDocTemplateFieldData0%
App\Domain\Document\Data\PandaDocTemplateTokenData0%
App\Domain\Document\Repository\DocumentTemplateRepository0%
App\Domain\Document\Service\PandaDocService0%
App\Domain\Notification\Service\SmtpEmailService0%
App\Domain\Stripe\Service\StripeService0%
App\Domain\SystemSettings\Service\SystemSettingsService0%
App\Domain\Auth\Data\TokenData14%
App\Domain\Stripe\Repository\StripeWebhookRepository40%
App\Domain\SystemSettings\Repository\SystemSettingsRepository41%
App\Domain\SystemSettings\Data\SystemSettingData43%
App\Domain\ErrorLog\Data\ErrorLogData47%
App\Domain\Document\Data\PandaDocSigningSessionData50%
App\Domain\Loan\Data\LoanData50%
App\Domain\Admin\Service\AdminService51%
App\Domain\Loan\Data\LoanEligibilityData52%
App\Domain\Document\Data\PandaDocRecipientData53%
App\Domain\Admin\Repository\AdminRepository56%
App\Domain\Transaction\Service\TransactionService57%
App\Domain\Document\Data\PandaDocDocumentData57%
App\Support\Row60%
App\Domain\SuperAdmin\Repository\SuperAdminRepository64%
App\Domain\Exception\ValidationException66%
App\Domain\Auth\Repository\AuthRepository71%
App\Domain\Notification\Data\NotificationType75%
App\Domain\SuperAdmin\Service\SuperAdminService75%
App\Domain\Document\Submission\Service\InvestorDocumentService76%
App\Middleware\ErrorLoggingMiddleware77%
App\Domain\Storage\Service\LocalFileStorage79%
App\Domain\ErrorLog\Repository\ErrorLogRepository81%
App\Domain\Transaction\Repository\TransactionRepository82%
App\Action\Document\GetDocumentsAction83%
App\Domain\Configuration\ConfigKeyPolicy83%
App\Domain\Loan\Repository\LoanRepository84%
App\Action\Notification\UpdateMyNotificationPreferencesAction84%
App\Domain\Audit\AuditService86%
App\Domain\Notification\Data\NotificationPreference87%
App\Action\Notification\GetMyNotificationPreferencesAction88%
App\Action\Investor\UpdateInvestorStatusAction89%
App\Action\Investor\UpdateKycStatusAction89%
App\Domain\Document\Submission\Repository\InvestorDocumentRepository89%

Project Risks

Class CRAP
App\Domain\Document\Service\PandaDocService930
App\Domain\Stripe\Service\StripeService650
App\Domain\SystemSettings\Service\SystemSettingsService380
App\Action\Document\CreateRegistrationDocumentsAction272
App\Domain\SuperAdmin\Repository\SuperAdminRepository255
App\Domain\SuperAdmin\Service\SuperAdminService221
App\Console\InspectPandaDocTemplateCommand182
App\Support\Row164
App\Domain\Document\Submission\Service\InvestorDocumentService136
App\Domain\Admin\Repository\AdminRepository115
App\Domain\Document\Data\PandaDocTemplateDetailsData110
App\Domain\Auth\Repository\AuthRepository105
App\Action\Auth\ResetPasswordAction90
App\Action\Admin\CreateAdminTransactionAction72
App\Domain\ErrorLog\Repository\ErrorLogRepository65
App\Middleware\ErrorLoggingMiddleware60
App\Domain\Loan\Repository\LoanRepository59
App\Action\SuperAdmin\ResolveErrorLogAction56
App\Action\SuperAdmin\UpdateSystemSettingAction56
App\Domain\Notification\Service\SmtpEmailService56
App\Domain\SystemSettings\Repository\SystemSettingsRepository47
App\Domain\Storage\Service\LocalFileStorage44
App\Domain\Audit\AuditService42
App\Action\Admin\GetAdminTransactionsAction42
App\Action\Auth\ForgotPasswordAction42
App\Action\SuperAdmin\DeleteErrorLogsAction42
App\Action\SuperAdmin\DeleteUserAction42
App\Domain\Document\Submission\Repository\InvestorDocumentRepository39
App\Domain\Admin\Service\AdminService32
App\Action\Loan\DenyLoanAction30
App\Action\Loan\GetLoanAction30
App\Console\AccrueInterestCommand30
App\Console\ListPandaDocTemplatesCommand30
App\Console\SnapshotAccountBalancesCommand30
App\Domain\Transaction\Repository\TransactionRepository25
App\Domain\Transaction\Service\TransactionService20
App\Action\Loan\ActivateLoanAction20
App\Action\Loan\ApproveLoanAction20
App\Action\Loan\GetPendingLoansAction20
App\Action\Loan\RequestLoanAction20
App\Console\PostMonthlyInterestCommand20
App\Domain\Document\Data\PandaDocTemplateFieldData20
App\Domain\Document\Repository\DocumentTemplateRepository20
App\Domain\Stripe\Repository\StripeWebhookRepository17
App\Action\Notification\UpdateMyNotificationPreferencesAction14
App\Action\Document\GetDocumentsAction12
App\Domain\SystemSettings\Data\SystemSettingData12
App\Action\Admin\GetAdminInvestorLoansAction12
App\Action\Home\VersionAction12
App\Action\SuperAdmin\GetErrorLogAction12
App\Action\SuperAdmin\ProjectInterestAction12
App\Domain\Document\Data\PandaDocDocumentData8
App\Domain\Document\Data\PandaDocSigningSessionData6
App\Domain\Configuration\ConfigKeyPolicy5
App\Action\Investor\UpdateInvestorStatusAction4
App\Action\Investor\UpdateKycStatusAction4
App\Action\Notification\GetMyNotificationPreferencesAction3

Methods

Coverage Distribution

Complexity

Insufficient Coverage

Method Coverage
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
buildEmailHtml0%
__construct0%
__invoke0%
__construct0%
__invoke0%
createAndSendDocument0%
sendWhenDraftReady0%
saveDocument0%
updateDocumentStatus0%
updateDocumentStatus0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
__invoke0%
__construct0%
configure0%
execute0%
__construct0%
configure0%
execute0%
__construct0%
configure0%
execute0%
__construct0%
configure0%
execute0%
__construct0%
configure0%
execute0%
jsonSerialize0%
getAllTransactions0%
getAllTransactions0%
getAumHistory0%
logImpersonationEnd0%
toArray0%
storePasswordResetToken0%
findValidResetToken0%
markResetTokenUsed0%
updatePassword0%
__construct0%
fromRow0%
toArray0%
fromPandaDocResponse0%
__construct0%
fromPandaDocResponse0%
toArray0%
fromPandaDocResponse0%
fromPandaDocResponse0%
__construct0%
fromPandaDocResponse0%
__construct0%
fromPandaDocResponse0%
toArray0%
__construct0%
fromPandaDocResponse0%
toArray0%
__construct0%
findActive0%
__construct0%
getDocumentDetails0%
createSigningSession0%
resendDocument0%
createDocumentFromTemplate0%
getDocumentStatus0%
sendDocument0%
inspectTemplate0%
listTemplates0%
downloadDocument0%
makeRequest0%
parseStatusCode0%
listActiveTypes0%
describeUploadError0%
jsonSerialize0%
info0%
notice0%
warning0%
forField0%
getErrors0%
toArray0%
toArray0%
findApproved0%
getApprovedLoans0%
jsonSerialize0%
allKnownTypes0%
isValid0%
__construct0%
send0%
markProcessed0%
markFailed0%
__construct0%
createCustomer0%
findCustomer0%
createSetupIntent0%
listPaymentMethods0%
detachPaymentMethod0%
setDefaultPaymentMethod0%
chargePaymentMethod0%
parseWebhookEvent0%
deleteUser0%
accrueDailyInterest0%
snapshotDailyAccountBalance0%
postMonthlyInterest0%
getActiveAccountsWithBalances0%
deleteUser0%
accrueInterest0%
postInterest0%
projectInterest0%
guardNonProduction0%
getValue0%
jsonSerialize0%
findAll0%
update0%
__construct0%
getAll0%
getByKey0%
update0%
getLogLevelThreshold0%
updateLogLevelThreshold0%
validateSetting0%
getAccountAvailableBalance0%
getValidTypes0%
bool30%
string37%
validateOptionalString40%
from40%
withTransaction50%
ensureDirectory50%
array50%
generateUniqueAccountNumber55%
validateRequiredString57%
writeStreamAtomic57%
createTransaction58%
getClientIp62%
int62%
float62%
buildContext63%
determineLogLevel65%
uploadForInvestor65%
extractExtension66%
require66%
generateUniqueAccountNumber69%
findByInvestorId70%
findAll70%
getClientIp70%
getClientIp70%
getCurrentFileForAdmin71%
rejectForAdmin72%
validatePreferences75%
getUnresolvedCount75%
generatePaymentSchedule75%
pickWithdrawalAmount75%
__construct76%
getStats77%
getAccountSummary80%
investorEmailExists80%
canRoleEdit80%
getForAdmin80%
decodeMimeList80%
updateInvestor80%
delete80%
pickFeeAmount80%
setContext81%
generateAccountNumber81%
checkEligibility81%
getTotalAccounts83%
getTotalBalance83%
updateLoanConfig83%
activateLoan83%
validateCompleteRegistrationInput84%
getOwnedDocumentName84%
registerComplete85%
makeAttachmentFilename85%
freezeAccount85%
unfreezeAccount85%
emailExists85%
usernameExists85%
revokeRefreshToken85%
revokeAllUserTokens85%
cleanupExpiredTokens85%
updateLastLogin85%
incrementFailedLoginAttempts85%
findByIdForAdmin85%
findByIdForInvestor85%
updateStatus85%
getCurrentFileForInvestor85%
emailExists85%
retrieve85%
getAccountBalance85%
emailExistsInUsers85%
emailExistsInInvestors85%
generateTransactionDescription85%
getLogLevelThreshold85%
accountExists85%
extractErrorCode86%
__invoke87%
getInvestorDetail87%
getPasswordHash87%
findById87%
deleteByIds87%
findInvestorById87%
findInvestorByEmail87%
findInvestorByUserId87%
updateInvestorStatus87%
findById87%
getInvestorAccountId87%
getNextUnpaidScheduleEntry87%
assertInvestorOwnsPaymentMethod87%
getAccountYieldRate87%
create87%
getAccountStatus87%
logAccountStatusChange88%
logImpersonation88%
__invoke88%
__invoke88%
updateInterestRate88%
updateLoanToValueRatio88%
getAumHistory88%
findUserByEmail88%
findUserByUsername88%
findUserById88%
findSessionByRefreshToken88%
findCurrentFileEvent88%
hashStream88%
findActive88%
getConfig88%
findPending88%
getAccountById88%
getUserById88%
findByKey88%
findById88%

Project Risks

Method CRAP
getAllTransactions156
execute132
deleteUser132
fromPandaDocResponse90
validateSetting90
__invoke72
describeUploadError72
projectInterest72
__invoke56
makeRequest56
bool44
findAll43
__invoke42
__invoke42
listTemplates42
send42
listPaymentMethods42
__invoke30
__invoke30
__invoke30
__invoke30
chargePaymentMethod30
accrueInterest30
uploadForInvestor24
__invoke20
sendWhenDraftReady20
__invoke20
__invoke20
getAllTransactions20
downloadDocument20
createCustomer20
update20
determineLogLevel16
createTransaction14
buildContext13
writeStreamAtomic13
__invoke12
__invoke12
__invoke12
__invoke12
execute12
execute12
execute12
findValidResetToken12
fromPandaDocResponse12
findActive12
createDocumentFromTemplate12
parseStatusCode12
findApproved12
findCustomer12
parseWebhookEvent12
postMonthlyInterest12
findAll12
update12
getAccountAvailableBalance12
validatePreferences10
extractErrorCode9
registerComplete8
string7
decodeMimeList7
getClientIp6
getClientIp6
getClientIp6
float6
updateInvestor6
setContext6
getOwnedDocumentName6
__invoke6
createAndSendDocument6
saveDocument6
updateDocumentStatus6
updateDocumentStatus6
__invoke6
__invoke6
__invoke6
execute6
storePasswordResetToken6
markResetTokenUsed6
updatePassword6
fromPandaDocResponse6
fromPandaDocResponse6
ensureDirectory6
markProcessed6
markFailed6
accrueDailyInterest6
snapshotDailyAccountBalance6
getActiveAccountsWithBalances6
deleteUser6
postInterest6
guardNonProduction6
updateLogLevelThreshold6
rejectForAdmin5
validateRequiredString5
generateTransactionDescription5
updateInvestorStatus5
logAccountStatusChange5
validateOptionalString4
int4
generateUniqueAccountNumber4
findByInvestorId4
getCurrentFileForAdmin4
__construct4
withTransaction4
generateAccountNumber4
getCurrentFileForInvestor4
retrieve4
assertInvestorOwnsPaymentMethod4
updateInterestRate4
updateLoanToValueRatio4
hashStream4
generateUniqueAccountNumber3
pickWithdrawalAmount3
getStats3
canRoleEdit3
delete3
checkEligibility3
validateCompleteRegistrationInput3
getTotalAccounts3
getTotalBalance3
makeAttachmentFilename3
freezeAccount3
unfreezeAccount3
findByIdForAdmin3
findByIdForInvestor3
getInvestorDetail3
getPasswordHash3
findById3
deleteByIds3
findInvestorById3
findInvestorByEmail3
findInvestorByUserId3
findById3
getInvestorAccountId3
getNextUnpaidScheduleEntry3
getAccountYieldRate3
create3
getAccountStatus3
__invoke3
__invoke3
getAumHistory3
findUserByEmail3
findUserByUsername3
findUserById3
findSessionByRefreshToken3
findCurrentFileEvent3
findActive3
getConfig3
findPending3
getAccountById3
getUserById3
findByKey3
findById3
from2
array2
extractExtension2
require2
getUnresolvedCount2
generatePaymentSchedule2
getAccountSummary2
investorEmailExists2
getForAdmin2
pickFeeAmount2
updateLoanConfig2
activateLoan2
logImpersonation2
__invoke2
emailExists2
usernameExists2
revokeRefreshToken2
revokeAllUserTokens2
cleanupExpiredTokens2
updateLastLogin2
incrementFailedLoginAttempts2
updateStatus2
emailExists2
getAccountBalance2
emailExistsInUsers2
emailExistsInInvestors2
getLogLevelThreshold2
accountExists2