Various code cleanup as suggested by PHPStorm.

This commit is contained in:
James Cole 2019-05-30 12:39:06 +02:00
parent 8b7e87ae57
commit eb6329e556
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
36 changed files with 631 additions and 625 deletions

View File

@ -54,7 +54,7 @@ class AboutController extends Controller
$data
= [
= [
'version' => config('firefly.version'),
'api_version' => config('firefly.api_version'),
'php_version' => $phpVersion,

View File

@ -296,7 +296,7 @@ class AccountController extends Controller
* Update account.
*
* @param AccountUpdateRequest $request
* @param Account $account
* @param Account $account
*
* @return JsonResponse
*/

View File

@ -39,6 +39,7 @@ use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
use League\Fractal\Resource\Item;
use League\Fractal\Serializer\JsonApiSerializer;
use function strlen;
/**
* Class AttachmentController.
@ -111,7 +112,7 @@ class AttachmentController extends Controller
->header('Expires', '0')
->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->header('Pragma', 'public')
->header('Content-Length', \strlen($content));
->header('Content-Length', strlen($content));
return $response;
}
@ -159,7 +160,7 @@ class AttachmentController extends Controller
/**
* Display the specified resource.
*
* @param Request $request
* @param Request $request
* @param Attachment $attachment
* @codeCoverageIgnore
* @return JsonResponse
@ -208,7 +209,7 @@ class AttachmentController extends Controller
* Update the specified resource in storage.
*
* @param AttachmentRequest $request
* @param Attachment $attachment
* @param Attachment $attachment
*
* @return JsonResponse
*/
@ -232,7 +233,7 @@ class AttachmentController extends Controller
/**
* Upload an attachment.
* @codeCoverageIgnore
* @param Request $request
* @param Request $request
* @param Attachment $attachment
*
* @return JsonResponse

View File

@ -140,11 +140,11 @@ class AvailableBudgetController extends Controller
/**
* Display the specified resource.
*
* @param Request $request
* @param Request $request
* @param AvailableBudget $availableBudget
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, AvailableBudget $availableBudget): JsonResponse
{
@ -197,7 +197,7 @@ class AvailableBudgetController extends Controller
* Update the specified resource in storage.
*
* @param AvailableBudgetRequest $request
* @param AvailableBudget $availableBudget
* @param AvailableBudget $availableBudget
*
* @return JsonResponse
*/

View File

@ -34,7 +34,6 @@ use FireflyIII\Transformers\AttachmentTransformer;
use FireflyIII\Transformers\BillTransformer;
use FireflyIII\Transformers\RuleTransformer;
use FireflyIII\Transformers\TransactionGroupTransformer;
use FireflyIII\Transformers\TransactionTransformer;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@ -81,7 +80,7 @@ class BillController extends Controller
* Display a listing of the resource.
*
* @param Request $request
* @param Bill $bill
* @param Bill $bill
*
* @return JsonResponse
* @codeCoverageIgnore
@ -163,7 +162,7 @@ class BillController extends Controller
* List all of them.
*
* @param Request $request
* @param Bill $bill
* @param Bill $bill
*
* @return JsonResponse
* @codeCoverageIgnore
@ -205,7 +204,7 @@ class BillController extends Controller
* Show the specified bill.
*
* @param Request $request
* @param Bill $bill
* @param Bill $bill
*
* @return JsonResponse
* @codeCoverageIgnore
@ -258,7 +257,7 @@ class BillController extends Controller
*
* @param Request $request
*
* @param Bill $bill
* @param Bill $bill
*
* @return JsonResponse
* @codeCoverageIgnore
@ -303,7 +302,7 @@ class BillController extends Controller
$paginator->setPath(route('api.v1.bills.transactions', [$bill->id]) . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionTransformer $transformer */
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer->setParameters($this->parameters);
@ -317,7 +316,7 @@ class BillController extends Controller
* Update a bill.
*
* @param BillRequest $request
* @param Bill $bill
* @param Bill $bill
*
* @return JsonResponse
*/

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers;
use Exception;
use FireflyIII\Api\V1\Requests\BudgetLimitRequest;
use FireflyIII\Api\V1\Requests\BudgetRequest;
use FireflyIII\Exceptions\FireflyException;
@ -42,7 +43,7 @@ use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
use League\Fractal\Resource\Item;
use League\Fractal\Serializer\JsonApiSerializer;
use Exception;
/**
* Class BudgetController.
*
@ -81,7 +82,7 @@ class BudgetController extends Controller
*
*
* @param Request $request
* @param Budget $budget
* @param Budget $budget
*
* @return JsonResponse
* @codeCoverageIgnore
@ -169,7 +170,7 @@ class BudgetController extends Controller
* Show a budget.
*
* @param Request $request
* @param Budget $budget
* @param Budget $budget
*
* @return JsonResponse
* @codeCoverageIgnore
@ -221,9 +222,9 @@ class BudgetController extends Controller
* Store a newly created resource in storage.
*
* @param BudgetLimitRequest $request
* @param Budget $budget
* @throws Exception
* @param Budget $budget
* @return JsonResponse
* @throws Exception
*/
public function storeBudgetLimit(BudgetLimitRequest $request, Budget $budget): JsonResponse
{
@ -248,7 +249,7 @@ class BudgetController extends Controller
*
* @param Request $request
*
* @param Budget $budget
* @param Budget $budget
*
* @return JsonResponse
* @codeCoverageIgnore
@ -313,7 +314,7 @@ class BudgetController extends Controller
* Update a budget.
*
* @param BudgetRequest $request
* @param Budget $budget
* @param Budget $budget
*
* @return JsonResponse
*/

View File

@ -134,7 +134,7 @@ class BudgetLimitController extends Controller
/**
* Display the specified resource.
*
* @param Request $request
* @param Request $request
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
@ -189,7 +189,7 @@ class BudgetLimitController extends Controller
/**
* Show all transactions.
*
* @param Request $request
* @param Request $request
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
@ -245,7 +245,7 @@ class BudgetLimitController extends Controller
* Update the specified resource in storage.
*
* @param BudgetLimitRequest $request
* @param BudgetLimit $budgetLimit
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
*/

View File

@ -133,7 +133,7 @@ class CategoryController extends Controller
/**
* Show the category.
*
* @param Request $request
* @param Request $request
* @param Category $category
*
* @return JsonResponse
@ -184,7 +184,7 @@ class CategoryController extends Controller
/**
* Show all transactions.
*
* @param Request $request
* @param Request $request
*
* @param Category $category
*
@ -243,7 +243,7 @@ class CategoryController extends Controller
* Update the category.
*
* @param CategoryRequest $request
* @param Category $category
* @param Category $category
*
* @return JsonResponse
*/

View File

@ -82,7 +82,7 @@ class AccountController extends Controller
if ('' === $start || '' === $end) {
throw new FireflyException('Start and end are mandatory parameters.');
}
/** @var Carbon $start */
$start = Carbon::createFromFormat('Y-m-d', $start);
$end = Carbon::createFromFormat('Y-m-d', $end);
$start->subDay();
@ -128,7 +128,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) {
@ -156,6 +156,43 @@ class AccountController extends Controller
return response()->json($chartData);
}
/**
* Small helper function for the revenue and expense account charts.
* TODO should include Trait instead of doing this.
*
* @param Collection $accounts
*
* @return array
*/
protected function extractNames(Collection $accounts): array
{
$return = [];
/** @var Account $account */
foreach ($accounts as $account) {
$return[$account->id] = $account->name;
}
return $return;
}
/**
* Small helper function for the revenue and expense account charts.
* TODO should include Trait instead of doing this.
*
* @param array $names
*
* @return array
*/
protected function expandNames(array $names): array
{
$result = [];
foreach ($names as $entry) {
$result[$entry['name']] = 0;
}
return $result;
}
/**
* @param Request $request
*
@ -176,8 +213,8 @@ class AccountController extends Controller
// user's preferences
$defaultSet = $this->repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray();
$frontPage = app('preferences')->get('frontPageAccounts', $defaultSet);
$default = app('amount')->getDefaultCurrency();
$frontPage = app('preferences')->get('frontPageAccounts', $defaultSet);
$default = app('amount')->getDefaultCurrency();
if (0 === count($frontPage->data)) {
$frontPage->data = $defaultSet;
$frontPage->save();
@ -202,7 +239,7 @@ class AccountController extends Controller
'yAxisID' => 0, // 0, 1, 2
'entries' => [],
];
/** @var Carbon $currentStart */
$currentStart = clone $start;
$range = app('steam')->balanceInRange($account, $start, clone $end);
$previous = round(array_values($range)[0], 12);
@ -234,7 +271,7 @@ class AccountController extends Controller
if ('' === $start || '' === $end) {
throw new FireflyException('Start and end are mandatory parameters.');
}
/** @var Carbon $start */
$start = Carbon::createFromFormat('Y-m-d', $start);
$end = Carbon::createFromFormat('Y-m-d', $end);
$start->subDay();
@ -280,7 +317,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) {
@ -308,41 +345,4 @@ class AccountController extends Controller
return response()->json($chartData);
}
/**
* Small helper function for the revenue and expense account charts.
* TODO should include Trait instead of doing this.
*
* @param array $names
*
* @return array
*/
protected function expandNames(array $names): array
{
$result = [];
foreach ($names as $entry) {
$result[$entry['name']] = 0;
}
return $result;
}
/**
* Small helper function for the revenue and expense account charts.
* TODO should include Trait instead of doing this.
*
* @param Collection $accounts
*
* @return array
*/
protected function extractNames(Collection $accounts): array
{
$return = [];
/** @var Account $account */
foreach ($accounts as $account) {
$return[$account->id] = $account->name;
}
return $return;
}
}

View File

@ -74,7 +74,9 @@ class CategoryController extends Controller
if ('' === $start || '' === $end) {
throw new FireflyException('Start and end are mandatory parameters.');
}
/** @var Carbon $start */
$start = Carbon::createFromFormat('Y-m-d', $start);
/** @var Carbon $end */
$end = Carbon::createFromFormat('Y-m-d', $end);
$tempData = [];
$spent = $this->categoryRepository->spentInPeriodPerCurrency(new Collection, new Collection, $start, $end);

View File

@ -76,24 +76,6 @@ class ConfigurationController extends Controller
return response()->json(['data' => $configData])->header('Content-Type', 'application/vnd.api+json');
}
/**
* Update the configuration.
*
* @param ConfigurationRequest $request
* @param string $name
*
* @return JsonResponse
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function update(ConfigurationRequest $request, string $name): JsonResponse
{
$data = $request->getAll();
app('fireflyconfig')->set($name, $data['value']);
$configData = $this->getConfigData();
return response()->json(['data' => $configData])->header('Content-Type', 'application/vnd.api+json');
}
/**
* Get all config values.
*
@ -119,4 +101,22 @@ class ConfigurationController extends Controller
return $data;
}
/**
* Update the configuration.
*
* @param ConfigurationRequest $request
* @param string $name
*
* @return JsonResponse
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function update(ConfigurationRequest $request, string $name): JsonResponse
{
$data = $request->getAll();
app('fireflyconfig')->set($name, $data['value']);
$configData = $this->getConfigData();
return response()->json(['data' => $configData])->header('Content-Type', 'application/vnd.api+json');
}
}

View File

@ -56,32 +56,6 @@ class Controller extends BaseController
$this->parameters = $this->getParameters();
}
/**
* Method to help build URI's.
*
* @return string
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
protected function buildParams(): string
{
$return = '?';
$params = [];
foreach ($this->parameters as $key => $value) {
if ('page' === $key) {
continue;
}
if ($value instanceof Carbon) {
$params[$key] = $value->format('Y-m-d');
continue;
}
$params[$key] = $value;
}
$return .= http_build_query($params);
return $return;
}
/**
* Method to grab all parameters from the URI.
*
@ -125,4 +99,30 @@ class Controller extends BaseController
return $bag;
}
/**
* Method to help build URI's.
*
* @return string
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
protected function buildParams(): string
{
$return = '?';
$params = [];
foreach ($this->parameters as $key => $value) {
if ('page' === $key) {
continue;
}
if ($value instanceof Carbon) {
$params[$key] = $value->format('Y-m-d');
continue;
}
$params[$key] = $value;
}
$return .= http_build_query($params);
return $return;
}
}

View File

@ -103,11 +103,11 @@ class CurrencyController extends Controller
/**
* Display a list of accounts.
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function accounts(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -161,12 +161,12 @@ class CurrencyController extends Controller
/**
* Display a listing of the resource.
*
* @param Request $request
* @param Request $request
*
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function availableBudgets(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -217,11 +217,11 @@ class CurrencyController extends Controller
/**
* List all bills
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function bills(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -265,12 +265,12 @@ class CurrencyController extends Controller
/**
* List all budget limits
*
* @param Request $request
* @param Request $request
*
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function budgetLimits(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -309,11 +309,11 @@ class CurrencyController extends Controller
/**
* Show a list of known exchange rates
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function cer(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -345,11 +345,11 @@ class CurrencyController extends Controller
/**
* Remove the specified resource from storage.
*
* @param TransactionCurrency $currency
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @throws FireflyException
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function delete(TransactionCurrency $currency): JsonResponse
{
@ -371,11 +371,11 @@ class CurrencyController extends Controller
/**
* Disable a currency.
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function disable(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -404,11 +404,11 @@ class CurrencyController extends Controller
/**
* Enable a currency.
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function enable(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -436,7 +436,7 @@ class CurrencyController extends Controller
* @param Request $request
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function index(Request $request): JsonResponse
{
@ -468,11 +468,11 @@ class CurrencyController extends Controller
/**
* Make the currency a default currency.
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function makeDefault(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -500,12 +500,12 @@ class CurrencyController extends Controller
/**
* List all recurring transactions.
*
* @param Request $request
* @param Request $request
*
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function recurrences(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -560,11 +560,11 @@ class CurrencyController extends Controller
/**
* List all of them.
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function rules(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -614,11 +614,11 @@ class CurrencyController extends Controller
/**
* Show a currency.
*
* @param Request $request
* @param Request $request
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -675,12 +675,12 @@ class CurrencyController extends Controller
/**
* Show all transactions.
*
* @param Request $request
* @param Request $request
*
* @param TransactionCurrency $currency
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function transactions(Request $request, TransactionCurrency $currency): JsonResponse
{
@ -733,7 +733,7 @@ class CurrencyController extends Controller
/**
* Update a currency.
*
* @param CurrencyRequest $request
* @param CurrencyRequest $request
* @param TransactionCurrency $currency
*
* @return JsonResponse

View File

@ -90,6 +90,7 @@ class CurrencyExchangeRateController extends Controller
throw new FireflyException('Unknown destination currency.');
}
/** @var Carbon $dateObj */
$dateObj = Carbon::createFromFormat('Y-m-d', $request->get('date') ?? date('Y-m-d'));
$this->parameters->set('from', $fromCurrency->code);
$this->parameters->set('to', $toCurrency->code);

View File

@ -72,7 +72,7 @@ class ImportController extends Controller
* @param Request $request
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function listAll(Request $request): JsonResponse
{
@ -104,11 +104,11 @@ class ImportController extends Controller
}
/**
* @param Request $request
* @param Request $request
* @param ImportJob $importJob
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, ImportJob $importJob): JsonResponse
{
@ -128,11 +128,11 @@ class ImportController extends Controller
/**
* Show all transactions
*
* @param Request $request
* @param Request $request
* @param ImportJob $importJob
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function transactions(Request $request, ImportJob $importJob): JsonResponse
{

View File

@ -137,11 +137,11 @@ class LinkTypeController extends Controller
/**
* List single resource.
*
* @param Request $request
* @param Request $request
* @param LinkType $linkType
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, LinkType $linkType): JsonResponse
{
@ -193,11 +193,11 @@ class LinkTypeController extends Controller
/**
* Delete the resource.
*
* @param Request $request
* @param Request $request
* @param LinkType $linkType
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function transactions(Request $request, LinkType $linkType): JsonResponse
{
@ -255,7 +255,7 @@ class LinkTypeController extends Controller
* Update object.
*
* @param LinkTypeRequest $request
* @param LinkType $linkType
* @param LinkType $linkType
*
* @return JsonResponse
* @throws FireflyException

View File

@ -130,7 +130,7 @@ class PiggyBankController extends Controller
/**
* List single resource.
*
* @param Request $request
* @param Request $request
* @param PiggyBank $piggyBank
*
* @return JsonResponse
@ -166,7 +166,7 @@ class PiggyBankController extends Controller
/**
* List single resource.
*
* @param Request $request
* @param Request $request
* @param PiggyBank $piggyBank
*
* @return JsonResponse
@ -220,7 +220,7 @@ class PiggyBankController extends Controller
* Update piggy bank.
*
* @param PiggyBankRequest $request
* @param PiggyBank $piggyBank
* @param PiggyBank $piggyBank
*
* @return JsonResponse
*/

View File

@ -119,7 +119,7 @@ class PreferenceController extends Controller
/**
* Return a single preference by name.
*
* @param Request $request
* @param Request $request
* @param Preference $preference
*
* @return JsonResponse
@ -147,7 +147,7 @@ class PreferenceController extends Controller
* Update a preference.
*
* @param PreferenceRequest $request
* @param Preference $preference
* @param Preference $preference
*
* @return JsonResponse
* @SuppressWarnings(PHPMD.CyclomaticComplexity)

View File

@ -133,7 +133,7 @@ class RecurrenceController extends Controller
/**
* List single resource.
*
* @param Request $request
* @param Request $request
* @param Recurrence $recurrence
*
* @return JsonResponse
@ -182,7 +182,7 @@ class RecurrenceController extends Controller
/**
* Show transactions for this recurrence.
*
* @param Request $request
* @param Request $request
* @param Recurrence $recurrence
*
* @return JsonResponse
@ -267,7 +267,7 @@ class RecurrenceController extends Controller
* Update single recurrence.
*
* @param RecurrenceUpdateRequest $request
* @param Recurrence $recurrence
* @param Recurrence $recurrence
*
* @return JsonResponse
*/

View File

@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers;
use Carbon\Carbon;
use Exception;
use FireflyIII\Api\V1\Requests\RuleRequest;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Jobs\ExecuteRuleOnExistingTransactions;
@ -45,7 +46,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
use League\Fractal\Resource\Item;
use League\Fractal\Serializer\JsonApiSerializer;
use Log;
use Exception;
/**
* Class RuleController
*/
@ -85,7 +86,7 @@ class RuleController extends Controller
* @param Rule $rule
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function delete(Rule $rule): JsonResponse
{
@ -100,7 +101,7 @@ class RuleController extends Controller
* @param Request $request
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function index(Request $request): JsonResponse
{
@ -138,10 +139,10 @@ class RuleController extends Controller
* List single resource.
*
* @param Request $request
* @param Rule $rule
* @param Rule $rule
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, Rule $rule): JsonResponse
{
@ -183,8 +184,9 @@ class RuleController extends Controller
}
/**
* TODO deprecated return values in transformer.
* @param Request $request
* @param Rule $rule
* @param Rule $rule
*
* @return JsonResponse
* @throws FireflyException
@ -193,7 +195,9 @@ class RuleController extends Controller
{
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$page = 0 === (int)$request->query('page') ? 1 : (int)$request->query('page');
/** @var Carbon $startDate */
$startDate = null === $request->query('start_date') ? null : Carbon::createFromFormat('Y-m-d', $request->query('start_date'));
/** @var Carbon $endDate */
$endDate = null === $request->query('end_date') ? null : Carbon::createFromFormat('Y-m-d', $request->query('end_date'));
$searchLimit = 0 === (int)$request->query('search_limit') ? (int)config('firefly.test-triggers.limit') : (int)$request->query('search_limit');
$triggerLimit = 0 === (int)$request->query('triggered_limit') ? (int)config('firefly.test-triggers.range') : (int)$request->query('triggered_limit');
@ -253,7 +257,7 @@ class RuleController extends Controller
* Execute the given rule group on a set of existing transactions.
*
* @param Request $request
* @param Rule $rule
* @param Rule $rule
*
* @return JsonResponse
* @throws Exception
@ -299,7 +303,7 @@ class RuleController extends Controller
* Update a rule.
*
* @param RuleRequest $request
* @param Rule $rule
* @param Rule $rule
*
* @return JsonResponse
*/

View File

@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers;
use Carbon\Carbon;
use Exception;
use FireflyIII\Api\V1\Requests\RuleGroupRequest;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Jobs\ExecuteRuleOnExistingTransactions;
@ -47,7 +48,6 @@ use League\Fractal\Resource\Collection as FractalCollection;
use League\Fractal\Resource\Item;
use League\Fractal\Serializer\JsonApiSerializer;
use Log;
use Exception;
/**
* Class RuleGroupController
@ -88,7 +88,7 @@ class RuleGroupController extends Controller
* @param RuleGroup $ruleGroup
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function delete(RuleGroup $ruleGroup): JsonResponse
{
@ -103,7 +103,7 @@ class RuleGroupController extends Controller
* @param Request $request
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function index(Request $request): JsonResponse
{
@ -137,11 +137,11 @@ class RuleGroupController extends Controller
}
/**
* @param Request $request
* @param Request $request
* @param RuleGroup $group
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function rules(Request $request, RuleGroup $group): JsonResponse
{
@ -178,11 +178,11 @@ class RuleGroupController extends Controller
/**
* List single resource.
*
* @param Request $request
* @param Request $request
* @param RuleGroup $ruleGroup
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, RuleGroup $ruleGroup): JsonResponse
{
@ -225,7 +225,7 @@ class RuleGroupController extends Controller
}
/**
* @param Request $request
* @param Request $request
* @param RuleGroup $group
*
* @return JsonResponse
@ -284,10 +284,55 @@ class RuleGroupController extends Controller
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
}
/**
* @param Request $request
*
* @return array
*/
private function getTestParameters(Request $request): array
{
return [
'page_size' => (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data,
'page' => 0 === (int)$request->query('page') ? 1 : (int)$request->query('page'),
'start_date' => null === $request->query('start_date') ? null : Carbon::createFromFormat('Y-m-d', $request->query('start_date')),
'end_date' => null === $request->query('end_date') ? null : Carbon::createFromFormat('Y-m-d', $request->query('end_date')),
'search_limit' => 0 === (int)$request->query('search_limit') ? (int)config('firefly.test-triggers.limit') : (int)$request->query('search_limit'),
'trigger_limit' => 0 === (int)$request->query('triggered_limit')
? (int)config('firefly.test-triggers.range')
: (int)$request->query(
'triggered_limit'
),
'account_list' => '' === (string)$request->query('accounts') ? [] : explode(',', $request->query('accounts')),
];
}
/**
* @param array $accounts
*
* @return Collection
*/
private function getAccountParameter(array $accounts): Collection
{
$return = new Collection;
foreach ($accounts as $accountId) {
Log::debug(sprintf('Searching for asset account with id "%s"', $accountId));
$account = $this->accountRepository->findNull((int)$accountId);
if (null !== $account && AccountType::ASSET === $account->accountType->type) {
Log::debug(sprintf('Found account #%d ("%s") and its an asset account', $account->id, $account->name));
$return->push($account);
}
if (null === $account) {
Log::debug(sprintf('No asset account with id "%s"', $accountId));
}
}
return $return;
}
/**
* Execute the given rule group on a set of existing transactions.
*
* @param Request $request
* @param Request $request
* @param RuleGroup $group
*
* @return JsonResponse
@ -339,7 +384,7 @@ class RuleGroupController extends Controller
* TODO update order of rule group
*
* @param RuleGroupRequest $request
* @param RuleGroup $ruleGroup
* @param RuleGroup $ruleGroup
*
* @return JsonResponse
*/
@ -359,49 +404,4 @@ class RuleGroupController extends Controller
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
}
/**
* @param array $accounts
*
* @return Collection
*/
private function getAccountParameter(array $accounts): Collection
{
$return = new Collection;
foreach ($accounts as $accountId) {
Log::debug(sprintf('Searching for asset account with id "%s"', $accountId));
$account = $this->accountRepository->findNull((int)$accountId);
if (null !== $account && AccountType::ASSET === $account->accountType->type) {
Log::debug(sprintf('Found account #%d ("%s") and its an asset account', $account->id, $account->name));
$return->push($account);
}
if (null === $account) {
Log::debug(sprintf('No asset account with id "%s"', $accountId));
}
}
return $return;
}
/**
* @param Request $request
*
* @return array
*/
private function getTestParameters(Request $request): array
{
return [
'page_size' => (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data,
'page' => 0 === (int)$request->query('page') ? 1 : (int)$request->query('page'),
'start_date' => null === $request->query('start_date') ? null : Carbon::createFromFormat('Y-m-d', $request->query('start_date')),
'end_date' => null === $request->query('end_date') ? null : Carbon::createFromFormat('Y-m-d', $request->query('end_date')),
'search_limit' => 0 === (int)$request->query('search_limit') ? (int)config('firefly.test-triggers.limit') : (int)$request->query('search_limit'),
'trigger_limit' => 0 === (int)$request->query('triggered_limit')
? (int)config('firefly.test-triggers.range')
: (int)$request->query(
'triggered_limit'
),
'account_list' => '' === (string)$request->query('accounts') ? [] : explode(',', $request->query('accounts')),
];
}
}

View File

@ -99,7 +99,9 @@ class SummaryController extends Controller
if ('' === $start || '' === $end) {
throw new FireflyException('Start and end are mandatory parameters.');
}
/** @var Carbon $start */
$start = Carbon::createFromFormat('Y-m-d', $start);
/** @var Carbon $end */
$end = Carbon::createFromFormat('Y-m-d', $end);
// balance information:
$balanceData = $this->getBalanceInformation($start, $end);
@ -114,50 +116,6 @@ class SummaryController extends Controller
}
/**
* Check if date is outside session range.
*
* @param Carbon $date
*
* @param Carbon $start
* @param Carbon $end
*
* @return bool
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
protected function notInDateRange(Carbon $date, Carbon $start, Carbon $end): bool // Validate a preference
{
$result = false;
if ($start->greaterThanOrEqualTo($date) && $end->greaterThanOrEqualTo($date)) {
$result = true;
}
// start and end in the past? use $end
if ($start->lessThanOrEqualTo($date) && $end->lessThanOrEqualTo($date)) {
$result = true;
}
return $result;
}
/**
* This method will scroll through the results of the spentInPeriodMc() array and return the correct info.
*
* @param array $spentInfo
* @param TransactionCurrency $currency
*
* @return float
*/
private function findInSpentArray(array $spentInfo, TransactionCurrency $currency): float
{
foreach ($spentInfo as $array) {
if ($array['currency_id'] === $currency->id) {
return $array['amount'];
}
}
return 0.0;
}
/**
* @param Carbon $start
* @param Carbon $end
@ -368,6 +326,25 @@ class SummaryController extends Controller
return $return;
}
/**
* This method will scroll through the results of the spentInPeriodMc() array and return the correct info.
*
* @param array $spentInfo
* @param TransactionCurrency $currency
*
* @return float
*/
private function findInSpentArray(array $spentInfo, TransactionCurrency $currency): float
{
foreach ($spentInfo as $array) {
if ($array['currency_id'] === $currency->id) {
return $array['amount'];
}
}
return 0.0;
}
/**
* @param Carbon $start
* @param Carbon $end
@ -428,4 +405,29 @@ class SummaryController extends Controller
return $return;
}
/**
* Check if date is outside session range.
*
* @param Carbon $date
*
* @param Carbon $start
* @param Carbon $end
*
* @return bool
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
protected function notInDateRange(Carbon $date, Carbon $start, Carbon $end): bool // Validate a preference
{
$result = false;
if ($start->greaterThanOrEqualTo($date) && $end->greaterThanOrEqualTo($date)) {
$result = true;
}
// start and end in the past? use $end
if ($start->lessThanOrEqualTo($date) && $end->lessThanOrEqualTo($date)) {
$result = true;
}
return $result;
}
}

View File

@ -87,7 +87,9 @@ class TagController extends Controller
if ('' === $start || '' === $end) {
throw new FireflyException('Start and end are mandatory parameters.');
}
/** @var Carbon $start */
$start = Carbon::createFromFormat('Y-m-d', $start);
/** @var Carbon $end */
$end = Carbon::createFromFormat('Y-m-d', $end);
// get all tags:
@ -180,7 +182,7 @@ class TagController extends Controller
* List single resource.
*
* @param Request $request
* @param Tag $tag
* @param Tag $tag
*
* @return JsonResponse
* @codeCoverageIgnore
@ -228,7 +230,7 @@ class TagController extends Controller
* Show all transactions.
*
* @param Request $request
* @param Tag $tag
* @param Tag $tag
*
* @return JsonResponse
* @codeCoverageIgnore
@ -284,7 +286,7 @@ class TagController extends Controller
* Update a rule.
*
* @param TagRequest $request
* @param Tag $tag
* @param Tag $tag
*
* @return JsonResponse
*/

View File

@ -81,7 +81,7 @@ class TransactionLinkController extends Controller
* @param TransactionJournalLink $link
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function delete(TransactionJournalLink $link): JsonResponse
{
@ -96,7 +96,7 @@ class TransactionLinkController extends Controller
* @param Request $request
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function index(Request $request): JsonResponse
{
@ -137,11 +137,11 @@ class TransactionLinkController extends Controller
/**
* List single resource.
*
* @param Request $request
* @param Request $request
* @param TransactionJournalLink $journalLink
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, TransactionJournalLink $journalLink): JsonResponse
{

View File

@ -70,11 +70,11 @@ class UserController extends Controller
/**
* Remove the specified resource from storage.
*
* @param \FireflyIII\User $user
* @param User $user
*
* @return JsonResponse
* @throws FireflyException
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function delete(User $user): JsonResponse
{
@ -94,7 +94,7 @@ class UserController extends Controller
* @param Request $request
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function index(Request $request): JsonResponse
{
@ -130,10 +130,10 @@ class UserController extends Controller
* Show a single user.
*
* @param Request $request
* @param User $user
* @param User $user
*
* @return JsonResponse
* @codeCoverageIgnore
* @codeCoverageIgnore
*/
public function show(Request $request, User $user): JsonResponse
{
@ -184,7 +184,7 @@ class UserController extends Controller
* Update a user.
*
* @param UserRequest $request
* @param User $user
* @param User $user
*
* @return JsonResponse
*/

View File

@ -24,7 +24,6 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests;
use Exception;
use FireflyIII\Rules\IsBoolean;
/**

View File

@ -24,7 +24,6 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests;
use Exception;
use FireflyIII\Rules\IsBoolean;
/**

View File

@ -25,7 +25,6 @@ namespace FireflyIII\Api\V1\Requests;
use FireflyIII\Models\Bill;
use FireflyIII\Models\ImportJob;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Rules\IsValidAttachmentModel;

View File

@ -23,8 +23,6 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Requests;
use Exception;
/**
* Class AvailableBudgetRequest
*

View File

@ -90,7 +90,7 @@ class BillRequest extends Request
'date' => 'required|date',
'repeat_freq' => 'required|in:weekly,monthly,quarterly,half-year,yearly',
'skip' => 'between:0,31',
'automatch' => [new IsBoolean],
'automatch' => [new IsBoolean], // TODO isn't automatch deprecated?
'active' => [new IsBoolean],
'notes' => 'between:1,65536',
];

View File

@ -86,6 +86,68 @@ class RecurrenceStoreRequest extends Request
return $return;
}
/**
* Returns the transaction data as it is found in the submitted data. It's a complex method according to code
* standards but it just has a lot of ??-statements because of the fields that may or may not exist.
*
* @return array
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
private function getTransactionData(): array
{
$return = [];
// transaction data:
/** @var array $transactions */
$transactions = $this->get('transactions');
/** @var array $transaction */
foreach ($transactions as $transaction) {
$return[] = [
'amount' => $transaction['amount'],
'currency_id' => isset($transaction['currency_id']) ? (int)$transaction['currency_id'] : null,
'currency_code' => $transaction['currency_code'] ?? null,
'foreign_amount' => $transaction['foreign_amount'] ?? null,
'foreign_currency_id' => isset($transaction['foreign_currency_id']) ? (int)$transaction['foreign_currency_id'] : null,
'foreign_currency_code' => $transaction['foreign_currency_code'] ?? null,
'budget_id' => isset($transaction['budget_id']) ? (int)$transaction['budget_id'] : null,
'budget_name' => $transaction['budget_name'] ?? null,
'category_id' => isset($transaction['category_id']) ? (int)$transaction['category_id'] : null,
'category_name' => $transaction['category_name'] ?? null,
'source_id' => isset($transaction['source_id']) ? (int)$transaction['source_id'] : null,
'source_name' => isset($transaction['source_name']) ? (string)$transaction['source_name'] : null,
'destination_id' => isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null,
'destination_name' => isset($transaction['destination_name']) ? (string)$transaction['destination_name'] : null,
'description' => $transaction['description'],
];
}
return $return;
}
/**
* Returns the repetition data as it is found in the submitted data.
*
* @return array
*/
private function getRepetitionData(): array
{
$return = [];
// repetition data:
/** @var array $repetitions */
$repetitions = $this->get('repetitions');
/** @var array $repetition */
foreach ($repetitions as $repetition) {
$return[] = [
'type' => $repetition['type'],
'moment' => $repetition['moment'],
'skip' => (int)$repetition['skip'],
'weekend' => (int)$repetition['weekend'],
];
}
return $return;
}
/**
* The rules that the incoming request must be matched against.
*
@ -131,7 +193,7 @@ class RecurrenceStoreRequest extends Request
/**
* Configure the validator instance.
*
* @param Validator $validator
* @param Validator $validator
*
* @return void
*/
@ -148,67 +210,4 @@ class RecurrenceStoreRequest extends Request
}
);
}
/**
* Returns the repetition data as it is found in the submitted data.
*
* @return array
*/
private function getRepetitionData(): array
{
$return = [];
// repetition data:
/** @var array $repetitions */
$repetitions = $this->get('repetitions');
/** @var array $repetition */
foreach ($repetitions as $repetition) {
$return[] = [
'type' => $repetition['type'],
'moment' => $repetition['moment'],
'skip' => (int)$repetition['skip'],
'weekend' => (int)$repetition['weekend'],
];
}
return $return;
}
/**
* Returns the transaction data as it is found in the submitted data. It's a complex method according to code
* standards but it just has a lot of ??-statements because of the fields that may or may not exist.
*
* @return array
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
private function getTransactionData(): array
{
$return = [];
// transaction data:
/** @var array $transactions */
$transactions = $this->get('transactions');
/** @var array $transaction */
foreach ($transactions as $transaction) {
$return[] = [
'amount' => $transaction['amount'],
'currency_id' => isset($transaction['currency_id']) ? (int)$transaction['currency_id'] : null,
'currency_code' => $transaction['currency_code'] ?? null,
'foreign_amount' => $transaction['foreign_amount'] ?? null,
'foreign_currency_id' => isset($transaction['foreign_currency_id']) ? (int)$transaction['foreign_currency_id'] : null,
'foreign_currency_code' => $transaction['foreign_currency_code'] ?? null,
'budget_id' => isset($transaction['budget_id']) ? (int)$transaction['budget_id'] : null,
'budget_name' => $transaction['budget_name'] ?? null,
'category_id' => isset($transaction['category_id']) ? (int)$transaction['category_id'] : null,
'category_name' => $transaction['category_name'] ?? null,
'source_id' => isset($transaction['source_id']) ? (int)$transaction['source_id'] : null,
'source_name' => isset($transaction['source_name']) ? (string)$transaction['source_name'] : null,
'destination_id' => isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null,
'destination_name' => isset($transaction['destination_name']) ? (string)$transaction['destination_name'] : null,
'description' => $transaction['description'],
];
}
return $return;
}
}

View File

@ -86,6 +86,68 @@ class RecurrenceUpdateRequest extends Request
return $return;
}
/**
* Returns the transaction data as it is found in the submitted data. It's a complex method according to code
* standards but it just has a lot of ??-statements because of the fields that may or may not exist.
*
* @return array
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
private function getTransactionData(): array
{
$return = [];
// transaction data:
/** @var array $transactions */
$transactions = $this->get('transactions');
/** @var array $transaction */
foreach ($transactions as $transaction) {
$return[] = [
'amount' => $transaction['amount'],
'currency_id' => isset($transaction['currency_id']) ? (int)$transaction['currency_id'] : null,
'currency_code' => $transaction['currency_code'] ?? null,
'foreign_amount' => $transaction['foreign_amount'] ?? null,
'foreign_currency_id' => isset($transaction['foreign_currency_id']) ? (int)$transaction['foreign_currency_id'] : null,
'foreign_currency_code' => $transaction['foreign_currency_code'] ?? null,
'budget_id' => isset($transaction['budget_id']) ? (int)$transaction['budget_id'] : null,
'budget_name' => $transaction['budget_name'] ?? null,
'category_id' => isset($transaction['category_id']) ? (int)$transaction['category_id'] : null,
'category_name' => $transaction['category_name'] ?? null,
'source_id' => isset($transaction['source_id']) ? (int)$transaction['source_id'] : null,
'source_name' => isset($transaction['source_name']) ? (string)$transaction['source_name'] : null,
'destination_id' => isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null,
'destination_name' => isset($transaction['destination_name']) ? (string)$transaction['destination_name'] : null,
'description' => $transaction['description'],
];
}
return $return;
}
/**
* Returns the repetition data as it is found in the submitted data.
*
* @return array
*/
private function getRepetitionData(): array
{
$return = [];
// repetition data:
/** @var array $repetitions */
$repetitions = $this->get('repetitions');
/** @var array $repetition */
foreach ($repetitions as $repetition) {
$return[] = [
'type' => $repetition['type'],
'moment' => $repetition['moment'],
'skip' => (int)$repetition['skip'],
'weekend' => (int)$repetition['weekend'],
];
}
return $return;
}
/**
* The rules that the incoming request must be matched against.
*
@ -131,7 +193,7 @@ class RecurrenceUpdateRequest extends Request
/**
* Configure the validator instance.
*
* @param Validator $validator
* @param Validator $validator
*
* @return void
*/
@ -148,67 +210,4 @@ class RecurrenceUpdateRequest extends Request
}
);
}
/**
* Returns the repetition data as it is found in the submitted data.
*
* @return array
*/
private function getRepetitionData(): array
{
$return = [];
// repetition data:
/** @var array $repetitions */
$repetitions = $this->get('repetitions');
/** @var array $repetition */
foreach ($repetitions as $repetition) {
$return[] = [
'type' => $repetition['type'],
'moment' => $repetition['moment'],
'skip' => (int)$repetition['skip'],
'weekend' => (int)$repetition['weekend'],
];
}
return $return;
}
/**
* Returns the transaction data as it is found in the submitted data. It's a complex method according to code
* standards but it just has a lot of ??-statements because of the fields that may or may not exist.
*
* @return array
* @SuppressWarnings(PHPMD.NPathComplexity)
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
private function getTransactionData(): array
{
$return = [];
// transaction data:
/** @var array $transactions */
$transactions = $this->get('transactions');
/** @var array $transaction */
foreach ($transactions as $transaction) {
$return[] = [
'amount' => $transaction['amount'],
'currency_id' => isset($transaction['currency_id']) ? (int)$transaction['currency_id'] : null,
'currency_code' => $transaction['currency_code'] ?? null,
'foreign_amount' => $transaction['foreign_amount'] ?? null,
'foreign_currency_id' => isset($transaction['foreign_currency_id']) ? (int)$transaction['foreign_currency_id'] : null,
'foreign_currency_code' => $transaction['foreign_currency_code'] ?? null,
'budget_id' => isset($transaction['budget_id']) ? (int)$transaction['budget_id'] : null,
'budget_name' => $transaction['budget_name'] ?? null,
'category_id' => isset($transaction['category_id']) ? (int)$transaction['category_id'] : null,
'category_name' => $transaction['category_name'] ?? null,
'source_id' => isset($transaction['source_id']) ? (int)$transaction['source_id'] : null,
'source_name' => isset($transaction['source_name']) ? (string)$transaction['source_name'] : null,
'destination_id' => isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null,
'destination_name' => isset($transaction['destination_name']) ? (string)$transaction['destination_name'] : null,
'description' => $transaction['description'],
];
}
return $return;
}
}

View File

@ -25,6 +25,7 @@ namespace FireflyIII\Api\V1\Requests;
use FireflyIII\Rules\IsBoolean;
use Illuminate\Validation\Validator;
use function is_array;
/**
@ -79,6 +80,48 @@ class RuleRequest extends Request
return $data;
}
/**
* @return array
*/
private function getRuleTriggers(): array
{
$triggers = $this->get('triggers');
$return = [];
if (is_array($triggers)) {
foreach ($triggers as $trigger) {
$return[] = [
'type' => $trigger['type'],
'value' => $trigger['value'],
'active' => $this->convertBoolean((string)($trigger['active'] ?? 'false')),
'stop_processing' => $this->convertBoolean((string)($trigger['stop_processing'] ?? 'false')),
];
}
}
return $return;
}
/**
* @return array
*/
private function getRuleActions(): array
{
$actions = $this->get('actions');
$return = [];
if (is_array($actions)) {
foreach ($actions as $action) {
$return[] = [
'type' => $action['type'],
'value' => $action['value'],
'active' => $this->convertBoolean((string)($action['active'] ?? 'false')),
'stop_processing' => $this->convertBoolean((string)($action['stop_processing'] ?? 'false')),
];
}
}
return $return;
}
/**
* The rules that the incoming request must be matched against.
*
@ -117,7 +160,7 @@ class RuleRequest extends Request
/**
* Configure the validator instance.
*
* @param Validator $validator
* @param Validator $validator
*
* @return void
*/
@ -131,6 +174,21 @@ class RuleRequest extends Request
);
}
/**
* Adds an error to the validator when there are no repetitions in the array of data.
*
* @param Validator $validator
*/
protected function atLeastOneTrigger(Validator $validator): void
{
$data = $validator->getData();
$triggers = $data['triggers'] ?? [];
// need at least one trigger
if (0 === count($triggers)) {
$validator->errors()->add('title', (string)trans('validation.at_least_one_trigger'));
}
}
/**
* Adds an error to the validator when there are no repetitions in the array of data.
*
@ -145,61 +203,4 @@ class RuleRequest extends Request
$validator->errors()->add('title', (string)trans('validation.at_least_one_action'));
}
}
/**
* Adds an error to the validator when there are no repetitions in the array of data.
*
* @param Validator $validator
*/
protected function atLeastOneTrigger(Validator $validator): void
{
$data = $validator->getData();
$triggers = $data['triggers'] ?? [];
// need at least one trugger
if (0 === count($triggers)) {
$validator->errors()->add('title', (string)trans('validation.at_least_one_trigger'));
}
}
/**
* @return array
*/
private function getRuleActions(): array
{
$actions = $this->get('actions');
$return = [];
if (\is_array($actions)) {
foreach ($actions as $action) {
$return[] = [
'type' => $action['type'],
'value' => $action['value'],
'active' => $this->convertBoolean((string)($action['active'] ?? 'false')),
'stop_processing' => $this->convertBoolean((string)($action['stop_processing'] ?? 'false')),
];
}
}
return $return;
}
/**
* @return array
*/
private function getRuleTriggers(): array
{
$triggers = $this->get('triggers');
$return = [];
if (\is_array($triggers)) {
foreach ($triggers as $trigger) {
$return[] = [
'type' => $trigger['type'],
'value' => $trigger['value'],
'active' => $this->convertBoolean((string)($trigger['active'] ?? 'false')),
'stop_processing' => $this->convertBoolean((string)($trigger['stop_processing'] ?? 'false')),
];
}
}
return $return;
}
}

View File

@ -81,7 +81,7 @@ class TransactionLinkRequest extends Request
/**
* Configure the validator instance.
*
* @param Validator $validator
* @param Validator $validator
*
* @return void
*/

View File

@ -67,6 +67,101 @@ class TransactionStoreRequest extends Request
return $data;
}
/**
* Get transaction data.
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @return array
*/
private function getTransactionData(): array
{
$return = [];
/**
* @var int $index
* @var array $transaction
*/
foreach ($this->get('transactions') as $index => $transaction) {
$object = new NullArrayObject($transaction);
$return[] = [
'type' => $this->stringFromValue($object['type']),
'date' => $this->dateFromValue($object['date']),
'order' => $this->integerFromValue((string)$object['order']),
'currency_id' => $this->integerFromValue($object['currency_id']),
'currency_code' => $this->stringFromValue($object['currency_code']),
// foreign currency info:
'foreign_currency_id' => $this->integerFromValue((string)$object['foreign_currency_id']),
'foreign_currency_code' => $this->stringFromValue($object['foreign_currency_code']),
// amount and foreign amount. Cannot be 0.
'amount' => $this->stringFromValue((string)$object['amount']),
'foreign_amount' => $this->stringFromValue((string)$object['foreign_amount']),
// description.
'description' => $this->stringFromValue($object['description']),
// source of transaction. If everything is null, assume cash account.
'source_id' => $this->integerFromValue((string)$object['source_id']),
'source_name' => $this->stringFromValue($object['source_name']),
// destination of transaction. If everything is null, assume cash account.
'destination_id' => $this->integerFromValue((string)$object['destination_id']),
'destination_name' => $this->stringFromValue($object['destination_name']),
// budget info
'budget_id' => $this->integerFromValue((string)$object['budget_id']),
'budget_name' => $this->stringFromValue($object['budget_name']),
// category info
'category_id' => $this->integerFromValue((string)$object['category_id']),
'category_name' => $this->stringFromValue($object['category_name']),
// journal bill reference. Optional. Will only work for withdrawals
'bill_id' => $this->integerFromValue((string)$object['bill_id']),
'bill_name' => $this->stringFromValue($object['bill_name']),
// piggy bank reference. Optional. Will only work for transfers
'piggy_bank_id' => $this->integerFromValue((string)$object['piggy_bank_id']),
'piggy_bank_name' => $this->stringFromValue($object['piggy_bank_name']),
// some other interesting properties
'reconciled' => $this->convertBoolean((string)$object['reconciled']),
'notes' => $this->stringFromValue($object['notes']),
'tags' => $this->arrayFromValue($object['tags']),
// all custom fields:
'internal_reference' => $this->stringFromValue($object['internal_reference']),
'external_id' => $this->stringFromValue($object['external_id']),
'original_source' => sprintf('ff3-v%s|api-v%s', config('firefly.version'), config('firefly.api_version')),
'recurrence_id' => $this->integerFromValue($object['recurrence_id']),
'bunq_payment_id' => $this->stringFromValue($object['bunq_payment_id']),
'sepa_cc' => $this->stringFromValue($object['sepa_cc']),
'sepa_ct_op' => $this->stringFromValue($object['sepa_ct_op']),
'sepa_ct_id' => $this->stringFromValue($object['sepa_ct_id']),
'sepa_db' => $this->stringFromValue($object['sepa_db']),
'sepa_country' => $this->stringFromValue($object['sepa_country']),
'sepa_ep' => $this->stringFromValue($object['sepa_ep']),
'sepa_ci' => $this->stringFromValue($object['sepa_ci']),
'sepa_batch_id' => $this->stringFromValue($object['sepa_batch_id']),
// custom date fields. Must be Carbon objects. Presence is optional.
'interest_date' => $this->dateFromValue($object['interest_date']),
'book_date' => $this->dateFromValue($object['book_date']),
'process_date' => $this->dateFromValue($object['process_date']),
'due_date' => $this->dateFromValue($object['due_date']),
'payment_date' => $this->dateFromValue($object['payment_date']),
'invoice_date' => $this->dateFromValue($object['invoice_date']),
];
}
return $return;
}
/**
* The rules that the incoming request must be matched against.
*
@ -187,99 +282,4 @@ class TransactionStoreRequest extends Request
}
);
}
/**
* Get transaction data.
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @return array
*/
private function getTransactionData(): array
{
$return = [];
/**
* @var int $index
* @var array $transaction
*/
foreach ($this->get('transactions') as $index => $transaction) {
$object = new NullArrayObject($transaction);
$return[] = [
'type' => $this->stringFromValue($object['type']),
'date' => $this->dateFromValue($object['date']),
'order' => $this->integerFromValue((string)$object['order']),
'currency_id' => $this->integerFromValue($object['currency_id']),
'currency_code' => $this->stringFromValue($object['currency_code']),
// foreign currency info:
'foreign_currency_id' => $this->integerFromValue((string)$object['foreign_currency_id']),
'foreign_currency_code' => $this->stringFromValue($object['foreign_currency_code']),
// amount and foreign amount. Cannot be 0.
'amount' => $this->stringFromValue((string)$object['amount']),
'foreign_amount' => $this->stringFromValue((string)$object['foreign_amount']),
// description.
'description' => $this->stringFromValue($object['description']),
// source of transaction. If everything is null, assume cash account.
'source_id' => $this->integerFromValue((string)$object['source_id']),
'source_name' => $this->stringFromValue($object['source_name']),
// destination of transaction. If everything is null, assume cash account.
'destination_id' => $this->integerFromValue((string)$object['destination_id']),
'destination_name' => $this->stringFromValue($object['destination_name']),
// budget info
'budget_id' => $this->integerFromValue((string)$object['budget_id']),
'budget_name' => $this->stringFromValue($object['budget_name']),
// category info
'category_id' => $this->integerFromValue((string)$object['category_id']),
'category_name' => $this->stringFromValue($object['category_name']),
// journal bill reference. Optional. Will only work for withdrawals
'bill_id' => $this->integerFromValue((string)$object['bill_id']),
'bill_name' => $this->stringFromValue($object['bill_name']),
// piggy bank reference. Optional. Will only work for transfers
'piggy_bank_id' => $this->integerFromValue((string)$object['piggy_bank_id']),
'piggy_bank_name' => $this->stringFromValue($object['piggy_bank_name']),
// some other interesting properties
'reconciled' => $this->convertBoolean((string)$object['reconciled']),
'notes' => $this->stringFromValue($object['notes']),
'tags' => $this->arrayFromValue($object['tags']),
// all custom fields:
'internal_reference' => $this->stringFromValue($object['internal_reference']),
'external_id' => $this->stringFromValue($object['external_id']),
'original_source' => sprintf('ff3-v%s|api-v%s', config('firefly.version'), config('firefly.api_version')),
'recurrence_id' => $this->integerFromValue($object['recurrence_id']),
'bunq_payment_id' => $this->stringFromValue($object['bunq_payment_id']),
'sepa_cc' => $this->stringFromValue($object['sepa_cc']),
'sepa_ct_op' => $this->stringFromValue($object['sepa_ct_op']),
'sepa_ct_id' => $this->stringFromValue($object['sepa_ct_id']),
'sepa_db' => $this->stringFromValue($object['sepa_db']),
'sepa_country' => $this->stringFromValue($object['sepa_country']),
'sepa_ep' => $this->stringFromValue($object['sepa_ep']),
'sepa_ci' => $this->stringFromValue($object['sepa_ci']),
'sepa_batch_id' => $this->stringFromValue($object['sepa_batch_id']),
// custom date fields. Must be Carbon objects. Presence is optional.
'interest_date' => $this->dateFromValue($object['interest_date']),
'book_date' => $this->dateFromValue($object['book_date']),
'process_date' => $this->dateFromValue($object['process_date']),
'due_date' => $this->dateFromValue($object['due_date']),
'payment_date' => $this->dateFromValue($object['payment_date']),
'invoice_date' => $this->dateFromValue($object['invoice_date']),
];
}
return $return;
}
}

View File

@ -136,6 +136,60 @@ class TransactionUpdateRequest extends Request
return $data;
}
/**
* Get transaction data.
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @return array
*/
private function getTransactionData(): array
{
$return = [];
/**
* @var int $index
* @var array $transaction
*/
foreach ($this->get('transactions') as $index => $transaction) {
// default response is to update nothing in the transaction:
$current = [];
// for each field, add it to the array if a reference is present in the request:
foreach ($this->integerFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->integerFromValue((string)$transaction[$fieldName]);
}
}
foreach ($this->stringFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->stringFromValue((string)$transaction[$fieldName]);
}
}
foreach ($this->dateFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->dateFromValue((string)$transaction[$fieldName]);
}
}
foreach ($this->booleanFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->convertBoolean((string)$transaction[$fieldName]);
}
}
foreach ($this->arrayFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->arrayFromValue($transaction[$fieldName]);
}
}
$return[] = $current;
}
return $return;
}
/**
* The rules that the incoming request must be matched against.
*
@ -261,58 +315,4 @@ class TransactionUpdateRequest extends Request
}
);
}
/**
* Get transaction data.
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
* @return array
*/
private function getTransactionData(): array
{
$return = [];
/**
* @var int $index
* @var array $transaction
*/
foreach ($this->get('transactions') as $index => $transaction) {
// default response is to update nothing in the transaction:
$current = [];
// for each field, add it to the array if a reference is present in the request:
foreach ($this->integerFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->integerFromValue((string)$transaction[$fieldName]);
}
}
foreach ($this->stringFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->stringFromValue((string)$transaction[$fieldName]);
}
}
foreach ($this->dateFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->dateFromValue((string)$transaction[$fieldName]);
}
}
foreach ($this->booleanFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->convertBoolean((string)$transaction[$fieldName]);
}
}
foreach ($this->arrayFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->arrayFromValue($transaction[$fieldName]);
}
}
$return[] = $current;
}
return $return;
}
}