chore: reformat code.

This commit is contained in:
James Cole
2023-06-21 12:34:58 +02:00
parent 8d87abde64
commit 3dcb35710b
799 changed files with 23319 additions and 22173 deletions

View File

@@ -76,8 +76,8 @@ class CreateController extends Controller
/**
* Create a new account.
*
* @param Request $request
* @param string $objectType
* @param Request $request
* @param string $objectType
*
* @return Factory|View
*/
@@ -134,7 +134,7 @@ class CreateController extends Controller
/**
* Store the new account.
*
* @param AccountFormRequest $request
* @param AccountFormRequest $request
*
* @return RedirectResponse|Redirector
* @throws FireflyException

View File

@@ -65,7 +65,7 @@ class DeleteController extends Controller
/**
* Delete account screen.
*
* @param Account $account
* @param Account $account
*
* @return Factory|RedirectResponse|Redirector|View
*/
@@ -90,8 +90,8 @@ class DeleteController extends Controller
/**
* Delete the account.
*
* @param Request $request
* @param Account $account
* @param Request $request
* @param Account $account
*
* @return RedirectResponse|Redirector
*/

View File

@@ -70,9 +70,9 @@ class EditController extends Controller
/**
* Edit account overview.
*
* @param Request $request
* @param Account $account
* @param AccountRepositoryInterface $repository
* @param Request $request
* @param Account $account
* @param AccountRepositoryInterface $repository
*
* @return Factory|RedirectResponse|Redirector|View
*/
@@ -178,8 +178,8 @@ class EditController extends Controller
/**
* Update the account.
*
* @param AccountFormRequest $request
* @param Account $account
* @param AccountFormRequest $request
* @param Account $account
*
* @return $this|RedirectResponse|Redirector
*/

View File

@@ -71,8 +71,8 @@ class IndexController extends Controller
}
/**
* @param Request $request
* @param string $objectType
* @param Request $request
* @param string $objectType
*
* @return Factory|View
* @throws FireflyException
@@ -127,8 +127,8 @@ class IndexController extends Controller
/**
* Show list of accounts.
*
* @param Request $request
* @param string $objectType
* @param Request $request
* @param string $objectType
*
* @return Factory|View
* @throws FireflyException

View File

@@ -77,9 +77,9 @@ class ReconcileController extends Controller
/**
* Reconciliation overview.
*
* @param Account $account
* @param Carbon|null $start
* @param Carbon|null $end
* @param Account $account
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return Factory|RedirectResponse|Redirector|View
* @throws FireflyException
@@ -154,10 +154,10 @@ class ReconcileController extends Controller
/**
* Submit a new reconciliation.
*
* @param ReconciliationStoreRequest $request
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param ReconciliationStoreRequest $request
* @param Account $account
* @param Carbon $start
* @param Carbon $end
*
* @return RedirectResponse|Redirector
* @throws DuplicateTransactionException
@@ -202,10 +202,10 @@ class ReconcileController extends Controller
/**
* Creates a reconciliation group.
*
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param string $difference
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param string $difference
*
* @return RedirectResponse|Redirector|string
* @throws DuplicateTransactionException

View File

@@ -77,10 +77,10 @@ class ShowController extends Controller
/**
* Show an account.
*
* @param Request $request
* @param Account $account
* @param Carbon|null $start
* @param Carbon|null $end
* @param Request $request
* @param Account $account
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return RedirectResponse|Redirector|Factory|View
* @throws FireflyException
@@ -162,8 +162,8 @@ class ShowController extends Controller
/**
* Show an account.
*
* @param Request $request
* @param Account $account
* @param Request $request
* @param Account $account
*
* @return RedirectResponse|Redirector|Factory|View
* @throws FireflyException
@@ -183,7 +183,7 @@ class ShowController extends Controller
$end = today(config('app.timezone'));
$today = today(config('app.timezone'));
$start = $this->repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth();
$subTitleIcon = config('firefly.subIconsByIdentifier.'.$account->accountType->type);
$subTitleIcon = config('firefly.subIconsByIdentifier.' . $account->accountType->type);
$page = (int)$request->get('page');
$pageSize = (int)app('preferences')->get('listPageSize', 50)->data;
$currency = $this->repository->getAccountCurrency($account) ?? app('amount')->getDefaultCurrency();

View File

@@ -89,7 +89,7 @@ class ConfigurationController extends Controller
/**
* Store new configuration values.
*
* @param ConfigurationRequest $request
* @param ConfigurationRequest $request
*
* @return RedirectResponse
*/

View File

@@ -107,7 +107,7 @@ class HomeController extends Controller
/**
* Send a test message to the admin.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
*/

View File

@@ -86,8 +86,8 @@ class LinkController extends Controller
/**
* Delete a link form.
*
* @param Request $request
* @param LinkType $linkType
* @param Request $request
* @param LinkType $linkType
*
* @return Factory|RedirectResponse|Redirector|View
*/
@@ -122,8 +122,8 @@ class LinkController extends Controller
/**
* Actually destroy the link.
*
* @param Request $request
* @param LinkType $linkType
* @param Request $request
* @param LinkType $linkType
*
* @return RedirectResponse|Redirector
*/
@@ -143,8 +143,8 @@ class LinkController extends Controller
/**
* Edit a link form.
*
* @param Request $request
* @param LinkType $linkType
* @param Request $request
* @param LinkType $linkType
*
* @return Factory|RedirectResponse|Redirector|View
*/
@@ -193,7 +193,7 @@ class LinkController extends Controller
/**
* Show a single link.
*
* @param LinkType $linkType
* @param LinkType $linkType
*
* @return Factory|View
*/
@@ -211,7 +211,7 @@ class LinkController extends Controller
/**
* Store the new link.
*
* @param LinkTypeFormRequest $request
* @param LinkTypeFormRequest $request
*
* @return $this|RedirectResponse|Redirector
*/
@@ -242,8 +242,8 @@ class LinkController extends Controller
/**
* Update an existing link.
*
* @param LinkTypeFormRequest $request
* @param LinkType $linkType
* @param LinkTypeFormRequest $request
* @param LinkType $linkType
*
* @return $this|RedirectResponse|Redirector
*/

View File

@@ -91,7 +91,7 @@ class UpdateController extends Controller
/**
* Post new settings.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
*/

View File

@@ -70,7 +70,7 @@ class UserController extends Controller
}
/**
* @param User $user
* @param User $user
*
* @return Application|Factory|RedirectResponse|Redirector|View
*/
@@ -88,7 +88,7 @@ class UserController extends Controller
}
/**
* @param InvitedUser $invitedUser
* @param InvitedUser $invitedUser
* @return RedirectResponse
*/
public function deleteInvite(InvitedUser $invitedUser): JsonResponse
@@ -108,7 +108,7 @@ class UserController extends Controller
/**
* Destroy a user.
*
* @param User $user
* @param User $user
*
* @return RedirectResponse|Redirector
*/
@@ -128,7 +128,7 @@ class UserController extends Controller
/**
* Edit user form.
*
* @param User $user
* @param User $user
*
* @return Factory|View
*/
@@ -191,7 +191,7 @@ class UserController extends Controller
}
/**
* @param InviteUserFormRequest $request
* @param InviteUserFormRequest $request
* @return RedirectResponse
*/
public function invite(InviteUserFormRequest $request): RedirectResponse
@@ -209,7 +209,7 @@ class UserController extends Controller
/**
* Show single user.
*
* @param User $user
* @param User $user
*
* @return Factory|View
*/
@@ -237,8 +237,8 @@ class UserController extends Controller
/**
* Update single user.
*
* @param UserFormRequest $request
* @param User $user
* @param UserFormRequest $request
* @param User $user
*
* @return $this|RedirectResponse|Redirector
*/

View File

@@ -68,7 +68,7 @@ class AttachmentController extends Controller
/**
* Form to delete an attachment.
*
* @param Attachment $attachment
* @param Attachment $attachment
*
* @return Factory|View
*/
@@ -85,8 +85,8 @@ class AttachmentController extends Controller
/**
* Destroy attachment.
*
* @param Request $request
* @param Attachment $attachment
* @param Request $request
* @param Attachment $attachment
*
* @return RedirectResponse|Redirector
*/
@@ -105,7 +105,7 @@ class AttachmentController extends Controller
/**
* Download attachment to PC.
*
* @param Attachment $attachment
* @param Attachment $attachment
*
* @return LaravelResponse
*
@@ -122,7 +122,7 @@ class AttachmentController extends Controller
$response
->header('Content-Description', 'File Transfer')
->header('Content-Type', 'application/octet-stream')
->header('Content-Disposition', 'attachment; filename='.$quoted)
->header('Content-Disposition', 'attachment; filename=' . $quoted)
->header('Content-Transfer-Encoding', 'binary')
->header('Connection', 'Keep-Alive')
->header('Expires', '0')
@@ -138,8 +138,8 @@ class AttachmentController extends Controller
/**
* Edit an attachment.
*
* @param Request $request
* @param Attachment $attachment
* @param Request $request
* @param Attachment $attachment
*
* @return Factory|View
*/
@@ -183,8 +183,8 @@ class AttachmentController extends Controller
/**
* Update attachment.
*
* @param AttachmentFormRequest $request
* @param Attachment $attachment
* @param AttachmentFormRequest $request
* @param Attachment $attachment
*
* @return RedirectResponse
*/
@@ -210,8 +210,8 @@ class AttachmentController extends Controller
/**
* View attachment in browser.
*
* @param Request $request
* @param Attachment $attachment
* @param Request $request
* @param Attachment $attachment
*
* @return LaravelResponse
* @throws FireflyException
@@ -241,7 +241,7 @@ class AttachmentController extends Controller
[
'Content-Security-Policy' => implode('; ', $csp),
'Content-Type' => $attachment->mime,
'Content-Disposition' => 'inline; filename="'.$attachment->filename.'"',
'Content-Disposition' => 'inline; filename="' . $attachment->filename . '"',
]
);
}

View File

@@ -61,8 +61,8 @@ class ForgotPasswordController extends Controller
/**
* Send a reset link to the given user.
*
* @param Request $request
* @param UserRepositoryInterface $repository
* @param Request $request
* @param UserRepositoryInterface $repository
*
* @return Factory|RedirectResponse|View
*/

View File

@@ -128,10 +128,41 @@ class LoginController extends Controller
$this->sendFailedLoginResponse($request);
}
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return $this->username;
}
/**
* Get the failed login response instance.
*
* @param Request $request
*
* @return void
*
* @throws ValidationException
*/
protected function sendFailedLoginResponse(Request $request)
{
$exception = ValidationException::withMessages(
[
$this->username() => [trans('auth.failed')],
]
);
$exception->redirectTo = route('login');
throw $exception;
}
/**
* Log the user out of the application.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector|Response
*/
@@ -168,7 +199,7 @@ class LoginController extends Controller
/**
* Show the application's login form.
*
* @param Request $request
* @param Request $request
*
* @return Factory|Application|View|Redirector|RedirectResponse
* @throws FireflyException
@@ -213,35 +244,4 @@ class LoginController extends Controller
return view('auth.login', compact('allowRegistration', 'email', 'remember', 'allowReset', 'title', 'usernameField'));
}
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return $this->username;
}
/**
* Get the failed login response instance.
*
* @param Request $request
*
* @return void
*
* @throws ValidationException
*/
protected function sendFailedLoginResponse(Request $request)
{
$exception = ValidationException::withMessages(
[
$this->username() => [trans('auth.failed')],
]
);
$exception->redirectTo = route('login');
throw $exception;
}
}

View File

@@ -78,7 +78,7 @@ class RegisterController extends Controller
/**
* Handle a registration request for the application.
*
* @param Request $request
* @param Request $request
*
* @return Application|Redirector|RedirectResponse
* @throws FireflyException
@@ -114,6 +114,30 @@ class RegisterController extends Controller
return redirect($this->redirectPath());
}
/**
* @return bool
* @throws FireflyException
*/
protected function allowedToRegister(): bool
{
// is allowed to register?
$allowRegistration = true;
try {
$singleUserMode = app('fireflyconfig')->get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
} catch (ContainerExceptionInterface | NotFoundExceptionInterface $e) {
$singleUserMode = true;
}
$userCount = User::count();
$guard = config('auth.defaults.guard');
if (true === $singleUserMode && $userCount > 0 && 'web' === $guard) {
$allowRegistration = false;
}
if ('web' !== $guard) {
$allowRegistration = false;
}
return $allowRegistration;
}
/**
* Show the application registration form if the invitation code is valid.
*
@@ -151,7 +175,7 @@ class RegisterController extends Controller
/**
* Show the application registration form.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws ContainerExceptionInterface
@@ -174,28 +198,4 @@ class RegisterController extends Controller
return view('auth.register', compact('isDemoSite', 'email', 'pageTitle'));
}
/**
* @return bool
* @throws FireflyException
*/
protected function allowedToRegister(): bool
{
// is allowed to register?
$allowRegistration = true;
try {
$singleUserMode = app('fireflyconfig')->get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
} catch (ContainerExceptionInterface|NotFoundExceptionInterface $e) {
$singleUserMode = true;
}
$userCount = User::count();
$guard = config('auth.defaults.guard');
if (true === $singleUserMode && $userCount > 0 && 'web' === $guard) {
$allowRegistration = false;
}
if ('web' !== $guard) {
$allowRegistration = false;
}
return $allowRegistration;
}
}

View File

@@ -73,7 +73,7 @@ class ResetPasswordController extends Controller
/**
* Reset the given user's password.
*
* @param Request $request
* @param Request $request
*
* @return Factory|JsonResponse|RedirectResponse|View
* @throws ValidationException
@@ -117,8 +117,8 @@ class ResetPasswordController extends Controller
*
* If no token is present, display the link request form.
*
* @param Request $request
* @param null $token
* @param Request $request
* @param null $token
*
* @return Factory|View
* @throws FireflyException

View File

@@ -54,7 +54,7 @@ class TwoFactorController extends Controller
}
/**
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
*/
@@ -99,20 +99,26 @@ class TwoFactorController extends Controller
}
/**
* @param string $mfaCode
* Each MFA history has a timestamp and a code, saving the MFA entries for 5 minutes. So if the
* submitted MFA code has been submitted in the last 5 minutes, it won't work despite being valid.
*
* @param string $mfaCode
* @param array $mfaHistory
*
* @return bool
*/
private function addToMFAHistory(string $mfaCode): void
private function inMFAHistory(string $mfaCode, array $mfaHistory): bool
{
/** @var array $mfaHistory */
$mfaHistory = Preferences::get('mfa_history', [])->data;
$entry = [
'time' => time(),
'code' => $mfaCode,
];
$mfaHistory[] = $entry;
$now = time();
foreach ($mfaHistory as $entry) {
$time = $entry['time'];
$code = $entry['code'];
if ($code === $mfaCode && $now - $time <= 300) {
return true;
}
}
Preferences::set('mfa_history', $mfaHistory);
$this->filterMFAHistory();
return false;
}
/**
@@ -138,32 +144,26 @@ class TwoFactorController extends Controller
}
/**
* Each MFA history has a timestamp and a code, saving the MFA entries for 5 minutes. So if the
* submitted MFA code has been submitted in the last 5 minutes, it won't work despite being valid.
*
* @param string $mfaCode
* @param array $mfaHistory
*
* @return bool
* @param string $mfaCode
*/
private function inMFAHistory(string $mfaCode, array $mfaHistory): bool
private function addToMFAHistory(string $mfaCode): void
{
$now = time();
foreach ($mfaHistory as $entry) {
$time = $entry['time'];
$code = $entry['code'];
if ($code === $mfaCode && $now - $time <= 300) {
return true;
}
}
/** @var array $mfaHistory */
$mfaHistory = Preferences::get('mfa_history', [])->data;
$entry = [
'time' => time(),
'code' => $mfaCode,
];
$mfaHistory[] = $entry;
return false;
Preferences::set('mfa_history', $mfaHistory);
$this->filterMFAHistory();
}
/**
* Checks if code is in users backup codes.
*
* @param string $mfaCode
* @param string $mfaCode
*
* @return bool
*/
@@ -180,7 +180,7 @@ class TwoFactorController extends Controller
/**
* Remove the used code from the list of backup codes.
*
* @param string $mfaCode
* @param string $mfaCode
*/
private function removeFromBackupCodes(string $mfaCode): void
{

View File

@@ -67,7 +67,7 @@ class CreateController extends Controller
/**
* Create a new bill.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
*/
@@ -77,7 +77,7 @@ class CreateController extends Controller
/** @var array $billPeriods */
$billPeriods = config('firefly.bill_periods');
foreach ($billPeriods as $current) {
$periods[$current] = (string)trans('firefly.repeat_freq_'.$current);
$periods[$current] = (string)trans('firefly.repeat_freq_' . $current);
}
$subTitle = (string)trans('firefly.create_new_bill');
$defaultCurrency = app('amount')->getDefaultCurrency();
@@ -94,7 +94,7 @@ class CreateController extends Controller
/**
* Store a new bill.
*
* @param BillStoreRequest $request
* @param BillStoreRequest $request
*
* @return RedirectResponse
*

View File

@@ -65,7 +65,7 @@ class DeleteController extends Controller
/**
* Delete a bill.
*
* @param Bill $bill
* @param Bill $bill
*
* @return Factory|View
*/
@@ -81,8 +81,8 @@ class DeleteController extends Controller
/**
* Destroy a bill.
*
* @param Request $request
* @param Bill $bill
* @param Request $request
* @param Bill $bill
*
* @return RedirectResponse|Redirector
*/

View File

@@ -66,8 +66,8 @@ class EditController extends Controller
/**
* Edit a bill.
*
* @param Request $request
* @param Bill $bill
* @param Request $request
* @param Bill $bill
*
* @return Factory|View
*/
@@ -78,7 +78,7 @@ class EditController extends Controller
$billPeriods = config('firefly.bill_periods');
foreach ($billPeriods as $current) {
$periods[$current] = (string)trans('firefly.'.$current);
$periods[$current] = (string)trans('firefly.' . $current);
}
$subTitle = (string)trans('firefly.edit_bill', ['name' => $bill->name]);
@@ -115,8 +115,8 @@ class EditController extends Controller
/**
* Update a bill.
*
* @param BillUpdateRequest $request
* @param Bill $bill
* @param BillUpdateRequest $request
* @param Bill $bill
*
* @return RedirectResponse
*/

View File

@@ -135,77 +135,7 @@ class IndexController extends Controller
}
/**
* Set the order of a bill.
*
* @param Request $request
* @param Bill $bill
*
* @return JsonResponse
*/
public function setOrder(Request $request, Bill $bill): JsonResponse
{
$objectGroupTitle = (string)$request->get('objectGroupTitle');
$newOrder = (int)$request->get('order');
$this->repository->setOrder($bill, $newOrder);
if ('' !== $objectGroupTitle) {
$this->repository->setObjectGroup($bill, $objectGroupTitle);
}
if ('' === $objectGroupTitle) {
$this->repository->removeObjectGroup($bill);
}
return response()->json(['data' => 'OK']);
}
/**
* @param array $bill
* @param string $range
*
* @return string
*/
private function amountPerPeriod(array $bill, string $range): string
{
$avg = bcdiv(bcadd((string)$bill['amount_min'], (string)$bill['amount_max']), '2');
Log::debug(sprintf('Amount per period for bill #%d "%s"', $bill['id'], $bill['name']));
Log::debug(sprintf('Average is %s', $avg));
// calculate amount per year:
$multiplies = [
'yearly' => '1',
'half-year' => '2',
'quarterly' => '4',
'monthly' => '12',
'weekly' => '52.17',
'daily' => '365.24',
];
$yearAmount = bcmul($avg, bcdiv($multiplies[$bill['repeat_freq']], (string)($bill['skip'] + 1)));
Log::debug(sprintf('Amount per year is %s (%s * %s / %s)', $yearAmount, $avg, $multiplies[$bill['repeat_freq']], (string)($bill['skip'] + 1)));
// per period:
$division = [
'1Y' => '1',
'6M' => '2',
'3M' => '4',
'1M' => '12',
'1W' => '52.16',
'1D' => '365.24',
'YTD' => '1',
'QTD' => '4',
'MTD' => '12',
'last7' => '52.16',
'last30' => '12',
'last90' => '4',
'last365' => '1',
];
$perPeriod = bcdiv($yearAmount, $division[$range]);
Log::debug(sprintf('Amount per %s is %s (%s / %s)', $range, $perPeriod, $yearAmount, $division[$range]));
return $perPeriod;
}
/**
* @param array $bills
* @param array $bills
*
* @return array
* @throws FireflyException
@@ -251,7 +181,54 @@ class IndexController extends Controller
}
/**
* @param array $sums
* @param array $bill
* @param string $range
*
* @return string
*/
private function amountPerPeriod(array $bill, string $range): string
{
$avg = bcdiv(bcadd((string)$bill['amount_min'], (string)$bill['amount_max']), '2');
Log::debug(sprintf('Amount per period for bill #%d "%s"', $bill['id'], $bill['name']));
Log::debug(sprintf('Average is %s', $avg));
// calculate amount per year:
$multiplies = [
'yearly' => '1',
'half-year' => '2',
'quarterly' => '4',
'monthly' => '12',
'weekly' => '52.17',
'daily' => '365.24',
];
$yearAmount = bcmul($avg, bcdiv($multiplies[$bill['repeat_freq']], (string)($bill['skip'] + 1)));
Log::debug(sprintf('Amount per year is %s (%s * %s / %s)', $yearAmount, $avg, $multiplies[$bill['repeat_freq']], (string)($bill['skip'] + 1)));
// per period:
$division = [
'1Y' => '1',
'6M' => '2',
'3M' => '4',
'1M' => '12',
'1W' => '52.16',
'1D' => '365.24',
'YTD' => '1',
'QTD' => '4',
'MTD' => '12',
'last7' => '52.16',
'last30' => '12',
'last90' => '4',
'last365' => '1',
];
$perPeriod = bcdiv($yearAmount, $division[$range]);
Log::debug(sprintf('Amount per %s is %s (%s / %s)', $range, $perPeriod, $yearAmount, $division[$range]));
return $perPeriod;
}
/**
* @param array $sums
*
* @return array
*/
@@ -266,7 +243,7 @@ class IndexController extends Controller
*/
foreach ($sums as $array) {
/**
* @var int $currencyId
* @var int $currencyId
* @var array $entry
*/
foreach ($array as $currencyId => $entry) {
@@ -287,4 +264,27 @@ class IndexController extends Controller
return $totals;
}
/**
* Set the order of a bill.
*
* @param Request $request
* @param Bill $bill
*
* @return JsonResponse
*/
public function setOrder(Request $request, Bill $bill): JsonResponse
{
$objectGroupTitle = (string)$request->get('objectGroupTitle');
$newOrder = (int)$request->get('order');
$this->repository->setOrder($bill, $newOrder);
if ('' !== $objectGroupTitle) {
$this->repository->setObjectGroup($bill, $objectGroupTitle);
}
if ('' === $objectGroupTitle) {
$this->repository->removeObjectGroup($bill);
}
return response()->json(['data' => 'OK']);
}
}

View File

@@ -77,8 +77,8 @@ class ShowController extends Controller
/**
* Rescan bills for transactions.
*
* @param Request $request
* @param Bill $bill
* @param Request $request
* @param Bill $bill
*
* @return RedirectResponse|Redirector
*/
@@ -121,8 +121,8 @@ class ShowController extends Controller
/**
* Show a bill.
*
* @param Request $request
* @param Bill $bill
* @param Request $request
* @param Bill $bill
*
* @return Factory|View
* @throws ContainerExceptionInterface

View File

@@ -77,9 +77,9 @@ class BudgetLimitController extends Controller
}
/**
* @param Budget $budget
* @param Carbon $start
* @param Carbon $end
* @param Budget $budget
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -107,8 +107,8 @@ class BudgetLimitController extends Controller
}
/**
* @param Request $request
* @param BudgetLimit $budgetLimit
* @param Request $request
* @param BudgetLimit $budgetLimit
*
* @return RedirectResponse|Redirector
*/
@@ -122,12 +122,13 @@ class BudgetLimitController extends Controller
/**
* TODO why redirect AND json response?
* @param Request $request
*
* @param Request $request
*
* @return RedirectResponse|JsonResponse
* @throws FireflyException
*/
public function store(Request $request): RedirectResponse|JsonResponse
public function store(Request $request): RedirectResponse | JsonResponse
{
Log::debug('Going to store new budget-limit.', $request->all());
// first search for existing one and update it if necessary.
@@ -202,8 +203,8 @@ class BudgetLimitController extends Controller
}
/**
* @param Request $request
* @param BudgetLimit $budgetLimit
* @param Request $request
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
*/

View File

@@ -65,7 +65,7 @@ class CreateController extends Controller
/**
* Form to create a budget.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
*/
@@ -110,7 +110,7 @@ class CreateController extends Controller
/**
* Stores a budget.
*
* @param BudgetFormStoreRequest $request
* @param BudgetFormStoreRequest $request
*
* @return RedirectResponse
* @throws FireflyException

View File

@@ -64,7 +64,7 @@ class DeleteController extends Controller
/**
* Deletes a budget.
*
* @param Budget $budget
* @param Budget $budget
*
* @return Factory|View
*/
@@ -81,8 +81,8 @@ class DeleteController extends Controller
/**
* Destroys a budget.
*
* @param Request $request
* @param Budget $budget
* @param Request $request
* @param Budget $budget
*
* @return RedirectResponse|Redirector
*/

View File

@@ -67,8 +67,8 @@ class EditController extends Controller
/**
* Budget edit form.
*
* @param Request $request
* @param Budget $budget
* @param Request $request
* @param Budget $budget
*
* @return Factory|View
*/
@@ -118,8 +118,8 @@ class EditController extends Controller
/**
* Budget update routine.
*
* @param BudgetFormUpdateRequest $request
* @param Budget $budget
* @param BudgetFormUpdateRequest $request
* @param Budget $budget
*
* @return RedirectResponse
*/

View File

@@ -88,10 +88,10 @@ class IndexController extends Controller
/**
* Show all budgets.
*
* @param Request $request
* @param Request $request
*
* @param Carbon|null $start
* @param Carbon|null $end
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return Factory|View
* @throws FireflyException
@@ -174,31 +174,8 @@ class IndexController extends Controller
}
/**
* @param Request $request
* @param BudgetRepositoryInterface $repository
*
* @return JsonResponse
*/
public function reorder(Request $request, BudgetRepositoryInterface $repository): JsonResponse
{
$budgetIds = $request->get('budgetIds');
foreach ($budgetIds as $index => $budgetId) {
$budgetId = (int)$budgetId;
$budget = $repository->find($budgetId);
if (null !== $budget) {
Log::debug(sprintf('Set budget #%d ("%s") to position %d', $budget->id, $budget->name, $index + 1));
$repository->setBudgetOrder($budget, $index + 1);
}
}
app('preferences')->mark();
return response()->json(['OK']);
}
/**
* @param Carbon $start
* @param Carbon $end
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
@@ -229,10 +206,10 @@ class IndexController extends Controller
}
/**
* @param Carbon $start
* @param Carbon $end
* @param Collection $currencies
* @param TransactionCurrency $defaultCurrency
* @param Carbon $start
* @param Carbon $end
* @param Collection $currencies
* @param TransactionCurrency $defaultCurrency
*
* @return array
*/
@@ -287,7 +264,7 @@ class IndexController extends Controller
}
/**
* @param array $budgets
* @param array $budgets
*
* @return array
*/
@@ -340,7 +317,7 @@ class IndexController extends Controller
}
// final calculation for 'left':
/**
* @var int $currencyId
* @var int $currencyId
* @var array $info
*/
foreach ($sums['budgeted'] as $currencyId => $info) {
@@ -351,4 +328,27 @@ class IndexController extends Controller
return $sums;
}
/**
* @param Request $request
* @param BudgetRepositoryInterface $repository
*
* @return JsonResponse
*/
public function reorder(Request $request, BudgetRepositoryInterface $repository): JsonResponse
{
$budgetIds = $request->get('budgetIds');
foreach ($budgetIds as $index => $budgetId) {
$budgetId = (int)$budgetId;
$budget = $repository->find($budgetId);
if (null !== $budget) {
Log::debug(sprintf('Set budget #%d ("%s") to position %d', $budget->id, $budget->name, $index + 1));
$repository->setBudgetOrder($budget, $index + 1);
}
}
app('preferences')->mark();
return response()->json(['OK']);
}
}

View File

@@ -76,9 +76,9 @@ class ShowController extends Controller
/**
* Show transactions without a budget.
*
* @param Request $request
* @param Carbon|null $start
* @param Carbon|null $end
* @param Request $request
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return Factory|View
* @throws FireflyException
@@ -116,7 +116,7 @@ class ShowController extends Controller
/**
* Shows ALL transactions without a budget.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws ContainerExceptionInterface
@@ -144,8 +144,8 @@ class ShowController extends Controller
/**
* Show a single budget.
*
* @param Request $request
* @param Budget $budget
* @param Request $request
* @param Budget $budget
*
* @return Factory|View
* @throws ContainerExceptionInterface
@@ -179,9 +179,9 @@ class ShowController extends Controller
/**
* Show a single budget by a budget limit.
*
* @param Request $request
* @param Budget $budget
* @param BudgetLimit $budgetLimit
* @param Request $request
* @param Budget $budget
* @param BudgetLimit $budgetLimit
*
* @return Factory|View
* @throws FireflyException

View File

@@ -66,7 +66,7 @@ class CreateController extends Controller
/**
* Create category.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
*/
@@ -84,7 +84,7 @@ class CreateController extends Controller
/**
* Store new category.
*
* @param CategoryFormRequest $request
* @param CategoryFormRequest $request
*
* @return $this|RedirectResponse|Redirector
* @throws FireflyException

View File

@@ -63,7 +63,7 @@ class DeleteController extends Controller
/**
* Delete a category.
*
* @param Category $category
* @param Category $category
*
* @return Factory|View
*/
@@ -80,8 +80,8 @@ class DeleteController extends Controller
/**
* Destroy a category.
*
* @param Request $request
* @param Category $category
* @param Request $request
* @param Category $category
*
* @return RedirectResponse|Redirector
*/

View File

@@ -66,8 +66,8 @@ class EditController extends Controller
/**
* Edit a category.
*
* @param Request $request
* @param Category $category
* @param Request $request
* @param Category $category
*
* @return Factory|View
*/
@@ -91,8 +91,8 @@ class EditController extends Controller
/**
* Update category.
*
* @param CategoryFormRequest $request
* @param Category $category
* @param CategoryFormRequest $request
* @param Category $category
*
* @return RedirectResponse|Redirector
*/

View File

@@ -65,7 +65,7 @@ class IndexController extends Controller
/**
* Show all categories.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws ContainerExceptionInterface

View File

@@ -73,9 +73,9 @@ class NoCategoryController extends Controller
/**
* Show transactions without a category.
*
* @param Request $request
* @param Carbon|null $start
* @param Carbon|null $end
* @param Request $request
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return Factory|View
* @throws FireflyException
@@ -116,7 +116,7 @@ class NoCategoryController extends Controller
/**
* Show all transactions without a category.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws FireflyException

View File

@@ -73,10 +73,10 @@ class ShowController extends Controller
/**
* Show a single category.
*
* @param Request $request
* @param Category $category
* @param Carbon|null $start
* @param Carbon|null $end
* @param Request $request
* @param Category $category
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return Factory|View
* @throws FireflyException
@@ -120,8 +120,8 @@ class ShowController extends Controller
/**
* Show all transactions within a category.
*
* @param Request $request
* @param Category $category
* @param Request $request
* @param Category $category
*
* @return Factory|View
* @throws ContainerExceptionInterface

View File

@@ -145,7 +145,7 @@ class AccountController extends Controller
// loop all found currencies and build the data array for the chart.
/**
* @var int $currencyId
* @var int $currencyId
* @var TransactionCurrency $currency
*/
foreach ($currencies as $currencyId => $currency) {
@@ -173,12 +173,28 @@ class AccountController extends Controller
return response()->json($data);
}
/**
* Expenses per budget for all time, as shown on account overview.
*
* @param AccountRepositoryInterface $repository
* @param Account $account
*
* @return JsonResponse
*/
public function expenseBudgetAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
{
$start = $repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth();
$end = today(config('app.timezone'));
return $this->expenseBudget($account, $start, $end);
}
/**
* Expenses per budget, as shown on account overview.
*
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param Account $account
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -232,27 +248,27 @@ class AccountController extends Controller
}
/**
* Expenses per budget for all time, as shown on account overview.
* Expenses grouped by category for account.
*
* @param AccountRepositoryInterface $repository
* @param Account $account
* @param AccountRepositoryInterface $repository
* @param Account $account
*
* @return JsonResponse
*/
public function expenseBudgetAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
public function expenseCategoryAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
{
$start = $repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth();
$end = today(config('app.timezone'));
return $this->expenseBudget($account, $start, $end);
return $this->expenseCategory($account, $start, $end);
}
/**
* Expenses per category for one single account.
*
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param Account $account
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -303,26 +319,10 @@ class AccountController extends Controller
return response()->json($data);
}
/**
* Expenses grouped by category for account.
*
* @param AccountRepositoryInterface $repository
* @param Account $account
*
* @return JsonResponse
*/
public function expenseCategoryAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
{
$start = $repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth();
$end = today(config('app.timezone'));
return $this->expenseCategory($account, $start, $end);
}
/**
* Shows the balances for all the user's frontpage accounts.
*
* @param AccountRepositoryInterface $repository
* @param AccountRepositoryInterface $repository
*
* @return JsonResponse
* @throws FireflyException
@@ -347,12 +347,28 @@ class AccountController extends Controller
return response()->json($this->accountBalanceChart($accounts, $start, $end));
}
/**
* Shows the income grouped by category for an account, in all time.
*
* @param AccountRepositoryInterface $repository
* @param Account $account
*
* @return JsonResponse
*/
public function incomeCategoryAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
{
$start = $repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth();
$end = today(config('app.timezone'));
return $this->incomeCategory($account, $start, $end);
}
/**
* Shows all income per account for each category.
*
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param Account $account
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -403,29 +419,13 @@ class AccountController extends Controller
return response()->json($data);
}
/**
* Shows the income grouped by category for an account, in all time.
*
* @param AccountRepositoryInterface $repository
* @param Account $account
*
* @return JsonResponse
*/
public function incomeCategoryAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
{
$start = $repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth();
$end = today(config('app.timezone'));
return $this->incomeCategory($account, $start, $end);
}
/**
* Shows overview of account during a single period.
*
* @param Account $account
* @param Carbon $start
* @param Account $account
* @param Carbon $start
*
* @param Carbon $end
* @param Carbon $end
*
* @return JsonResponse
* @throws FireflyException
@@ -460,15 +460,63 @@ class AccountController extends Controller
return response()->json($data);
}
/**
* @param Carbon $start
* @param Carbon $end
* @param Account $account
* @param TransactionCurrency $currency
*
* @return array
* @throws FireflyException
* @throws JsonException
*/
private function periodByCurrency(Carbon $start, Carbon $end, Account $account, TransactionCurrency $currency): array
{
$locale = app('steam')->getLocale();
$step = $this->calculateStep($start, $end);
$result = [
'label' => sprintf('%s (%s)', $account->name, $currency->symbol),
'currency_symbol' => $currency->symbol,
'currency_code' => $currency->code,
];
$entries = [];
$current = clone $start;
if ('1D' === $step) {
// per day the entire period, balance for every day.
$format = (string)trans('config.month_and_day_js', [], $locale);
$range = app('steam')->balanceInRange($account, $start, $end, $currency);
$previous = array_values($range)[0];
while ($end >= $current) {
$theDate = $current->format('Y-m-d');
$balance = $range[$theDate] ?? $previous;
$label = $current->isoFormat($format);
$entries[$label] = (float)$balance;
$previous = $balance;
$current->addDay();
}
}
if ('1W' === $step || '1M' === $step || '1Y' === $step) {
while ($end >= $current) {
$balance = (float)app('steam')->balance($account, $current, $currency);
$label = app('navigation')->periodShow($current, $step);
$entries[$label] = $balance;
$current = app('navigation')->addPeriod($current, $step, 0);
}
}
$result['entries'] = $entries;
return $result;
}
/**
* Shows the balances for a given set of dates and accounts.
*
* TODO this chart is not multi currency aware.
*
* @param Collection $accounts
* @param Collection $accounts
*
* @param Carbon $start
* @param Carbon $end
* @param Carbon $start
* @param Carbon $end
* @return JsonResponse
* @throws FireflyException
* @throws JsonException
@@ -544,7 +592,7 @@ class AccountController extends Controller
// loop all found currencies and build the data array for the chart.
/**
* @var int $currencyId
* @var int $currencyId
* @var TransactionCurrency $currency
*/
foreach ($currencies as $currencyId => $currency) {
@@ -571,52 +619,4 @@ class AccountController extends Controller
return response()->json($data);
}
/**
* @param Carbon $start
* @param Carbon $end
* @param Account $account
* @param TransactionCurrency $currency
*
* @return array
* @throws FireflyException
* @throws JsonException
*/
private function periodByCurrency(Carbon $start, Carbon $end, Account $account, TransactionCurrency $currency): array
{
$locale = app('steam')->getLocale();
$step = $this->calculateStep($start, $end);
$result = [
'label' => sprintf('%s (%s)', $account->name, $currency->symbol),
'currency_symbol' => $currency->symbol,
'currency_code' => $currency->code,
];
$entries = [];
$current = clone $start;
if ('1D' === $step) {
// per day the entire period, balance for every day.
$format = (string)trans('config.month_and_day_js', [], $locale);
$range = app('steam')->balanceInRange($account, $start, $end, $currency);
$previous = array_values($range)[0];
while ($end >= $current) {
$theDate = $current->format('Y-m-d');
$balance = $range[$theDate] ?? $previous;
$label = $current->isoFormat($format);
$entries[$label] = (float)$balance;
$previous = $balance;
$current->addDay();
}
}
if ('1W' === $step || '1M' === $step || '1Y' === $step) {
while ($end >= $current) {
$balance = (float)app('steam')->balance($account, $current, $currency);
$label = app('navigation')->periodShow($current, $step);
$entries[$label] = $balance;
$current = app('navigation')->addPeriod($current, $step, 0);
}
}
$result['entries'] = $entries;
return $result;
}
}

View File

@@ -53,7 +53,7 @@ class BillController extends Controller
/**
* Shows all bills and whether or not they've been paid this month (pie chart).
*
* @param BillRepositoryInterface $repository
* @param BillRepositoryInterface $repository
*
* @return JsonResponse
*/
@@ -107,7 +107,7 @@ class BillController extends Controller
/**
* Shows overview for a single bill.
*
* @param Bill $bill
* @param Bill $bill
*
* @return JsonResponse
* @throws FireflyException

View File

@@ -83,7 +83,7 @@ class BudgetController extends Controller
/**
* Shows overview of a single budget.
*
* @param Budget $budget
* @param Budget $budget
*
* @return JsonResponse
*/
@@ -148,8 +148,8 @@ class BudgetController extends Controller
/**
* Shows the amount left in a specific budget limit.
*
* @param Budget $budget
* @param BudgetLimit $budgetLimit
* @param Budget $budget
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
*
@@ -200,8 +200,8 @@ class BudgetController extends Controller
/**
* Shows how much is spent per asset account.
*
* @param Budget $budget
* @param BudgetLimit|null $budgetLimit
* @param Budget $budget
* @param BudgetLimit|null $budgetLimit
*
* @return JsonResponse
*/
@@ -268,8 +268,8 @@ class BudgetController extends Controller
/**
* Shows how much is spent per category.
*
* @param Budget $budget
* @param BudgetLimit|null $budgetLimit
* @param Budget $budget
* @param BudgetLimit|null $budgetLimit
*
* @return JsonResponse
*/
@@ -332,8 +332,8 @@ class BudgetController extends Controller
* Shows how much is spent per expense account.
*
*
* @param Budget $budget
* @param BudgetLimit|null $budgetLimit
* @param Budget $budget
* @param BudgetLimit|null $budgetLimit
*
* @return JsonResponse
*/
@@ -429,11 +429,11 @@ class BudgetController extends Controller
/**
* Shows a budget overview chart (spent and budgeted).
*
* @param Budget $budget
* @param TransactionCurrency $currency
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Budget $budget
* @param TransactionCurrency $currency
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -505,10 +505,10 @@ class BudgetController extends Controller
/**
* Shows a chart for transactions without a budget.
*
* @param TransactionCurrency $currency
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param TransactionCurrency $currency
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/

View File

@@ -71,10 +71,10 @@ class BudgetReportController extends Controller
/**
* Chart that groups the expenses by budget.
*
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -107,10 +107,10 @@ class BudgetReportController extends Controller
/**
* Chart that groups the expenses by budget.
*
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -144,10 +144,10 @@ class BudgetReportController extends Controller
/**
* Chart that groups expenses by the account.
*
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -181,10 +181,10 @@ class BudgetReportController extends Controller
/**
* Main overview of a budget in the budget report.
*
* @param Collection $accounts
* @param Budget $budget
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Budget $budget
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -226,13 +226,36 @@ class BudgetReportController extends Controller
return response()->json($data);
}
/**
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
/**
* Chart that groups expenses by the account.
*
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -262,27 +285,4 @@ class BudgetReportController extends Controller
return response()->json($data);
}
/**
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
}

View File

@@ -70,7 +70,7 @@ class CategoryController extends Controller
* Show an overview for a category for all time, per month/week/year.
* TODO test method, for category refactor.
*
* @param Category $category
* @param Category $category
*
* @return JsonResponse
* @throws FireflyException
@@ -102,6 +102,14 @@ class CategoryController extends Controller
return response()->json($data);
}
/**
* @return Carbon
*/
private function getDate(): Carbon
{
return today(config('app.timezone'));
}
/**
* Shows the category chart on the front page.
* TODO test method for category refactor.
@@ -133,10 +141,10 @@ class CategoryController extends Controller
* Chart report.
* TODO test method for category refactor.
*
* @param Category $category
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Category $category
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -158,88 +166,13 @@ class CategoryController extends Controller
return response()->json($data);
}
/**
* Chart for period for transactions without a category.
* TODO test me.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
public function reportPeriodNoCategory(Collection $accounts, Carbon $start, Carbon $end): JsonResponse
{
$cache = new CacheProperties();
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty('chart.category.period.no-cat');
$cache->addProperty($accounts->pluck('id')->toArray());
if ($cache->has()) {
return response()->json($cache->get());
}
$data = $this->reportPeriodChart($accounts, $start, $end, null);
$cache->store($data);
return response()->json($data);
}
/**
* Chart for a specific period.
* TODO test me, for category refactor.
*
* @param Category $category
* @param Carbon $date
*
* @return JsonResponse
* @throws FireflyException
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function specificPeriod(Category $category, Carbon $date): JsonResponse
{
$range = app('navigation')->getViewRange(false);
$start = app('navigation')->startOfPeriod($date, $range);
$end = session()->get('end');
if ($end < $start) {
[$end, $start] = [$start, $end];
}
$cache = new CacheProperties();
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty($category->id);
$cache->addProperty('chart.category.period-chart');
if ($cache->has()) {
return response()->json($cache->get());
}
/** @var WholePeriodChartGenerator $chartGenerator */
$chartGenerator = app(WholePeriodChartGenerator::class);
$chartData = $chartGenerator->generate($category, $start, $end);
$data = $this->generator->multiSet($chartData);
$cache->store($data);
return response()->json($data);
}
/**
* @return Carbon
*/
private function getDate(): Carbon
{
return today(config('app.timezone'));
}
/**
* Generate report chart for either with or without category.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Category|null $category
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Category|null $category
*
* @return array
*/
@@ -318,4 +251,71 @@ class CategoryController extends Controller
return $this->generator->multiSet($chartData);
}
/**
* Chart for period for transactions without a category.
* TODO test me.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
public function reportPeriodNoCategory(Collection $accounts, Carbon $start, Carbon $end): JsonResponse
{
$cache = new CacheProperties();
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty('chart.category.period.no-cat');
$cache->addProperty($accounts->pluck('id')->toArray());
if ($cache->has()) {
return response()->json($cache->get());
}
$data = $this->reportPeriodChart($accounts, $start, $end, null);
$cache->store($data);
return response()->json($data);
}
/**
* Chart for a specific period.
* TODO test me, for category refactor.
*
* @param Category $category
* @param Carbon $date
*
* @return JsonResponse
* @throws FireflyException
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function specificPeriod(Category $category, Carbon $date): JsonResponse
{
$range = app('navigation')->getViewRange(false);
$start = app('navigation')->startOfPeriod($date, $range);
$end = session()->get('end');
if ($end < $start) {
[$end, $start] = [$start, $end];
}
$cache = new CacheProperties();
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty($category->id);
$cache->addProperty('chart.category.period-chart');
if ($cache->has()) {
return response()->json($cache->get());
}
/** @var WholePeriodChartGenerator $chartGenerator */
$chartGenerator = app(WholePeriodChartGenerator::class);
$chartData = $chartGenerator->generate($category, $start, $end);
$data = $this->generator->multiSet($chartData);
$cache->store($data);
return response()->json($data);
}
}

View File

@@ -67,10 +67,10 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -103,10 +103,10 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -138,10 +138,10 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -173,10 +173,10 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -209,10 +209,10 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -245,10 +245,10 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Category $category
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Category $category
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*
@@ -320,10 +320,35 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* TODO duplicate function
*
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -356,10 +381,10 @@ class CategoryReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -390,29 +415,4 @@ class CategoryReportController extends Controller
return response()->json($data);
}
/**
* TODO duplicate function
*
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
}

View File

@@ -66,10 +66,10 @@ class DoubleReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -101,10 +101,10 @@ class DoubleReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -136,10 +136,10 @@ class DoubleReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -171,10 +171,10 @@ class DoubleReportController extends Controller
}
/**
* @param Collection $accounts
* @param Account $account
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Account $account
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*
@@ -248,10 +248,60 @@ class DoubleReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
* TODO duplicate function
*
* @param Collection $accounts
* @param int $id
* @param string $name
* @param null|string $iban
*
* @return string
*/
private function getCounterpartName(Collection $accounts, int $id, string $name, ?string $iban): string
{
/** @var Account $account */
foreach ($accounts as $account) {
if ($account->name === $name && $account->id !== $id) {
return $account->name;
}
if (null !== $account->iban && $account->iban === $iban && $account->id !== $id) {
return $account->iban;
}
}
return $name;
}
/**
* TODO duplicate function
*
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
/**
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -308,10 +358,10 @@ class DoubleReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $others
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -366,54 +416,4 @@ class DoubleReportController extends Controller
return response()->json($data);
}
/**
* TODO duplicate function
*
* @param Collection $accounts
* @param int $id
* @param string $name
* @param null|string $iban
*
* @return string
*/
private function getCounterpartName(Collection $accounts, int $id, string $name, ?string $iban): string
{
/** @var Account $account */
foreach ($accounts as $account) {
if ($account->name === $name && $account->id !== $id) {
return $account->name;
}
if (null !== $account->iban && $account->iban === $iban && $account->id !== $id) {
return $account->iban;
}
}
return $name;
}
/**
* TODO duplicate function
*
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
}

View File

@@ -73,10 +73,10 @@ class ExpenseReportController extends Controller
*
* TODO this chart is not multi currency aware.
*
* @param Collection $accounts
* @param Collection $expense
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $expense
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
* @throws JsonException
@@ -106,34 +106,34 @@ class ExpenseReportController extends Controller
// prep chart data:
/**
* @var string $name
* @var string $name
* @var Collection $combination
*/
foreach ($combined as $name => $combination) {
// first is always expense account:
/** @var Account $exp */
$exp = $combination->first();
$chartData[$exp->id.'-in'] = [
$exp = $combination->first();
$chartData[$exp->id . '-in'] = [
'label' => sprintf('%s (%s)', $name, (string)trans('firefly.income')),
'type' => 'bar',
'yAxisID' => 'y-axis-0',
'entries' => [],
];
$chartData[$exp->id.'-out'] = [
$chartData[$exp->id . '-out'] = [
'label' => sprintf('%s (%s)', $name, (string)trans('firefly.expenses')),
'type' => 'bar',
'yAxisID' => 'y-axis-0',
'entries' => [],
];
// total in, total out:
$chartData[$exp->id.'-total-in'] = [
$chartData[$exp->id . '-total-in'] = [
'label' => sprintf('%s (%s)', $name, (string)trans('firefly.sum_of_income')),
'type' => 'line',
'fill' => false,
'yAxisID' => 'y-axis-1',
'entries' => [],
];
$chartData[$exp->id.'-total-out'] = [
$chartData[$exp->id . '-total-out'] = [
'label' => sprintf('%s (%s)', $name, (string)trans('firefly.sum_of_expenses')),
'type' => 'line',
'fill' => false,
@@ -158,10 +158,10 @@ class ExpenseReportController extends Controller
// first is always expense account:
/** @var Account $exp */
$exp = $combination->first();
$labelIn = $exp->id.'-in';
$labelOut = $exp->id.'-out';
$labelSumIn = $exp->id.'-total-in';
$labelSumOut = $exp->id.'-total-out';
$labelIn = $exp->id . '-in';
$labelOut = $exp->id . '-out';
$labelSumIn = $exp->id . '-total-in';
$labelSumOut = $exp->id . '-total-out';
$currentIncome = bcmul($income[$name] ?? '0', '-1');
$currentExpense = $expenses[$name] ?? '0';

View File

@@ -61,8 +61,8 @@ class PiggyBankController extends Controller
*
* TODO this chart is not multi currency aware.
*
* @param PiggyBankRepositoryInterface $repository
* @param PiggyBank $piggyBank
* @param PiggyBankRepositoryInterface $repository
* @param PiggyBank $piggyBank
*
* @return JsonResponse
* @throws FireflyException

View File

@@ -67,9 +67,9 @@ class ReportController extends Controller
* This chart, by default, is shown on the multi-year and year report pages,
* which means that giving it a 2 week "period" should be enough granularity.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
* @throws FireflyException
@@ -120,7 +120,7 @@ class ReportController extends Controller
$label = $current->isoFormat((string)trans('config.month_and_day_js', [], $locale));
if (!array_key_exists($currencyId, $chartData)) {
$chartData[$currencyId] = [
'label' => 'Net worth in '.$netWorthItem['currency']->name,
'label' => 'Net worth in ' . $netWorthItem['currency']->name,
'type' => 'line',
'currency_symbol' => $netWorthItem['currency']->symbol,
'currency_code' => $netWorthItem['currency']->code,
@@ -141,9 +141,9 @@ class ReportController extends Controller
/**
* Shows income and expense, debit/credit: operations.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
* @throws JsonException

View File

@@ -68,10 +68,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -104,10 +104,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -140,10 +140,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -176,10 +176,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -212,10 +212,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -250,10 +250,10 @@ class TagReportController extends Controller
/**
* Generate main tag overview chart.
*
* @param Collection $accounts
* @param Tag $tag
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Tag $tag
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*
@@ -325,10 +325,35 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* TODO duplicate function
*
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -361,10 +386,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -397,10 +422,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -431,10 +456,10 @@ class TagReportController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -463,29 +488,4 @@ class TagReportController extends Controller
return response()->json($data);
}
/**
* TODO duplicate function
*
* @param Carbon $start
* @param Carbon $end
*
* @return array
*/
private function makeEntries(Carbon $start, Carbon $end): array
{
$return = [];
$format = app('navigation')->preferredCarbonLocalizedFormat($start, $end);
$preferredRange = app('navigation')->preferredRangeFormat($start, $end);
$currentStart = clone $start;
while ($currentStart <= $end) {
$currentEnd = app('navigation')->endOfPeriod($currentStart, $preferredRange);
$key = $currentStart->isoFormat($format);
$return[$key] = '0';
$currentStart = clone $currentEnd;
$currentStart->addDay()->startOfDay();
}
return $return;
}
}

View File

@@ -50,8 +50,8 @@ class TransactionController extends Controller
}
/**
* @param Carbon $start
* @param Carbon $end
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -92,9 +92,9 @@ class TransactionController extends Controller
}
/**
* @param string $objectType
* @param Carbon $start
* @param Carbon $end
* @param string $objectType
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -145,9 +145,9 @@ class TransactionController extends Controller
}
/**
* @param string $objectType
* @param Carbon $start
* @param Carbon $end
* @param string $objectType
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/
@@ -198,9 +198,9 @@ class TransactionController extends Controller
}
/**
* @param string $objectType
* @param Carbon $start
* @param Carbon $end
* @param string $objectType
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/

View File

@@ -72,7 +72,7 @@ class CurrencyController extends Controller
/**
* Create a currency.
*
* @param Request $request
* @param Request $request
*
* @return Factory|RedirectResponse|Redirector|View
*/
@@ -103,7 +103,7 @@ class CurrencyController extends Controller
/**
* Make currency the default currency.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
* @throws FireflyException
@@ -132,8 +132,8 @@ class CurrencyController extends Controller
/**
* Deletes a currency.
*
* @param Request $request
* @param TransactionCurrency $currency
* @param Request $request
* @param TransactionCurrency $currency
*
* @return Factory|RedirectResponse|Redirector|View
*/
@@ -168,8 +168,8 @@ class CurrencyController extends Controller
/**
* Destroys a currency.
*
* @param Request $request
* @param TransactionCurrency $currency
* @param Request $request
* @param TransactionCurrency $currency
*
* @return RedirectResponse|Redirector
*/
@@ -207,7 +207,7 @@ class CurrencyController extends Controller
}
/**
* @param Request $request
* @param Request $request
* @return JsonResponse
* @throws FireflyException
*/
@@ -260,8 +260,8 @@ class CurrencyController extends Controller
/**
* Edit a currency.
*
* @param Request $request
* @param TransactionCurrency $currency
* @param Request $request
* @param TransactionCurrency $currency
*
* @return Factory|RedirectResponse|Redirector|View
*/
@@ -299,7 +299,7 @@ class CurrencyController extends Controller
}
/**
* @param Request $request
* @param Request $request
* @return JsonResponse
*/
public function enableCurrency(Request $request): JsonResponse
@@ -323,7 +323,7 @@ class CurrencyController extends Controller
/**
* Show overview of currencies.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws ContainerExceptionInterface
@@ -354,7 +354,7 @@ class CurrencyController extends Controller
/**
* Store new currency.
*
* @param CurrencyFormRequest $request
* @param CurrencyFormRequest $request
*
* @return $this|RedirectResponse|Redirector
*/
@@ -364,7 +364,7 @@ class CurrencyController extends Controller
$user = auth()->user();
$data = $request->getCurrencyData();
if (!$this->userRepository->hasRole($user, 'owner')) {
Log::error('User '.auth()->user()->id.' is not admin, but tried to store a currency.');
Log::error('User ' . auth()->user()->id . ' is not admin, but tried to store a currency.');
Log::channel('audit')->info('Tried to create (POST) currency without admin rights.', $data);
return redirect($this->getPreviousUrl('currencies.create.url'));
@@ -397,8 +397,8 @@ class CurrencyController extends Controller
/**
* Updates a currency.
*
* @param CurrencyFormRequest $request
* @param TransactionCurrency $currency
* @param CurrencyFormRequest $request
* @param TransactionCurrency $currency
*
* @return RedirectResponse|Redirector
*/

View File

@@ -78,7 +78,7 @@ class DebugController extends Controller
/**
* Clear log and session.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
* @throws FireflyException
@@ -109,7 +109,7 @@ class DebugController extends Controller
/**
* Show debug info.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws FireflyException
@@ -212,7 +212,7 @@ class DebugController extends Controller
}
if ('' !== $logContent) {
// last few lines
$logContent = 'Truncated from this point <----|'.substr($logContent, -8192);
$logContent = 'Truncated from this point <----|' . substr($logContent, -8192);
}
return view(
@@ -261,7 +261,7 @@ class DebugController extends Controller
/**
* Flash all types of messages.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
*/

View File

@@ -92,7 +92,7 @@ class IndexController extends Controller
$response
->header('Content-Description', 'File Transfer')
->header('Content-Type', 'text/x-csv')
->header('Content-Disposition', 'attachment; filename='.$quoted)
->header('Content-Disposition', 'attachment; filename=' . $quoted)
//->header('Content-Transfer-Encoding', 'binary')
->header('Connection', 'Keep-Alive')
->header('Expires', '0')

View File

@@ -60,7 +60,7 @@ class HomeController extends Controller
/**
* Change index date range.
*
* @param Request $request
* @param Request $request
*
* @return JsonResponse
* @throws Exception
@@ -111,7 +111,7 @@ class HomeController extends Controller
/**
* Show index.
*
* @param AccountRepositoryInterface $repository
* @param AccountRepositoryInterface $repository
*
* @return mixed
* @throws FireflyException

View File

@@ -47,8 +47,8 @@ class JavascriptController extends Controller
/**
* Show info about accounts.
*
* @param AccountRepositoryInterface $repository
* @param CurrencyRepositoryInterface $currencyRepository
* @param AccountRepositoryInterface $repository
* @param CurrencyRepositoryInterface $currencyRepository
*
* @return Response
* @throws ContainerExceptionInterface
@@ -81,7 +81,7 @@ class JavascriptController extends Controller
/**
* Get info about currencies.
*
* @param CurrencyRepositoryInterface $repository
* @param CurrencyRepositoryInterface $repository
*
* @return Response
*/
@@ -104,9 +104,9 @@ class JavascriptController extends Controller
/**
* Show some common variables to be used in scripts.
*
* @param Request $request
* @param AccountRepositoryInterface $repository
* @param CurrencyRepositoryInterface $currencyRepository
* @param Request $request
* @param AccountRepositoryInterface $repository
* @param CurrencyRepositoryInterface $currencyRepository
*
* @return Response
* @throws FireflyException
@@ -149,7 +149,7 @@ class JavascriptController extends Controller
/**
* Bit of a hack but OK.
*
* @param Request $request
* @param Request $request
*
* @return Response
*/

View File

@@ -127,7 +127,7 @@ class BoxController extends Controller
/**
* Current total balance.
*
* @param CurrencyRepositoryInterface $repository
* @param CurrencyRepositoryInterface $repository
*
* @return JsonResponse
*/

View File

@@ -68,9 +68,9 @@ class BudgetController extends Controller
}
/**
* @param TransactionCurrency $currency
* @param Carbon $start
* @param Carbon $end
* @param TransactionCurrency $currency
* @param Carbon $start
* @param Carbon $end
*
* @return JsonResponse
*/

View File

@@ -39,7 +39,7 @@ class FrontpageController extends Controller
/**
* Piggy bank pie chart.
*
* @param PiggyBankRepositoryInterface $repository
* @param PiggyBankRepositoryInterface $repository
*
* @return JsonResponse
* @throws FireflyException

View File

@@ -39,8 +39,8 @@ class IntroController extends Controller
/**
* Returns the introduction wizard for a page.
*
* @param string $route
* @param string|null $specificPage
* @param string $route
* @param string|null $specificPage
*
* @return JsonResponse
*/
@@ -74,7 +74,7 @@ class IntroController extends Controller
/**
* Returns true if there is a general outro step.
*
* @param string $route
* @param string $route
*
* @return bool
*/
@@ -99,8 +99,8 @@ class IntroController extends Controller
/**
* Enable the boxes for a specific page again.
*
* @param string $route
* @param string|null $specialPage
* @param string $route
* @param string|null $specialPage
*
* @return JsonResponse
* @throws FireflyException
@@ -109,9 +109,9 @@ class IntroController extends Controller
{
$specialPage = $specialPage ?? '';
$route = str_replace('.', '_', $route);
$key = 'shown_demo_'.$route;
$key = 'shown_demo_' . $route;
if ('' !== $specialPage) {
$key .= '_'.$specialPage;
$key .= '_' . $specialPage;
}
Log::debug(sprintf('Going to mark the following route as NOT done: %s with special "%s" (%s)', $route, $specialPage, $key));
app('preferences')->set($key, false);
@@ -123,8 +123,8 @@ class IntroController extends Controller
/**
* Set that you saw them.
*
* @param string $route
* @param string|null $specialPage
* @param string $route
* @param string|null $specialPage
*
* @return JsonResponse
* @throws FireflyException
@@ -132,9 +132,9 @@ class IntroController extends Controller
public function postFinished(string $route, string $specialPage = null): JsonResponse
{
$specialPage = $specialPage ?? '';
$key = 'shown_demo_'.$route;
$key = 'shown_demo_' . $route;
if ('' !== $specialPage) {
$key .= '_'.$specialPage;
$key .= '_' . $specialPage;
}
Log::debug(sprintf('Going to mark the following route as done: %s with special "%s" (%s)', $route, $specialPage, $key));
app('preferences')->set($key, true);

View File

@@ -70,10 +70,10 @@ class ReconcileController extends Controller
/**
* Overview of reconciliation.
*
* @param Request $request
* @param Account|null $account
* @param Carbon|null $start
* @param Carbon|null $end
* @param Request $request
* @param Account|null $account
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return JsonResponse
* @throws FireflyException
@@ -169,12 +169,52 @@ class ReconcileController extends Controller
return response()->json($return);
}
/**
* @param Account $account
* @param TransactionCurrency $currency
* @param array $journal
* @param string $amount
*
* @return string
*/
private function processJournal(Account $account, TransactionCurrency $currency, array $journal, string $amount): string
{
$toAdd = '0';
Log::debug(sprintf('User submitted %s #%d: "%s"', $journal['transaction_type_type'], $journal['transaction_journal_id'], $journal['description']));
// not much magic below we need to cover using tests.
if ($account->id === $journal['source_account_id']) {
if ($currency->id === $journal['currency_id']) {
$toAdd = $journal['amount'];
}
if (null !== $journal['foreign_currency_id'] && $journal['foreign_currency_id'] === $currency->id) {
$toAdd = $journal['foreign_amount'];
}
}
if ($account->id === $journal['destination_account_id']) {
if ($currency->id === $journal['currency_id']) {
$toAdd = bcmul($journal['amount'], '-1');
}
if (null !== $journal['foreign_currency_id'] && $journal['foreign_currency_id'] === $currency->id) {
$toAdd = bcmul($journal['foreign_amount'], '-1');
}
}
Log::debug(sprintf('Going to add %s to %s', $toAdd, $amount));
$amount = bcadd($amount, $toAdd);
Log::debug(sprintf('Result is %s', $amount));
return $amount;
}
/**
* Returns a list of transactions in a modal.
*
* @param Account $account
* @param Carbon|null $start
* @param Carbon|null $end
* @param Account $account
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return JsonResponse
* @throws FireflyException
@@ -225,51 +265,11 @@ class ReconcileController extends Controller
return response()->json(['html' => $html, 'startBalance' => $startBalance, 'endBalance' => $endBalance]);
}
/**
* @param Account $account
* @param TransactionCurrency $currency
* @param array $journal
* @param string $amount
*
* @return string
*/
private function processJournal(Account $account, TransactionCurrency $currency, array $journal, string $amount): string
{
$toAdd = '0';
Log::debug(sprintf('User submitted %s #%d: "%s"', $journal['transaction_type_type'], $journal['transaction_journal_id'], $journal['description']));
// not much magic below we need to cover using tests.
if ($account->id === $journal['source_account_id']) {
if ($currency->id === $journal['currency_id']) {
$toAdd = $journal['amount'];
}
if (null !== $journal['foreign_currency_id'] && $journal['foreign_currency_id'] === $currency->id) {
$toAdd = $journal['foreign_amount'];
}
}
if ($account->id === $journal['destination_account_id']) {
if ($currency->id === $journal['currency_id']) {
$toAdd = bcmul($journal['amount'], '-1');
}
if (null !== $journal['foreign_currency_id'] && $journal['foreign_currency_id'] === $currency->id) {
$toAdd = bcmul($journal['foreign_amount'], '-1');
}
}
Log::debug(sprintf('Going to add %s to %s', $toAdd, $amount));
$amount = bcadd($amount, $toAdd);
Log::debug(sprintf('Result is %s', $amount));
return $amount;
}
/**
* "fix" amounts to make it easier on the reconciliation overview:
*
* @param Account $account
* @param array $array
* @param Account $account
* @param array $array
*
* @return array
*/

View File

@@ -63,7 +63,7 @@ class RecurrenceController extends Controller
/**
* Shows all events for a repetition. Used in calendar.
*
* @param Request $request
* @param Request $request
*
* @return JsonResponse
*
@@ -123,7 +123,7 @@ class RecurrenceController extends Controller
foreach ($occurrences as $current) {
if ($current->gte($start)) {
$event = [
'id' => $repetitionType.$firstDate->format('Ymd'),
'id' => $repetitionType . $firstDate->format('Ymd'),
'title' => 'X',
'allDay' => true,
'start' => $current->format('Y-m-d'),
@@ -141,7 +141,7 @@ class RecurrenceController extends Controller
/**
* Suggests repetition moments.
*
* @param Request $request
* @param Request $request
*
* @return JsonResponse
* @throws FireflyException

View File

@@ -38,7 +38,7 @@ class RuleController extends Controller
/**
* Render HTML form for rule action.
*
* @param Request $request
* @param Request $request
*
* @return JsonResponse
* @throws FireflyException
@@ -49,7 +49,7 @@ class RuleController extends Controller
$keys = array_keys(config('firefly.rule-actions'));
$actions = [];
foreach ($keys as $key) {
$actions[$key] = (string)trans('firefly.rule_action_'.$key.'_choice');
$actions[$key] = (string)trans('firefly.rule_action_' . $key . '_choice');
}
try {
$view = view('rules.partials.action', compact('actions', 'count'))->render();
@@ -65,7 +65,7 @@ class RuleController extends Controller
/**
* Render HTML for rule trigger.
*
* @param Request $request
* @param Request $request
*
* @return JsonResponse
* @throws FireflyException

View File

@@ -85,8 +85,8 @@ class NewUserController extends Controller
/**
* Store his new settings.
*
* @param NewUserFormRequest $request
* @param CurrencyRepositoryInterface $currencyRepository
* @param NewUserFormRequest $request
* @param CurrencyRepositoryInterface $currencyRepository
*
* @return RedirectResponse|Redirector
* @throws FireflyException

View File

@@ -62,7 +62,7 @@ class DeleteController extends Controller
/**
* Delete a piggy bank.
*
* @param ObjectGroup $objectGroup
* @param ObjectGroup $objectGroup
*
* @return Factory|View
*/
@@ -80,7 +80,7 @@ class DeleteController extends Controller
/**
* Destroy the piggy bank.
*
* @param ObjectGroup $objectGroup
* @param ObjectGroup $objectGroup
*
* @return RedirectResponse
*/

View File

@@ -65,7 +65,7 @@ class EditController extends Controller
/**
* Edit an object group.
*
* @param ObjectGroup $objectGroup
* @param ObjectGroup $objectGroup
*
* @return Factory|View
*/
@@ -85,8 +85,8 @@ class EditController extends Controller
/**
* Update a piggy bank.
*
* @param ObjectGroupFormRequest $request
* @param ObjectGroup $objectGroup
* @param ObjectGroupFormRequest $request
* @param ObjectGroup $objectGroup
*
* @return Application|RedirectResponse|Redirector
*/

View File

@@ -75,8 +75,8 @@ class IndexController extends Controller
}
/**
* @param Request $request
* @param ObjectGroup $objectGroup
* @param Request $request
* @param ObjectGroup $objectGroup
*
* @return JsonResponse
*/

View File

@@ -68,7 +68,7 @@ class AmountController extends Controller
/**
* Add money to piggy bank.
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return Factory|View
*/
@@ -89,7 +89,7 @@ class AmountController extends Controller
/**
* Add money to piggy bank (for mobile devices).
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return Factory|View
*/
@@ -113,8 +113,8 @@ class AmountController extends Controller
/**
* Add money to piggy bank.
*
* @param Request $request
* @param PiggyBank $piggyBank
* @param Request $request
* @param PiggyBank $piggyBank
*
* @return RedirectResponse
*/
@@ -140,7 +140,7 @@ class AmountController extends Controller
return redirect(route('piggy-banks.index'));
}
Log::error('Cannot add '.$amount.' because canAddAmount returned false.');
Log::error('Cannot add ' . $amount . ' because canAddAmount returned false.');
session()->flash(
'error',
(string)trans(
@@ -155,8 +155,8 @@ class AmountController extends Controller
/**
* Remove money from piggy bank.
*
* @param Request $request
* @param PiggyBank $piggyBank
* @param Request $request
* @param PiggyBank $piggyBank
*
* @return RedirectResponse
*/
@@ -197,7 +197,7 @@ class AmountController extends Controller
/**
* Remove money from piggy bank form.
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return Factory|View
*/
@@ -212,7 +212,7 @@ class AmountController extends Controller
/**
* Remove money from piggy bank (for mobile devices).
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return Factory|View
*/

View File

@@ -86,7 +86,7 @@ class CreateController extends Controller
/**
* Store a new piggy bank.
*
* @param PiggyBankStoreRequest $request
* @param PiggyBankStoreRequest $request
*
* @return RedirectResponse|Redirector
* @throws FireflyException

View File

@@ -62,7 +62,7 @@ class DeleteController extends Controller
/**
* Delete a piggy bank.
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return Factory|View
*/
@@ -79,7 +79,7 @@ class DeleteController extends Controller
/**
* Destroy the piggy bank.
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return RedirectResponse
*/

View File

@@ -70,7 +70,7 @@ class EditController extends Controller
/**
* Edit a piggy bank.
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return Factory|View
*/
@@ -113,8 +113,8 @@ class EditController extends Controller
/**
* Update a piggy bank.
*
* @param PiggyBankUpdateRequest $request
* @param PiggyBank $piggyBank
* @param PiggyBankUpdateRequest $request
* @param PiggyBank $piggyBank
*
* @return RedirectResponse|Redirector
*/

View File

@@ -74,7 +74,7 @@ class IndexController extends Controller
*
* TODO very complicated function.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws FireflyException
@@ -145,30 +145,7 @@ class IndexController extends Controller
}
/**
* Set the order of a piggy bank.
*
* @param Request $request
* @param PiggyBank $piggyBank
*
* @return JsonResponse
*/
public function setOrder(Request $request, PiggyBank $piggyBank): JsonResponse
{
$objectGroupTitle = (string)$request->get('objectGroupTitle');
$newOrder = (int)$request->get('order');
$this->piggyRepos->setOrder($piggyBank, $newOrder);
if ('' !== $objectGroupTitle) {
$this->piggyRepos->setObjectGroup($piggyBank, $objectGroupTitle);
}
if ('' === $objectGroupTitle) {
$this->piggyRepos->removeObjectGroup($piggyBank);
}
return response()->json(['data' => 'OK']);
}
/**
* @param array $piggyBanks
* @param array $piggyBanks
*
* @return array
*/
@@ -206,4 +183,27 @@ class IndexController extends Controller
return $piggyBanks;
}
/**
* Set the order of a piggy bank.
*
* @param Request $request
* @param PiggyBank $piggyBank
*
* @return JsonResponse
*/
public function setOrder(Request $request, PiggyBank $piggyBank): JsonResponse
{
$objectGroupTitle = (string)$request->get('objectGroupTitle');
$newOrder = (int)$request->get('order');
$this->piggyRepos->setOrder($piggyBank, $newOrder);
if ('' !== $objectGroupTitle) {
$this->piggyRepos->setObjectGroup($piggyBank, $objectGroupTitle);
}
if ('' === $objectGroupTitle) {
$this->piggyRepos->removeObjectGroup($piggyBank);
}
return response()->json(['data' => 'OK']);
}
}

View File

@@ -66,7 +66,7 @@ class ShowController extends Controller
/**
* Show a single piggy bank.
*
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return Factory|View
* @throws FireflyException

View File

@@ -40,7 +40,7 @@ class ReportController extends Controller
/**
* Generate popup view.
*
* @param Request $request
* @param Request $request
*
* @return JsonResponse
* @throws FireflyException

View File

@@ -65,7 +65,7 @@ class PreferencesController extends Controller
/**
* Show overview of preferences.
*
* @param AccountRepositoryInterface $repository
* @param AccountRepositoryInterface $repository
*
* @return Factory|View
* @throws FireflyException
@@ -106,7 +106,7 @@ class PreferencesController extends Controller
$slackUrl = app('preferences')->get('slack_webhook_url', '')->data;
$customFiscalYear = app('preferences')->get('customFiscalYear', 0)->data;
$fiscalYearStartStr = app('preferences')->get('fiscalYearStart', '01-01')->data;
$fiscalYearStart = date('Y').'-'.$fiscalYearStartStr;
$fiscalYearStart = date('Y') . '-' . $fiscalYearStartStr;
$tjOptionalFields = app('preferences')->get('transaction_journal_optional_fields', [])->data;
$availableDarkModes = config('firefly.available_dark_modes');
@@ -159,7 +159,7 @@ class PreferencesController extends Controller
/**
* Store new preferences.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
* @throws FireflyException

View File

@@ -95,55 +95,10 @@ class ProfileController extends Controller
$this->middleware(IsDemoUser::class)->except(['index']);
}
/**
* Change your email address.
*
* @param Request $request
*
* @return Factory|RedirectResponse|View
*/
public function changeEmail(Request $request): Factory|RedirectResponse|View
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
return redirect(route('profile.index'));
}
$title = auth()->user()->email;
$email = auth()->user()->email;
$subTitle = (string)trans('firefly.change_your_email');
$subTitleIcon = 'fa-envelope';
return view('profile.change-email', compact('title', 'subTitle', 'subTitleIcon', 'email'));
}
/**
* Change your password.
*
* @param Request $request
*
* @return Factory|RedirectResponse|Redirector|View
*/
public function changePassword(Request $request)
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
return redirect(route('profile.index'));
}
$title = auth()->user()->email;
$subTitle = (string)trans('firefly.change_your_password');
$subTitleIcon = 'fa-key';
return view('profile.change-password', compact('title', 'subTitle', 'subTitleIcon'));
}
/**
* View that generates a 2FA code for the user.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View|RedirectResponse
* @throws IncompatibleWithGoogleAuthenticatorException
@@ -152,7 +107,7 @@ class ProfileController extends Controller
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function code(Request $request): Factory|View|RedirectResponse
public function code(Request $request): Factory | View | RedirectResponse
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
@@ -201,14 +156,14 @@ class ProfileController extends Controller
/**
* Screen to confirm email change.
*
* @param UserRepositoryInterface $repository
* @param string $token
* @param UserRepositoryInterface $repository
* @param string $token
*
* @return RedirectResponse|Redirector
*
* @throws FireflyException
*/
public function confirmEmailChange(UserRepositoryInterface $repository, string $token): RedirectResponse|Redirector
public function confirmEmailChange(UserRepositoryInterface $repository, string $token): RedirectResponse | Redirector
{
if (!$this->internalAuth) {
throw new FireflyException(trans('firefly.external_user_mgt_disabled'));
@@ -238,11 +193,11 @@ class ProfileController extends Controller
/**
* Delete your account view.
*
* @param Request $request
* @param Request $request
*
* @return View|RedirectResponse
*/
public function deleteAccount(Request $request): View|RedirectResponse
public function deleteAccount(Request $request): View | RedirectResponse
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
@@ -260,7 +215,7 @@ class ProfileController extends Controller
* Delete 2FA routine.
*
*/
public function deleteCode(Request $request): RedirectResponse|Redirector
public function deleteCode(Request $request): RedirectResponse | Redirector
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
@@ -288,7 +243,7 @@ class ProfileController extends Controller
* Enable 2FA screen.
*
*/
public function enable2FA(Request $request): RedirectResponse|Redirector
public function enable2FA(Request $request): RedirectResponse | Redirector
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
@@ -320,7 +275,7 @@ class ProfileController extends Controller
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function index(): Factory|View
public function index(): Factory | View
{
/** @var User $user */
$user = auth()->user();
@@ -335,7 +290,7 @@ class ProfileController extends Controller
if (0 === $count) {
/** @var ClientRepository $repository */
$repository = app(ClientRepository::class);
$repository->createPersonalAccessClient(null, config('app.name').' Personal Access Client', 'http://localhost');
$repository->createPersonalAccessClient(null, config('app.name') . ' Personal Access Client', 'http://localhost');
}
$accessToken = app('preferences')->get('access_token');
@@ -353,7 +308,7 @@ class ProfileController extends Controller
/**
* @return Factory|View|RedirectResponse
*/
public function logoutOtherSessions(): Factory|View|RedirectResponse
public function logoutOtherSessions(): Factory | View | RedirectResponse
{
if (!$this->internalAuth) {
session()->flash('info', (string)trans('firefly.external_auth_disabled'));
@@ -365,12 +320,12 @@ class ProfileController extends Controller
}
/**
* @param Request $request
* @param Request $request
*
* @return Factory|View|RedirectResponse
* @throws FireflyException
*/
public function newBackupCodes(Request $request): Factory|View|RedirectResponse
public function newBackupCodes(Request $request): Factory | View | RedirectResponse
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
@@ -396,12 +351,12 @@ class ProfileController extends Controller
/**
* Submit the change email form.
*
* @param EmailFormRequest $request
* @param UserRepositoryInterface $repository
* @param EmailFormRequest $request
* @param UserRepositoryInterface $repository
*
* @return Factory|RedirectResponse|Redirector
*/
public function postChangeEmail(EmailFormRequest $request, UserRepositoryInterface $repository): Factory|RedirectResponse|Redirector
public function postChangeEmail(EmailFormRequest $request, UserRepositoryInterface $repository): Factory | RedirectResponse | Redirector
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
@@ -442,11 +397,34 @@ class ProfileController extends Controller
return redirect(route('index'));
}
/**
* Change your email address.
*
* @param Request $request
*
* @return Factory|RedirectResponse|View
*/
public function changeEmail(Request $request): Factory | RedirectResponse | View
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
return redirect(route('profile.index'));
}
$title = auth()->user()->email;
$email = auth()->user()->email;
$subTitle = (string)trans('firefly.change_your_email');
$subTitleIcon = 'fa-envelope';
return view('profile.change-email', compact('title', 'subTitle', 'subTitleIcon', 'email'));
}
/**
* Submit change password form.
*
* @param ProfileFormRequest $request
* @param UserRepositoryInterface $repository
* @param ProfileFormRequest $request
* @param UserRepositoryInterface $repository
*
* @return RedirectResponse|Redirector
*/
@@ -477,10 +455,32 @@ class ProfileController extends Controller
return redirect(route('profile.index'));
}
/**
* Change your password.
*
* @param Request $request
*
* @return Factory|RedirectResponse|Redirector|View
*/
public function changePassword(Request $request)
{
if (!$this->internalAuth) {
$request->session()->flash('error', trans('firefly.external_user_mgt_disabled'));
return redirect(route('profile.index'));
}
$title = auth()->user()->email;
$subTitle = (string)trans('firefly.change_your_password');
$subTitleIcon = 'fa-key';
return view('profile.change-password', compact('title', 'subTitle', 'subTitleIcon'));
}
/**
* Submit 2FA for the first time.
*
* @param TokenFormRequest $request
* @param TokenFormRequest $request
*
* @return RedirectResponse|Redirector
* @throws FireflyException
@@ -527,11 +527,56 @@ class ProfileController extends Controller
return redirect(route('profile.index'));
}
/**
* TODO duplicate code.
*
* @param string $mfaCode
*
* @throws FireflyException
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
private function addToMFAHistory(string $mfaCode): void
{
/** @var array $mfaHistory */
$mfaHistory = app('preferences')->get('mfa_history', [])->data;
$entry = [
'time' => time(),
'code' => $mfaCode,
];
$mfaHistory[] = $entry;
app('preferences')->set('mfa_history', $mfaHistory);
$this->filterMFAHistory();
}
/**
* Remove old entries from the preferences array.
*/
private function filterMFAHistory(): void
{
/** @var array $mfaHistory */
$mfaHistory = app('preferences')->get('mfa_history', [])->data;
$newHistory = [];
$now = time();
foreach ($mfaHistory as $entry) {
$time = $entry['time'];
$code = $entry['code'];
if ($now - $time <= 300) {
$newHistory[] = [
'time' => $time,
'code' => $code,
];
}
}
app('preferences')->set('mfa_history', $newHistory);
}
/**
* Submit delete account.
*
* @param UserRepositoryInterface $repository
* @param DeleteAccountFormRequest $request
* @param UserRepositoryInterface $repository
* @param DeleteAccountFormRequest $request
*
* @return RedirectResponse|Redirector
*/
@@ -560,7 +605,7 @@ class ProfileController extends Controller
}
/**
* @param Request $request
* @param Request $request
*
* @return Application|RedirectResponse|Redirector
* @throws AuthenticationException
@@ -590,7 +635,7 @@ class ProfileController extends Controller
/**
* Regenerate access token.
*
* @param Request $request
* @param Request $request
*
* @return RedirectResponse|Redirector
* @throws Exception
@@ -615,9 +660,9 @@ class ProfileController extends Controller
/**
* Undo change of user email address.
*
* @param UserRepositoryInterface $repository
* @param string $token
* @param string $hash
* @param UserRepositoryInterface $repository
* @param string $token
* @param string $hash
*
* @return RedirectResponse|Redirector
*
@@ -666,49 +711,4 @@ class ProfileController extends Controller
return redirect(route('login'));
}
/**
* TODO duplicate code.
*
* @param string $mfaCode
*
* @throws FireflyException
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
private function addToMFAHistory(string $mfaCode): void
{
/** @var array $mfaHistory */
$mfaHistory = app('preferences')->get('mfa_history', [])->data;
$entry = [
'time' => time(),
'code' => $mfaCode,
];
$mfaHistory[] = $entry;
app('preferences')->set('mfa_history', $mfaHistory);
$this->filterMFAHistory();
}
/**
* Remove old entries from the preferences array.
*/
private function filterMFAHistory(): void
{
/** @var array $mfaHistory */
$mfaHistory = app('preferences')->get('mfa_history', [])->data;
$newHistory = [];
$now = time();
foreach ($mfaHistory as $entry) {
$time = $entry['time'];
$code = $entry['code'];
if ($now - $time <= 300) {
$newHistory[] = [
'time' => $time,
'code' => $code,
];
}
}
app('preferences')->set('mfa_history', $newHistory);
}
}

View File

@@ -79,7 +79,7 @@ class CreateController extends Controller
/**
* Create a new recurring transaction.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
*/
@@ -124,8 +124,8 @@ class CreateController extends Controller
}
/**
* @param Request $request
* @param TransactionJournal $journal
* @param Request $request
* @param TransactionJournal $journal
*
* @return Factory|\Illuminate\Contracts\View\View
*/
@@ -221,7 +221,7 @@ class CreateController extends Controller
/**
* Store a recurring transaction.
*
* @param RecurrenceFormRequest $request
* @param RecurrenceFormRequest $request
*
* @return RedirectResponse|Redirector
* @throws FireflyException

View File

@@ -65,7 +65,7 @@ class DeleteController extends Controller
/**
* Delete a recurring transaction form.
*
* @param Recurrence $recurrence
* @param Recurrence $recurrence
*
* @return Factory|View
*/
@@ -83,16 +83,16 @@ class DeleteController extends Controller
/**
* Destroy the recurring transaction.
*
* @param RecurringRepositoryInterface $repository
* @param Request $request
* @param Recurrence $recurrence
* @param RecurringRepositoryInterface $repository
* @param Request $request
* @param Recurrence $recurrence
*
* @return RedirectResponse|Redirector
*/
public function destroy(RecurringRepositoryInterface $repository, Request $request, Recurrence $recurrence)
{
$repository->destroy($recurrence);
$request->session()->flash('success', (string)trans('firefly.'.'recurrence_deleted', ['title' => $recurrence->title]));
$request->session()->flash('success', (string)trans('firefly.' . 'recurrence_deleted', ['title' => $recurrence->title]));
app('preferences')->mark();
return redirect($this->getPreviousUrl('recurrences.delete.url'));

View File

@@ -80,8 +80,8 @@ class EditController extends Controller
/**
* Edit a recurring transaction.
*
* @param Request $request
* @param Recurrence $recurrence
* @param Request $request
* @param Recurrence $recurrence
*
* @return Factory|View
* @throws FireflyException
@@ -107,7 +107,7 @@ class EditController extends Controller
$repetition = $recurrence->recurrenceRepetitions()->first();
$currentRepType = $repetition->repetition_type;
if ('' !== $repetition->repetition_moment) {
$currentRepType .= ','.$repetition->repetition_moment;
$currentRepType .= ',' . $repetition->repetition_moment;
}
// put previous url in session if not redirect from store (not "return_to_edit").
@@ -167,8 +167,8 @@ class EditController extends Controller
/**
* Update the recurring transaction.
*
* @param RecurrenceFormRequest $request
* @param Recurrence $recurrence
* @param RecurrenceFormRequest $request
* @param Recurrence $recurrence
*
* @return RedirectResponse|Redirector
* @throws FireflyException

View File

@@ -74,7 +74,7 @@ class IndexController extends Controller
* TODO the notes of a recurrence are pretty pointless at this moment.
* Show all recurring transactions.
*
* @param Request $request
* @param Request $request
*
* @return Factory|View
* @throws FireflyException

View File

@@ -39,8 +39,8 @@ use Illuminate\Support\Facades\Log;
class TriggerController extends Controller
{
/**
* @param Recurrence $recurrence
* @param TriggerRecurrenceRequest $request
* @param Recurrence $recurrence
* @param TriggerRecurrenceRequest $request
* @return RedirectResponse
*/
public function trigger(Recurrence $recurrence, TriggerRecurrenceRequest $request): RedirectResponse

View File

@@ -40,9 +40,9 @@ class AccountController extends Controller
/**
* Show partial overview for account balances.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException

View File

@@ -62,9 +62,9 @@ class BalanceController extends Controller
/**
* Show overview of budget balances.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException

View File

@@ -38,9 +38,9 @@ use Throwable;
class BillController extends Controller
{
/**
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return mixed|string
* @throws FireflyException

View File

@@ -68,10 +68,10 @@ class BudgetController extends Controller
/**
* Partial used in the budget report.
*
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
* @throws FireflyException
@@ -95,10 +95,10 @@ class BudgetController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -151,10 +151,10 @@ class BudgetController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -204,10 +204,10 @@ class BudgetController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -274,9 +274,9 @@ class BudgetController extends Controller
/**
* Show partial overview of budgets.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -301,9 +301,9 @@ class BudgetController extends Controller
/**
* Show budget overview for a period.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return mixed|string
* @throws FireflyException
@@ -364,10 +364,10 @@ class BudgetController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException

View File

@@ -68,10 +68,10 @@ class CategoryController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -167,10 +167,10 @@ class CategoryController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -271,10 +271,10 @@ class CategoryController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -324,10 +324,10 @@ class CategoryController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -377,10 +377,10 @@ class CategoryController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -487,9 +487,9 @@ class CategoryController extends Controller
/**
* Show overview of expenses in category.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return mixed|string
* @throws FireflyException
@@ -567,10 +567,10 @@ class CategoryController extends Controller
/**
* Show overview of income in category.
*
* @param Collection $accounts
* @param Collection $accounts
*
* @param Carbon $start
* @param Carbon $end
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -646,9 +646,9 @@ class CategoryController extends Controller
/**
* Show overview of category transactions on the default report.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -687,10 +687,10 @@ class CategoryController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -738,10 +738,10 @@ class CategoryController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException

View File

@@ -71,10 +71,10 @@ class DoubleController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -124,10 +124,10 @@ class DoubleController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -177,10 +177,10 @@ class DoubleController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $double
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $double
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -296,10 +296,35 @@ class DoubleController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $double
* @param Carbon $start
* @param Carbon $end
* TODO this method is duplicated.
*
* @param Collection $accounts
* @param int $id
* @param string $name
* @param string|null $iban
*
* @return string
*/
private function getCounterpartName(Collection $accounts, int $id, string $name, ?string $iban): string
{
/** @var Account $account */
foreach ($accounts as $account) {
if ($account->name === $name && $account->id !== $id) {
return $account->name;
}
if (null !== $account->iban && $account->iban === $iban && $account->id !== $id) {
return $account->iban;
}
}
return $name;
}
/**
* @param Collection $accounts
* @param Collection $double
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -396,10 +421,10 @@ class DoubleController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -447,10 +472,10 @@ class DoubleController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $doubles
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -496,29 +521,4 @@ class DoubleController extends Controller
return $result;
}
/**
* TODO this method is duplicated.
*
* @param Collection $accounts
* @param int $id
* @param string $name
* @param string|null $iban
*
* @return string
*/
private function getCounterpartName(Collection $accounts, int $id, string $name, ?string $iban): string
{
/** @var Account $account */
foreach ($accounts as $account) {
if ($account->name === $name && $account->id !== $id) {
return $account->name;
}
if (null !== $account->iban && $account->iban === $iban && $account->id !== $id) {
return $account->iban;
}
}
return $name;
}
}

View File

@@ -62,9 +62,9 @@ class OperationsController extends Controller
/**
* View of income and expense.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return mixed|string
* @throws FireflyException
@@ -98,9 +98,9 @@ class OperationsController extends Controller
/**
* View of income.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -134,9 +134,9 @@ class OperationsController extends Controller
/**
* Overview of income and expense.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return mixed|string
* @throws FireflyException

View File

@@ -61,10 +61,10 @@ class TagController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -160,10 +160,10 @@ class TagController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -264,10 +264,10 @@ class TagController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -317,10 +317,10 @@ class TagController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -370,10 +370,10 @@ class TagController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View
*/
@@ -478,10 +478,10 @@ class TagController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -529,10 +529,10 @@ class TagController extends Controller
}
/**
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException

View File

@@ -80,9 +80,9 @@ class ReportController extends Controller
/**
* Show audit report.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View|string
*
@@ -115,10 +115,10 @@ class ReportController extends Controller
/**
* Show budget report.
*
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View|string
*
@@ -152,10 +152,10 @@ class ReportController extends Controller
/**
* Show category report.
*
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $categories
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View|string
*
@@ -189,9 +189,9 @@ class ReportController extends Controller
/**
* Show default report.
*
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View|string
*
@@ -225,10 +225,10 @@ class ReportController extends Controller
/**
* Show account report.
*
* @param Collection $accounts
* @param Collection $expense
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $expense
* @param Carbon $start
* @param Carbon $end
*
* @return string
* @throws FireflyException
@@ -262,7 +262,7 @@ class ReportController extends Controller
/**
* Show index.
*
* @param AccountRepositoryInterface $repository
* @param AccountRepositoryInterface $repository
*
* @return Factory|View
* @throws ContainerExceptionInterface
@@ -305,7 +305,7 @@ class ReportController extends Controller
/**
* Show options for reports.
*
* @param string $reportType
* @param string $reportType
*
* @return JsonResponse
* @throws FireflyException
@@ -326,7 +326,7 @@ class ReportController extends Controller
/**
* Process the submit of report.
*
* @param ReportFormRequest $request
* @param ReportFormRequest $request
*
* @return RedirectResponse|Redirector
*
@@ -395,10 +395,10 @@ class ReportController extends Controller
/**
* Get a tag report.
*
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $tags
* @param Carbon $start
* @param Carbon $end
*
* @return Factory|View|string
* @throws FireflyException

View File

@@ -74,8 +74,8 @@ class CreateController extends Controller
/**
* Create a new rule. It will be stored under the given $ruleGroup.
*
* @param Request $request
* @param RuleGroup|null $ruleGroup
* @param Request $request
* @param RuleGroup|null $ruleGroup
*
* @return Factory|View
* @throws FireflyException
@@ -137,8 +137,8 @@ class CreateController extends Controller
/**
* Create a new rule. It will be stored under the given $ruleGroup.
*
* @param Request $request
* @param Bill $bill
* @param Request $request
* @param Bill $bill
*
* @return Factory|View
* @throws FireflyException
@@ -189,8 +189,8 @@ class CreateController extends Controller
}
/**
* @param Request $request
* @param TransactionJournal $journal
* @param Request $request
* @param TransactionJournal $journal
*
* @return Factory|\Illuminate\Contracts\View\View
* @throws FireflyException
@@ -240,7 +240,7 @@ class CreateController extends Controller
}
/**
* @param Request $request
* @param Request $request
* @return JsonResponse
*/
public function duplicate(Request $request): JsonResponse
@@ -257,7 +257,7 @@ class CreateController extends Controller
/**
* Store the new rule.
*
* @param RuleFormRequest $request
* @param RuleFormRequest $request
*
* @return RedirectResponse|Redirector
*

View File

@@ -62,7 +62,7 @@ class DeleteController extends Controller
/**
* Delete a given rule.
*
* @param Rule $rule
* @param Rule $rule
*
* @return Factory|View
*/
@@ -79,7 +79,7 @@ class DeleteController extends Controller
/**
* Actually destroy the given rule.
*
* @param Rule $rule
* @param Rule $rule
*
* @return RedirectResponse
*/

View File

@@ -74,8 +74,8 @@ class EditController extends Controller
/**
* Edit a rule.
*
* @param Request $request
* @param Rule $rule
* @param Request $request
* @param Rule $rule
*
* @return Factory|View
* @throws FireflyException
@@ -140,33 +140,7 @@ class EditController extends Controller
}
/**
* Update the rule.
*
* @param RuleFormRequest $request
* @param Rule $rule
*
* @return RedirectResponse|Redirector
*/
public function update(RuleFormRequest $request, Rule $rule)
{
$data = $request->getRuleData();
$this->ruleRepos->update($rule, $data);
session()->flash('success', (string)trans('firefly.updated_rule', ['title' => $rule->title]));
app('preferences')->mark();
$redirect = redirect($this->getPreviousUrl('rules.edit.url'));
if (1 === (int)$request->get('return_to_edit')) {
session()->put('rules.edit.fromUpdate', true);
$redirect = redirect(route('rules.edit', [$rule->id]))->withInput(['return_to_edit' => 1]);
}
return $redirect;
}
/**
* @param array $submittedOperators
* @param array $submittedOperators
*
* @return array
* @throws FireflyException
@@ -208,4 +182,30 @@ class EditController extends Controller
return $renderedEntries;
}
/**
* Update the rule.
*
* @param RuleFormRequest $request
* @param Rule $rule
*
* @return RedirectResponse|Redirector
*/
public function update(RuleFormRequest $request, Rule $rule)
{
$data = $request->getRuleData();
$this->ruleRepos->update($rule, $data);
session()->flash('success', (string)trans('firefly.updated_rule', ['title' => $rule->title]));
app('preferences')->mark();
$redirect = redirect($this->getPreviousUrl('rules.edit.url'));
if (1 === (int)$request->get('return_to_edit')) {
session()->put('rules.edit.fromUpdate', true);
$redirect = redirect(route('rules.edit', [$rule->id]))->withInput(['return_to_edit' => 1]);
}
return $redirect;
}
}

View File

@@ -80,9 +80,9 @@ class IndexController extends Controller
}
/**
* @param Request $request
* @param Rule $rule
* @param RuleGroup $ruleGroup
* @param Request $request
* @param Rule $rule
* @param RuleGroup $ruleGroup
*
* @return JsonResponse
*/
@@ -95,7 +95,7 @@ class IndexController extends Controller
}
/**
* @param Rule $rule
* @param Rule $rule
*
* @return RedirectResponse
*/

View File

@@ -70,8 +70,8 @@ class SelectController extends Controller
/**
* Execute the given rule on a set of existing transactions.
*
* @param SelectTransactionsRequest $request
* @param Rule $rule
* @param SelectTransactionsRequest $request
* @param Rule $rule
*
* @return RedirectResponse
*/
@@ -106,7 +106,7 @@ class SelectController extends Controller
/**
* View to select transactions by a rule.
*
* @param Rule $rule
* @param Rule $rule
*
* @return Factory|View
*/
@@ -129,7 +129,7 @@ class SelectController extends Controller
* This method allows the user to test a certain set of rule triggers. The rule triggers are passed along
* using the URL parameters (GET), and are usually put there using a Javascript thing.
*
* @param TestRuleFormRequest $request
* @param TestRuleFormRequest $request
*
* @return JsonResponse
* @throws FireflyException
@@ -196,7 +196,7 @@ class SelectController extends Controller
* This method allows the user to test a certain set of rule triggers. The rule triggers are grabbed from
* the rule itself.
*
* @param Rule $rule
* @param Rule $rule
*
* @return JsonResponse
* @throws FireflyException

View File

@@ -82,7 +82,7 @@ class CreateController extends Controller
/**
* Store the rule group.
*
* @param RuleGroupFormRequest $request
* @param RuleGroupFormRequest $request
*
* @return RedirectResponse|Redirector
*/

View File

@@ -64,7 +64,7 @@ class DeleteController extends Controller
/**
* Delete a rule group.
*
* @param RuleGroup $ruleGroup
* @param RuleGroup $ruleGroup
*
* @return Factory|View
*/
@@ -81,8 +81,8 @@ class DeleteController extends Controller
/**
* Actually destroy the rule group.
*
* @param Request $request
* @param RuleGroup $ruleGroup
* @param Request $request
* @param RuleGroup $ruleGroup
*
* @return RedirectResponse|Redirector
*/

View File

@@ -65,8 +65,8 @@ class EditController extends Controller
/**
* Edit a rule group.
*
* @param Request $request
* @param RuleGroup $ruleGroup
* @param Request $request
* @param RuleGroup $ruleGroup
*
* @return Factory|View
*/
@@ -91,7 +91,7 @@ class EditController extends Controller
/**
* Move a rule group in either direction.
*
* @param Request $request
* @param Request $request
*
* @return JsonResponse
*/
@@ -123,8 +123,8 @@ class EditController extends Controller
/**
* Update the rule group.
*
* @param RuleGroupFormRequest $request
* @param RuleGroup $ruleGroup
* @param RuleGroupFormRequest $request
* @param RuleGroup $ruleGroup
*
* @return $this|RedirectResponse|Redirector
*/

View File

@@ -66,8 +66,8 @@ class ExecutionController extends Controller
/**
* Execute the given rulegroup on a set of existing transactions.
*
* @param SelectTransactionsRequest $request
* @param RuleGroup $ruleGroup
* @param SelectTransactionsRequest $request
* @param RuleGroup $ruleGroup
*
* @return RedirectResponse
* @throws Exception
@@ -103,7 +103,7 @@ class ExecutionController extends Controller
/**
* Select transactions to apply the group on.
*
* @param RuleGroup $ruleGroup
* @param RuleGroup $ruleGroup
*
* @return Factory|View
*/

View File

@@ -58,8 +58,8 @@ class SearchController extends Controller
/**
* Do the search.
*
* @param Request $request
* @param SearchInterface $searcher
* @param Request $request
* @param SearchInterface $searcher
*
* @return Factory|View
*/
@@ -99,8 +99,8 @@ class SearchController extends Controller
/**
* JSON request that does the work.
*
* @param Request $request
* @param SearchInterface $searcher
* @param Request $request
* @param SearchInterface $searcher
*
* @return JsonResponse
* @throws FireflyException
@@ -121,7 +121,7 @@ class SearchController extends Controller
$hasPages = $groups->hasPages();
$searchTime = round($searcher->searchTime(), 3); // in seconds
$parameters = ['search' => $fullQuery];
$url = route('search.index').'?'.http_build_query($parameters);
$url = route('search.index') . '?' . http_build_query($parameters);
$groups->setPath($url);
try {

View File

@@ -92,31 +92,7 @@ class InstallController extends Controller
}
/**
* Create specific RSA keys.
*/
public function keys(): void
{
// switch on PHP version.
$keys = [];
// switch on class existence.
Log::info('Will run PHP8 code.');
$keys = RSA::createKey(4096);
[$publicKey, $privateKey] = [
Passport::keyPath('oauth-public.key'),
Passport::keyPath('oauth-private.key'),
];
if (file_exists($publicKey) || file_exists($privateKey)) {
return;
}
file_put_contents($publicKey, $keys['publickey']);
file_put_contents($privateKey, $keys['privatekey']);
}
/**
* @param Request $request
* @param Request $request
*
* @return JsonResponse
*/
@@ -160,8 +136,8 @@ class InstallController extends Controller
}
/**
* @param string $command
* @param array $args
* @param string $command
* @param array $args
* @return bool
* @throws FireflyException
*/
@@ -185,4 +161,28 @@ class InstallController extends Controller
return true;
}
/**
* Create specific RSA keys.
*/
public function keys(): void
{
// switch on PHP version.
$keys = [];
// switch on class existence.
Log::info('Will run PHP8 code.');
$keys = RSA::createKey(4096);
[$publicKey, $privateKey] = [
Passport::keyPath('oauth-public.key'),
Passport::keyPath('oauth-private.key'),
];
if (file_exists($publicKey) || file_exists($privateKey)) {
return;
}
file_put_contents($publicKey, $keys['publickey']);
file_put_contents($privateKey, $keys['privatekey']);
}
}

View File

@@ -103,7 +103,7 @@ class TagController extends Controller
/**
* Delete a tag.
*
* @param Tag $tag
* @param Tag $tag
*
* @return Factory|View
*/
@@ -117,28 +117,10 @@ class TagController extends Controller
return view('tags.delete', compact('tag', 'subTitle'));
}
/**
* Destroy a tag.
*
* @param Tag $tag
*
* @return RedirectResponse
*/
public function destroy(Tag $tag): RedirectResponse
{
$tagName = $tag->tag;
$this->repository->destroy($tag);
session()->flash('success', (string)trans('firefly.deleted_tag', ['tag' => $tagName]));
app('preferences')->mark();
return redirect($this->getPreviousUrl('tags.delete.url'));
}
/**
* Edit a tag.
*
* @param Tag $tag
* @param Tag $tag
*
* @return Factory|View
*/
@@ -173,7 +155,7 @@ class TagController extends Controller
/**
* Edit a tag.
*
* @param TagRepositoryInterface $repository
* @param TagRepositoryInterface $repository
*
* @return Factory|View
*/
@@ -223,13 +205,31 @@ class TagController extends Controller
return redirect(route('tags.index'));
}
/**
* Destroy a tag.
*
* @param Tag $tag
*
* @return RedirectResponse
*/
public function destroy(Tag $tag): RedirectResponse
{
$tagName = $tag->tag;
$this->repository->destroy($tag);
session()->flash('success', (string)trans('firefly.deleted_tag', ['tag' => $tagName]));
app('preferences')->mark();
return redirect($this->getPreviousUrl('tags.delete.url'));
}
/**
* Show a single tag.
*
* @param Request $request
* @param Tag $tag
* @param Carbon|null $start
* @param Carbon|null $end
* @param Request $request
* @param Tag $tag
* @param Carbon|null $start
* @param Carbon|null $end
*
* @return Factory|View
* @throws FireflyException
@@ -276,8 +276,8 @@ class TagController extends Controller
/**
* Show a single tag over all time.
*
* @param Request $request
* @param Tag $tag
* @param Request $request
* @param Tag $tag
*
* @return Factory|View
* @throws ContainerExceptionInterface
@@ -310,7 +310,7 @@ class TagController extends Controller
/**
* Store a tag.
*
* @param TagFormRequest $request
* @param TagFormRequest $request
*
* @return RedirectResponse
*/
@@ -351,8 +351,8 @@ class TagController extends Controller
/**
* Update a tag.
*
* @param TagFormRequest $request
* @param Tag $tag
* @param TagFormRequest $request
* @param Tag $tag
*
* @return RedirectResponse
*/

View File

@@ -70,7 +70,7 @@ class BulkController extends Controller
*
* TODO user wont be able to tell if the journal is part of a split.
*
* @param array $journals
* @param array $journals
*
* @return Factory|View
*/
@@ -93,7 +93,7 @@ class BulkController extends Controller
/**
* Update all journals.
*
* @param BulkEditJournalRequest $request
* @param BulkEditJournalRequest $request
*
* @return Application|RedirectResponse|Redirector
*/
@@ -135,9 +135,9 @@ class BulkController extends Controller
}
/**
* @param TransactionJournal $journal
* @param bool $ignoreUpdate
* @param int $budgetId
* @param TransactionJournal $journal
* @param bool $ignoreUpdate
* @param int $budgetId
*
* @return bool
*/
@@ -153,27 +153,9 @@ class BulkController extends Controller
}
/**
* @param TransactionJournal $journal
* @param bool $ignoreUpdate
* @param string $category
*
* @return bool
*/
private function updateJournalCategory(TransactionJournal $journal, bool $ignoreUpdate, string $category): bool
{
if (true === $ignoreUpdate) {
return false;
}
Log::debug(sprintf('Set budget to %s', $category));
$this->repository->updateCategory($journal, $category);
return true;
}
/**
* @param TransactionJournal $journal
* @param string $action
* @param array $tags
* @param TransactionJournal $journal
* @param string $action
* @param array $tags
*
* @return bool
*/
@@ -191,4 +173,22 @@ class BulkController extends Controller
return true;
}
/**
* @param TransactionJournal $journal
* @param bool $ignoreUpdate
* @param string $category
*
* @return bool
*/
private function updateJournalCategory(TransactionJournal $journal, bool $ignoreUpdate, string $category): bool
{
if (true === $ignoreUpdate) {
return false;
}
Log::debug(sprintf('Set budget to %s', $category));
$this->repository->updateCategory($journal, $category);
return true;
}
}

View File

@@ -82,8 +82,8 @@ class ConvertController extends Controller
/**
* Show overview of a to be converted transaction.
*
* @param TransactionType $destinationType
* @param TransactionGroup $group
* @param TransactionType $destinationType
* @param TransactionGroup $group
*
* @return RedirectResponse|Redirector|Factory|View
* @throws Exception
@@ -104,7 +104,7 @@ class ConvertController extends Controller
$groupTitle = $group->title ?? $first->description;
$groupArray = $transformer->transformObject($group);
$subTitle = (string)trans('firefly.convert_to_'.$destinationType->type, ['description' => $groupTitle]);
$subTitle = (string)trans('firefly.convert_to_' . $destinationType->type, ['description' => $groupTitle]);
$subTitleIcon = 'fa-exchange';
// get a list of asset accounts and liabilities and stuff, in various combinations:
@@ -120,7 +120,7 @@ class ConvertController extends Controller
if ($sourceType->type === $destinationType->type) { // cannot convert to its own type.
Log::debug('This is already a transaction of the expected type..');
session()->flash('info', (string)trans('firefly.convert_is_already_type_'.$destinationType->type));
session()->flash('info', (string)trans('firefly.convert_is_already_type_' . $destinationType->type));
return redirect(route('transactions.show', [$group->id]));
}
@@ -144,12 +144,139 @@ class ConvertController extends Controller
);
}
/**
* @return array
*/
private function getValidDepositSources(): array
{
// make repositories
$liabilityTypes = [AccountType::MORTGAGE, AccountType::DEBT, AccountType::CREDITCARD, AccountType::LOAN];
$accountList = $this->accountRepository
->getActiveAccountsByType([AccountType::REVENUE, AccountType::CASH, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]);
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$role = (string)$this->accountRepository->getMetaValue($account, 'account_role');
$name = $account->name;
if ('' === $role) {
$role = 'no_account_type';
}
// maybe it's a liability thing:
if (in_array($account->accountType->type, $liabilityTypes, true)) {
$role = 'l_' . $account->accountType->type;
}
if (AccountType::CASH === $account->accountType->type) {
$role = 'cash_account';
$name = sprintf('(%s)', trans('firefly.cash'));
}
if (AccountType::REVENUE === $account->accountType->type) {
$role = 'revenue_account';
}
$key = (string)trans('firefly.opt_group_' . $role);
$grouped[$key][$account->id] = $name;
}
return $grouped;
}
/**
* @return array
*/
private function getValidWithdrawalDests(): array
{
// make repositories
$liabilityTypes = [AccountType::MORTGAGE, AccountType::DEBT, AccountType::CREDITCARD, AccountType::LOAN];
$accountList = $this->accountRepository->getActiveAccountsByType(
[AccountType::EXPENSE, AccountType::CASH, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]
);
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$role = (string)$this->accountRepository->getMetaValue($account, 'account_role');
$name = $account->name;
if ('' === $role) {
$role = 'no_account_type';
}
// maybe it's a liability thing:
if (in_array($account->accountType->type, $liabilityTypes, true)) {
$role = 'l_' . $account->accountType->type;
}
if (AccountType::CASH === $account->accountType->type) {
$role = 'cash_account';
$name = sprintf('(%s)', trans('firefly.cash'));
}
if (AccountType::EXPENSE === $account->accountType->type) {
$role = 'expense_account';
}
$key = (string)trans('firefly.opt_group_' . $role);
$grouped[$key][$account->id] = $name;
}
return $grouped;
}
/**
* @return array
* @throws Exception
*/
private function getLiabilities(): array
{
// make repositories
$accountList = $this->accountRepository->getActiveAccountsByType([AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]);
$defaultCurrency = app('amount')->getDefaultCurrency();
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$balance = app('steam')->balance($account, today());
$currency = $this->accountRepository->getAccountCurrency($account) ?? $defaultCurrency;
$role = 'l_' . $account->accountType->type;
$key = (string)trans('firefly.opt_group_' . $role);
$grouped[$key][$account->id] = $account->name . ' (' . app('amount')->formatAnything($currency, $balance, false) . ')';
}
return $grouped;
}
/**
* @return array
* @throws Exception
*/
private function getAssetAccounts(): array
{
// make repositories
$accountList = $this->accountRepository->getActiveAccountsByType([AccountType::ASSET]);
$defaultCurrency = app('amount')->getDefaultCurrency();
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$balance = app('steam')->balance($account, today());
$currency = $this->accountRepository->getAccountCurrency($account) ?? $defaultCurrency;
$role = (string)$this->accountRepository->getMetaValue($account, 'account_role');
if ('' === $role) {
$role = 'no_account_type';
}
$key = (string)trans('firefly.opt_group_' . $role);
$grouped[$key][$account->id] = $account->name . ' (' . app('amount')->formatAnything($currency, $balance, false) . ')';
}
return $grouped;
}
/**
* Do the conversion.
*
* @param Request $request
* @param TransactionType $destinationType
* @param TransactionGroup $group
* @param Request $request
* @param TransactionType $destinationType
* @param TransactionGroup $group
*
* @return RedirectResponse|Redirector
*
@@ -175,16 +302,16 @@ class ConvertController extends Controller
// correct transfers:
$group->refresh();
session()->flash('success', (string)trans('firefly.converted_to_'.$destinationType->type));
session()->flash('success', (string)trans('firefly.converted_to_' . $destinationType->type));
event(new UpdatedTransactionGroup($group, true, true));
return redirect(route('transactions.show', [$group->id]));
}
/**
* @param TransactionJournal $journal
* @param TransactionType $transactionType
* @param array $data
* @param TransactionJournal $journal
* @param TransactionType $transactionType
* @param array $data
*
* @return TransactionJournal
* @throws FireflyException
@@ -234,131 +361,4 @@ class ConvertController extends Controller
return $journal;
}
/**
* @return array
* @throws Exception
*/
private function getAssetAccounts(): array
{
// make repositories
$accountList = $this->accountRepository->getActiveAccountsByType([AccountType::ASSET]);
$defaultCurrency = app('amount')->getDefaultCurrency();
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$balance = app('steam')->balance($account, today());
$currency = $this->accountRepository->getAccountCurrency($account) ?? $defaultCurrency;
$role = (string)$this->accountRepository->getMetaValue($account, 'account_role');
if ('' === $role) {
$role = 'no_account_type';
}
$key = (string)trans('firefly.opt_group_'.$role);
$grouped[$key][$account->id] = $account->name.' ('.app('amount')->formatAnything($currency, $balance, false).')';
}
return $grouped;
}
/**
* @return array
* @throws Exception
*/
private function getLiabilities(): array
{
// make repositories
$accountList = $this->accountRepository->getActiveAccountsByType([AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]);
$defaultCurrency = app('amount')->getDefaultCurrency();
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$balance = app('steam')->balance($account, today());
$currency = $this->accountRepository->getAccountCurrency($account) ?? $defaultCurrency;
$role = 'l_'.$account->accountType->type;
$key = (string)trans('firefly.opt_group_'.$role);
$grouped[$key][$account->id] = $account->name.' ('.app('amount')->formatAnything($currency, $balance, false).')';
}
return $grouped;
}
/**
* @return array
*/
private function getValidDepositSources(): array
{
// make repositories
$liabilityTypes = [AccountType::MORTGAGE, AccountType::DEBT, AccountType::CREDITCARD, AccountType::LOAN];
$accountList = $this->accountRepository
->getActiveAccountsByType([AccountType::REVENUE, AccountType::CASH, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]);
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$role = (string)$this->accountRepository->getMetaValue($account, 'account_role');
$name = $account->name;
if ('' === $role) {
$role = 'no_account_type';
}
// maybe it's a liability thing:
if (in_array($account->accountType->type, $liabilityTypes, true)) {
$role = 'l_'.$account->accountType->type;
}
if (AccountType::CASH === $account->accountType->type) {
$role = 'cash_account';
$name = sprintf('(%s)', trans('firefly.cash'));
}
if (AccountType::REVENUE === $account->accountType->type) {
$role = 'revenue_account';
}
$key = (string)trans('firefly.opt_group_'.$role);
$grouped[$key][$account->id] = $name;
}
return $grouped;
}
/**
* @return array
*/
private function getValidWithdrawalDests(): array
{
// make repositories
$liabilityTypes = [AccountType::MORTGAGE, AccountType::DEBT, AccountType::CREDITCARD, AccountType::LOAN];
$accountList = $this->accountRepository->getActiveAccountsByType(
[AccountType::EXPENSE, AccountType::CASH, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]
);
$grouped = [];
// group accounts:
/** @var Account $account */
foreach ($accountList as $account) {
$role = (string)$this->accountRepository->getMetaValue($account, 'account_role');
$name = $account->name;
if ('' === $role) {
$role = 'no_account_type';
}
// maybe it's a liability thing:
if (in_array($account->accountType->type, $liabilityTypes, true)) {
$role = 'l_'.$account->accountType->type;
}
if (AccountType::CASH === $account->accountType->type) {
$role = 'cash_account';
$name = sprintf('(%s)', trans('firefly.cash'));
}
if (AccountType::EXPENSE === $account->accountType->type) {
$role = 'expense_account';
}
$key = (string)trans('firefly.opt_group_'.$role);
$grouped[$key][$account->id] = $name;
}
return $grouped;
}
}

View File

@@ -65,7 +65,7 @@ class CreateController extends Controller
}
/**
* @param Request $request
* @param Request $request
*
* @return JsonResponse
*/
@@ -99,7 +99,7 @@ class CreateController extends Controller
/**
* Create a new transaction group.
*
* @param string|null $objectType
* @param string|null $objectType
*
* @return Factory|View
* @throws FireflyException

Some files were not shown because too many files have changed in this diff Show More