Changed a lot of parameters.

This commit is contained in:
James Cole 2016-02-05 09:25:15 +01:00
parent 554640c345
commit 78bcd3e1bb
64 changed files with 539 additions and 572 deletions

View File

@ -30,9 +30,9 @@ class TransactionJournalStored extends Event
* Create a new event instance.
*
* @param TransactionJournal $journal
* @param $piggyBankId
* @param int $piggyBankId
*/
public function __construct(TransactionJournal $journal, $piggyBankId)
public function __construct(TransactionJournal $journal, int $piggyBankId)
{
//
$this->journal = $journal;

View File

@ -46,7 +46,7 @@ class BasicCollector
/**
* @param Collection $files
*/
public function setFiles($files)
public function setFiles(Collection $files)
{
$this->files = $files;
}

View File

@ -8,6 +8,7 @@
*/
namespace FireflyIII\Export\Collector;
use Illuminate\Support\Collection;
/**
* Interface CollectorInterface
@ -16,6 +17,20 @@ namespace FireflyIII\Export\Collector;
*/
interface CollectorInterface
{
/**
* @return bool
*/
public function run();
/**
* @return Collection
*/
public function getFiles();
/**
* @param Collection $files
*
*/
public function setFiles(Collection $files);
}

View File

@ -31,6 +31,9 @@ class UploadCollector extends BasicCollector implements CollectorInterface
parent::__construct($job);
}
/**
*
*/
public function run()
{
// grab upload directory.

View File

@ -79,7 +79,7 @@ class Entry
/**
* @param string $amount
*/
public function setAmount($amount)
public function setAmount(string $amount)
{
$this->amount = $amount;
}
@ -95,7 +95,7 @@ class Entry
/**
* @param string $date
*/
public function setDate($date)
public function setDate(string $date)
{
$this->date = $date;
}
@ -111,7 +111,7 @@ class Entry
/**
* @param string $description
*/
public function setDescription($description)
public function setDescription(string $description)
{
$this->description = $description;
}

View File

@ -27,7 +27,7 @@ interface BillChartGeneratorInterface
*
* @return array
*/
public function frontpage($paid, $unpaid);
public function frontpage(string $paid, string $unpaid);
/**
* @param Bill $bill

View File

@ -27,7 +27,7 @@ class ChartJsBillChartGenerator implements BillChartGeneratorInterface
*
* @return array
*/
public function frontpage($paid, $unpaid)
public function frontpage(string $paid, string $unpaid)
{
bcscale(2);
$data = [

View File

@ -52,7 +52,7 @@ class ChartJsReportChartGenerator implements ReportChartGeneratorInterface
*
* @return array
*/
public function multiYearInOutSummarized($income, $expense, $count)
public function multiYearInOutSummarized(string $income, string $expense, int $count)
{
$data = [
'count' => 2,
@ -117,7 +117,7 @@ class ChartJsReportChartGenerator implements ReportChartGeneratorInterface
*
* @return array
*/
public function yearInOutSummarized($income, $expense, $count)
public function yearInOutSummarized(string $income, string $expense, int $count)
{
$data = [

View File

@ -33,7 +33,7 @@ interface ReportChartGeneratorInterface
*
* @return array
*/
public function multiYearInOutSummarized($income, $expense, $count);
public function multiYearInOutSummarized(string $income, string $expense, int $count);
/**
* @param Collection $entries
@ -49,6 +49,6 @@ interface ReportChartGeneratorInterface
*
* @return array
*/
public function yearInOutSummarized($income, $expense, $count);
public function yearInOutSummarized(string $income, string $expense, int $count);
}

View File

@ -15,11 +15,11 @@ class Account
/** @var Collection */
protected $accounts;
/** @var float */
/** @var string */
protected $difference;
/** @var float */
/** @var string */
protected $end;
/** @var float */
/** @var string */
protected $start;
/**
@ -31,15 +31,15 @@ class Account
}
/**
* @param \Illuminate\Support\Collection $accounts
* @param Collection $accounts
*/
public function setAccounts($accounts)
public function setAccounts(Collection $accounts)
{
$this->accounts = $accounts;
}
/**
* @return float
* @return string
*/
public function getDifference()
{
@ -47,15 +47,15 @@ class Account
}
/**
* @param float $difference
* @param string $difference
*/
public function setDifference($difference)
public function setDifference(string $difference)
{
$this->difference = $difference;
}
/**
* @return float
* @return string
*/
public function getEnd()
{
@ -63,15 +63,15 @@ class Account
}
/**
* @param float $end
* @param string $end
*/
public function setEnd($end)
public function setEnd(string $end)
{
$this->end = $end;
}
/**
* @return float
* @return string
*/
public function getStart()
{
@ -79,9 +79,9 @@ class Account
}
/**
* @param float $start
* @param string $start
*/
public function setStart($start)
public function setStart(string $start)
{
$this->start = $start;
}

View File

@ -47,7 +47,7 @@ class Balance
/**
* @param BalanceHeader $balanceHeader
*/
public function setBalanceHeader($balanceHeader)
public function setBalanceHeader(BalanceHeader $balanceHeader)
{
$this->balanceHeader = $balanceHeader;
}

View File

@ -17,10 +17,10 @@ class BalanceEntry
/** @var AccountModel */
protected $account;
/** @var float */
protected $left = 0.0;
/** @var float */
protected $spent = 0.0;
/** @var string */
protected $left = '0';
/** @var string */
protected $spent = '0';
/**
* @return AccountModel
@ -33,13 +33,13 @@ class BalanceEntry
/**
* @param AccountModel $account
*/
public function setAccount($account)
public function setAccount(AccountModel $account)
{
$this->account = $account;
}
/**
* @return float
* @return string
*/
public function getLeft()
{
@ -47,15 +47,15 @@ class BalanceEntry
}
/**
* @param float $left
* @param string $left
*/
public function setLeft($left)
public function setLeft(string $left)
{
$this->left = $left;
}
/**
* @return float
* @return string
*/
public function getSpent()
{
@ -63,9 +63,9 @@ class BalanceEntry
}
/**
* @param float $spent
* @param string $spent
*/
public function setSpent($spent)
public function setSpent(string $spent)
{
$this->spent = $spent;
}

View File

@ -25,6 +25,7 @@ class BalanceLine
/** @var BudgetModel */
protected $budget;
/** @var int */
protected $role = self::ROLE_DEFAULTROLE;
/**
@ -54,7 +55,7 @@ class BalanceLine
/**
* @param Collection $balanceEntries
*/
public function setBalanceEntries($balanceEntries)
public function setBalanceEntries(Collection $balanceEntries)
{
$this->balanceEntries = $balanceEntries;
}
@ -70,7 +71,7 @@ class BalanceLine
/**
* @param BudgetModel $budget
*/
public function setBudget($budget)
public function setBudget(BudgetModel $budget)
{
$this->budget = $budget;
}
@ -86,7 +87,7 @@ class BalanceLine
/**
* @param int $role
*/
public function setRole($role)
public function setRole(int $role)
{
$this->role = $role;
}
@ -118,14 +119,15 @@ class BalanceLine
* on the given budget/repetition. If you subtract all those amounts from the budget/repetition's
* total amount, this is returned:
*
* @return float
* @return string
*/
public function leftOfRepetition()
{
$start = $this->budget->amount ?? 0;
bcscale(2);
$start = $this->budget->amount ?? '0';
/** @var BalanceEntry $balanceEntry */
foreach ($this->getBalanceEntries() as $balanceEntry) {
$start += $balanceEntry->getSpent();
$start = bcadd($balanceEntry->getSpent(), $start);
}
return $start;

View File

@ -38,7 +38,7 @@ class BillLine
/**
* @param string $amount
*/
public function setAmount($amount)
public function setAmount(string $amount)
{
$this->amount = $amount;
}
@ -54,7 +54,7 @@ class BillLine
/**
* @param BillModel $bill
*/
public function setBill($bill)
public function setBill(BillModel $bill)
{
$this->bill = $bill;
}
@ -70,7 +70,7 @@ class BillLine
/**
* @param string $max
*/
public function setMax($max)
public function setMax(string $max)
{
$this->max = $max;
}
@ -86,7 +86,7 @@ class BillLine
/**
* @param string $min
*/
public function setMin($min)
public function setMin(string $min)
{
$this->min = $min;
}
@ -100,9 +100,9 @@ class BillLine
}
/**
* @param boolean $active
* @param bool $active
*/
public function setActive($active)
public function setActive(bool $active)
{
$this->active = $active;
}
@ -116,9 +116,9 @@ class BillLine
}
/**
* @param boolean $hit
* @param bool $hit
*/
public function setHit($hit)
public function setHit(bool $hit)
{
$this->hit = $hit;
}

View File

@ -41,9 +41,9 @@ class Budget
}
/**
* @param float $add
* @param string $add
*/
public function addBudgeted($add)
public function addBudgeted(string $add)
{
$add = strval(round($add, 2));
bcscale(2);
@ -51,9 +51,9 @@ class Budget
}
/**
* @param float $add
* @param string $add
*/
public function addLeft($add)
public function addLeft(string $add)
{
$add = strval(round($add, 2));
bcscale(2);
@ -61,9 +61,9 @@ class Budget
}
/**
* @param float $add
* @param string $add
*/
public function addOverspent($add)
public function addOverspent(string $add)
{
$add = strval(round($add, 2));
bcscale(2);
@ -71,9 +71,9 @@ class Budget
}
/**
* @param float $add
* @param string $add
*/
public function addSpent($add)
public function addSpent(string $add)
{
$add = strval(round($add, 2));
bcscale(2);
@ -99,7 +99,7 @@ class Budget
/**
* @param string $budgeted
*/
public function setBudgeted($budgeted)
public function setBudgeted(string $budgeted)
{
$this->budgeted = $budgeted;
}
@ -115,7 +115,7 @@ class Budget
/**
* @param string $left
*/
public function setLeft($left)
public function setLeft(string $left)
{
$this->left = $left;
}
@ -131,7 +131,7 @@ class Budget
/**
* @param string $overspent
*/
public function setOverspent($overspent)
public function setOverspent(string $overspent)
{
$this->overspent = strval(round($overspent, 2));
}
@ -147,7 +147,7 @@ class Budget
/**
* @param string $spent
*/
public function setSpent($spent)
public function setSpent(string $spent)
{
$this->spent = strval(round($spent, 2));
}

View File

@ -17,16 +17,16 @@ class BudgetLine
/** @var BudgetModel */
protected $budget;
/** @var float */
protected $budgeted = 0;
/** @var float */
protected $left = 0;
/** @var float */
protected $overspent = 0;
/** @var string */
protected $budgeted = '0';
/** @var string */
protected $left = '0';
/** @var string */
protected $overspent = '0';
/** @var LimitRepetition */
protected $repetition;
/** @var float */
protected $spent = 0;
/** @var string */
protected $spent = '0';
/**
* @return BudgetModel
@ -39,13 +39,13 @@ class BudgetLine
/**
* @param BudgetModel $budget
*/
public function setBudget($budget)
public function setBudget(BudgetModel $budget)
{
$this->budget = $budget;
}
/**
* @return float
* @return string
*/
public function getBudgeted()
{
@ -53,15 +53,15 @@ class BudgetLine
}
/**
* @param float $budgeted
* @param string $budgeted
*/
public function setBudgeted($budgeted)
public function setBudgeted(string $budgeted)
{
$this->budgeted = $budgeted;
}
/**
* @return float
* @return string
*/
public function getLeft()
{
@ -69,15 +69,15 @@ class BudgetLine
}
/**
* @param float $left
* @param string $left
*/
public function setLeft($left)
public function setLeft(string $left)
{
$this->left = $left;
}
/**
* @return float
* @return string
*/
public function getOverspent()
{
@ -85,9 +85,9 @@ class BudgetLine
}
/**
* @param float $overspent
* @param string $overspent
*/
public function setOverspent($overspent)
public function setOverspent(string $overspent)
{
$this->overspent = $overspent;
}
@ -103,13 +103,13 @@ class BudgetLine
/**
* @param LimitRepetition $repetition
*/
public function setRepetition($repetition)
public function setRepetition(LimitRepetition $repetition)
{
$this->repetition = $repetition;
}
/**
* @return float
* @return string
*/
public function getSpent()
{
@ -117,9 +117,9 @@ class BudgetLine
}
/**
* @param float $spent
* @param string $spent
*/
public function setSpent($spent)
public function setSpent(string $spent)
{
$this->spent = $spent;
}

View File

@ -42,9 +42,9 @@ class Category
}
/**
* @param float $add
* @param string $add
*/
public function addTotal($add)
public function addTotal(string $add)
{
$add = strval(round($add, 2));
bcscale(2);

View File

@ -58,9 +58,9 @@ class Expense
}
/**
* @param $add
* @param string $add
*/
public function addToTotal($add)
public function addToTotal(string $add)
{
bcscale(2);

View File

@ -20,7 +20,7 @@ class Income
/** @var Collection */
protected $incomes;
/** @var string */
protected $total;
protected $total = '0';
/**
*
@ -54,9 +54,9 @@ class Income
}
/**
* @param $add
* @param string $add
*/
public function addToTotal($add)
public function addToTotal(string $add)
{
$add = strval(round($add, 2));
bcscale(2);

View File

@ -19,6 +19,6 @@ class Amount extends BasicConverter implements ConverterInterface
return $this->value;
}
return 0;
return '0';
}
}

View File

@ -23,6 +23,6 @@ class AmountComma extends BasicConverter implements ConverterInterface
return floatval($value);
}
return 0;
return '0';
}
}

View File

@ -64,7 +64,7 @@ class Data
*
* @param string $csvFileContent
*/
public function setCsvFileContent($csvFileContent)
public function setCsvFileContent(string $csvFileContent)
{
$this->csvFileContent = $csvFileContent;
}
@ -82,7 +82,7 @@ class Data
*
* @param string $csvFileLocation
*/
public function setCsvFileLocation($csvFileLocation)
public function setCsvFileLocation(string $csvFileLocation)
{
Session::put('csv-file', $csvFileLocation);
$this->csvFileLocation = $csvFileLocation;
@ -99,9 +99,9 @@ class Data
/**
*
* @param mixed $dateFormat
* @param string $dateFormat
*/
public function setDateFormat($dateFormat)
public function setDateFormat(string $dateFormat)
{
Session::put('csv-date-format', $dateFormat);
$this->dateFormat = $dateFormat;
@ -120,7 +120,7 @@ class Data
*
* @param string $delimiter
*/
public function setDelimiter($delimiter)
public function setDelimiter(string $delimiter)
{
Session::put('csv-delimiter', $delimiter);
$this->delimiter = $delimiter;
@ -233,7 +233,7 @@ class Data
*
* @param bool $hasHeaders
*/
public function setHasHeaders($hasHeaders)
public function setHasHeaders(bool $hasHeaders)
{
Session::put('csv-has-headers', $hasHeaders);
$this->hasHeaders = $hasHeaders;
@ -243,7 +243,7 @@ class Data
*
* @param int $importAccount
*/
public function setImportAccount($importAccount)
public function setImportAccount(int $importAccount)
{
Session::put('csv-import-account', $importAccount);
$this->importAccount = $importAccount;

View File

@ -136,7 +136,7 @@ class Importer
/**
* @param Data $data
*/
public function setData($data)
public function setData(Data $data)
{
$this->data = $data;
}
@ -218,12 +218,12 @@ class Importer
}
/**
* @param $row
* @param array $row
*
* @throws FireflyException
* @return string|bool
*/
protected function importRow($row)
protected function importRow(array $row)
{
$data = $this->getFiller(); // These fields are necessary to create a new transaction journal. Some are optional
@ -266,7 +266,7 @@ class Importer
*
* @return bool
*/
protected function parseRow($index)
protected function parseRow(int $index)
{
return (($this->data->hasHeaders() && $index >= 1) || !$this->data->hasHeaders());
}

View File

@ -49,7 +49,7 @@ class AbnAmroDescription extends Specifix implements SpecifixInterface
/**
* @param array $data
*/
public function setData($data)
public function setData(array $data)
{
$this->data = $data;
}
@ -57,7 +57,7 @@ class AbnAmroDescription extends Specifix implements SpecifixInterface
/**
* @param array $row
*/
public function setRow($row)
public function setRow(array $row)
{
$this->row = $row;
}

View File

@ -35,7 +35,7 @@ class Dummy extends Specifix implements SpecifixInterface
/**
* @param array $data
*/
public function setData($data)
public function setData(array $data)
{
$this->data = $data;
}
@ -43,7 +43,7 @@ class Dummy extends Specifix implements SpecifixInterface
/**
* @param array $row
*/
public function setRow($row)
public function setRow(array $row)
{
$this->row = $row;
}

View File

@ -40,7 +40,7 @@ class RabobankDescription extends Specifix implements SpecifixInterface
/**
* @param array $data
*/
public function setData($data)
public function setData(array $data)
{
$this->data = $data;
}
@ -48,7 +48,7 @@ class RabobankDescription extends Specifix implements SpecifixInterface
/**
* @param array $row
*/
public function setRow($row)
public function setRow(array $row)
{
$this->row = $row;
}

View File

@ -29,11 +29,11 @@ class Specifix
}
/**
* @param $processorType
* @param int $processorType
*
* @return $this
*/
public function setProcessorType($processorType)
public function setProcessorType(int $processorType)
{
$this->processorType = $processorType;

View File

@ -24,17 +24,17 @@ interface SpecifixInterface
/**
* @param array $data
*/
public function setData($data);
public function setData(array $data);
/**
* @param int $processorType
*
* @return $this
*/
public function setProcessorType($processorType);
public function setProcessorType(int $processorType);
/**
* @param array $row
*/
public function setRow($row);
public function setRow(array $row);
}

View File

@ -26,7 +26,7 @@ class Wizard implements WizardInterface
*
* @return array
*/
public function getMappableValues($reader, array $map, $hasHeaders)
public function getMappableValues(Reader $reader, array $map, bool $hasHeaders)
{
$values = [];
/*
@ -52,11 +52,11 @@ class Wizard implements WizardInterface
/**
* @param array $roles
* @param mixed $map
* @param array $map
*
* @return array
*/
public function processSelectedMapping(array $roles, $map)
public function processSelectedMapping(array $roles, array $map)
{
$configRoles = Config::get('csv.roles');
$maps = [];
@ -79,11 +79,11 @@ class Wizard implements WizardInterface
}
/**
* @param mixed $input
* @param array $input
*
* @return array
*/
public function processSelectedRoles($input)
public function processSelectedRoles(array $input)
{
$roles = [];
@ -150,11 +150,11 @@ class Wizard implements WizardInterface
}
/**
* @param $path
* @param string $path
*
* @return string
*/
public function storeCsvFile($path)
public function storeCsvFile(string $path)
{
$time = str_replace(' ', '-', microtime());
$fileName = 'csv-upload-' . Auth::user()->id . '-' . $time . '.csv.encrypted';
@ -188,7 +188,7 @@ class Wizard implements WizardInterface
*
* @return bool
*/
protected function useRow($hasHeaders, $index)
protected function useRow(bool $hasHeaders, int $index)
{
return ($hasHeaders && $index > 1) || !$hasHeaders;
}

View File

@ -18,22 +18,22 @@ interface WizardInterface
*
* @return array
*/
public function getMappableValues($reader, array $map, $hasHeaders);
public function getMappableValues(Reader $reader, array $map, bool $hasHeaders);
/**
* @param array $roles
* @param mixed $map
* @param array $map
*
* @return array
*/
public function processSelectedMapping(array $roles, $map);
public function processSelectedMapping(array $roles, array $map);
/**
* @param mixed $input
* @param array $input
*
* @return array
*/
public function processSelectedRoles($input);
public function processSelectedRoles(array $input);
/**
* @param array $fields
@ -50,10 +50,10 @@ interface WizardInterface
public function showOptions(array $map);
/**
* @param $path
* @param string $path
*
* @return string
*/
public function storeCsvFile($path);
public function storeCsvFile(string $path);
}

View File

@ -19,11 +19,11 @@ class Help implements HelpInterface
/**
* @codeCoverageIgnore
*
* @param $key
* @param string $key
*
* @return string
*/
public function getFromCache($key)
public function getFromCache(string $key)
{
return Cache::get($key);
}
@ -31,11 +31,11 @@ class Help implements HelpInterface
/**
* @codeCoverageIgnore
*
* @param $route
* @param string $route
*
* @return array
*/
public function getFromGithub($route)
public function getFromGithub(string $route)
{
$uri = 'https://raw.githubusercontent.com/JC5/firefly-iii-help/master/en/' . e($route) . '.md';
$routeIndex = str_replace('.', '-', $route);
@ -62,11 +62,11 @@ class Help implements HelpInterface
/**
* @codeCoverageIgnore
*
* @param $route
* @param string $route
*
* @return bool
*/
public function hasRoute($route)
public function hasRoute(string $route)
{
return Route::has($route);
}
@ -74,11 +74,11 @@ class Help implements HelpInterface
/**
* @codeCoverageIgnore
*
* @param $route
* @param string $route
*
* @return bool
*/
public function inCache($route)
public function inCache(string $route)
{
return Cache::has('help.' . $route . '.title') && Cache::has('help.' . $route . '.text');
}
@ -86,12 +86,12 @@ class Help implements HelpInterface
/**
* @codeCoverageIgnore
*
* @param $route
* @param array $content
* @param string $route
* @param array $content
*
* @internal param $title
*/
public function putInCache($route, array $content)
public function putInCache(string $route, array $content)
{
Cache::put('help.' . $route . '.text', $content['text'], 10080); // a week.
Cache::put('help.' . $route . '.title', $content['title'], 10080);

View File

@ -11,38 +11,38 @@ interface HelpInterface
{
/**
* @param $key
* @param string $key
*
* @return string
*/
public function getFromCache($key);
public function getFromCache(string $key);
/**
* @param $route
* @param string $route
*
* @return array
*/
public function getFromGithub($route);
public function getFromGithub(string $route);
/**
* @param $route
* @param string $route
*
* @return bool
*/
public function hasRoute($route);
public function hasRoute(string $route);
/**
* @param $route
* @param string $route
*
* @return bool
*/
public function inCache($route);
public function inCache(string $route);
/**
* @param $route
* @param array $content
* @param string $route
* @param array $content
*
* @return void
*/
public function putInCache($route, array $content);
public function putInCache(string $route, array $content);
}

View File

@ -132,7 +132,7 @@ class ReportHelper implements ReportHelperInterface
*
* @return Expense
*/
public function getExpenseReport($start, $end, Collection $accounts)
public function getExpenseReport(Carbon $start, Carbon $end, Collection $accounts)
{
$object = new Expense;
$set = $this->query->expense($accounts, $start, $end);
@ -154,7 +154,7 @@ class ReportHelper implements ReportHelperInterface
*
* @return Income
*/
public function getIncomeReport($start, $end, Collection $accounts)
public function getIncomeReport(Carbon $start, Carbon $end, Collection $accounts)
{
$object = new Income;
$set = $this->query->income($accounts, $start, $end);

View File

@ -49,7 +49,7 @@ interface ReportHelperInterface
*
* @return Expense
*/
public function getExpenseReport($start, $end, Collection $accounts);
public function getExpenseReport(Carbon $start, Carbon $end, Collection $accounts);
/**
* Get a full report on the users incomes during the period for the given accounts.
@ -60,7 +60,7 @@ interface ReportHelperInterface
*
* @return Income
*/
public function getIncomeReport($start, $end, Collection $accounts);
public function getIncomeReport(Carbon $start, Carbon $end, Collection $accounts);
/**
* @param Carbon $date

View File

@ -36,7 +36,7 @@ class AccountController extends Controller
*
* @return \Illuminate\View\View
*/
public function create($what = 'asset')
public function create(string $what = 'asset')
{
@ -148,7 +148,7 @@ class AccountController extends Controller
*
* @return \Illuminate\View\View
*/
public function index(ARI $repository, $what)
public function index(ARI $repository, string $what)
{
$subTitle = trans('firefly.' . $what . '_accounts');
$subTitleIcon = Config::get('firefly.subIconsByIdentifier.' . $what);
@ -275,11 +275,11 @@ class AccountController extends Controller
/**
* @param array $array
* @param $entryId
* @param int $entryId
*
* @return null|mixed
*/
protected function isInArray(array $array, $entryId)
protected function isInArray(array $array, int $entryId)
{
if (isset($array[$entryId])) {
return $array[$entryId];

View File

@ -205,11 +205,11 @@ class AuthController extends Controller
/**
* Get the failed login message.
*
* @param $message
* @param string $message
*
* @return string
*/
protected function getFailedLoginMessage($message)
protected function getFailedLoginMessage(string $message)
{
if (strlen($message) > 0) {
return $message;
@ -221,11 +221,11 @@ class AuthController extends Controller
}
/**
* @param $email
* @param string $email
*
* @return bool
*/
protected function isBlockedDomain($email)
protected function isBlockedDomain(string $email)
{
$parts = explode('@', $email);
$blocked = $this->getBlockedDomains();
@ -241,12 +241,11 @@ class AuthController extends Controller
* Get the failed login response instance.
*
* @param \Illuminate\Http\Request $request
*
* @param $message
* @param string $message
*
* @return \Illuminate\Http\Response
*/
protected function sendFailedLoginResponse(Request $request, $message)
protected function sendFailedLoginResponse(Request $request, string $message)
{
return redirect()->back()
->withInput($request->only($this->loginUsername(), 'remember'))

View File

@ -229,7 +229,7 @@ class BudgetController extends Controller
return view('error', compact('message'));
}
$journals = $repository->getJournals($budget, $repetition);
$journals = $repository->getJournals($budget, $repetition, 50);
if (is_null($repetition->id)) {
$start = $repository->firstActivity($budget);

View File

@ -213,7 +213,7 @@ class CategoryController extends Controller
*
* @return \Illuminate\View\View
*/
public function showWithDate(SCRI $repository, Category $category, $date)
public function showWithDate(SCRI $repository, Category $category, string $date)
{
$carbon = new Carbon($date);
$range = Preferences::get('viewRange', '1M')->data;

View File

@ -43,7 +43,7 @@ class AccountController extends Controller
*
* @return \Illuminate\Http\JsonResponse
*/
public function report($reportType, Carbon $start, Carbon $end, Collection $accounts)
public function report(string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
// chart properties for cache:
$cache = new CacheProperties();

View File

@ -35,87 +35,6 @@ class BudgetController extends Controller
$this->generator = app('FireflyIII\Generator\Chart\Budget\BudgetChartGeneratorInterface');
}
/**
*
* @param BudgetRepositoryInterface $repository
* @param $reportType
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
*
* @SuppressWarnings(PHPMD.ExcessiveParameterList) // need all parameters
*
* @return \Illuminate\Http\JsonResponse
*/
public function multiYear(BudgetRepositoryInterface $repository, $reportType, Carbon $start, Carbon $end, Collection $accounts, Collection $budgets)
{
// chart properties for cache:
$cache = new CacheProperties();
$cache->addProperty($reportType);
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty($accounts);
$cache->addProperty($budgets);
$cache->addProperty('multiYearBudget');
if ($cache->has()) {
return Response::json($cache->get()); // @codeCoverageIgnore
}
/*
* Get the budgeted amounts for each budgets in each year.
*/
$budgetedSet = $repository->getBudgetedPerYear($budgets, $start, $end);
$budgetedArray = [];
/** @var Budget $entry */
foreach ($budgetedSet as $entry) {
$budgetedArray[$entry->id][$entry->dateFormatted] = $entry->budgeted;
}
$set = $repository->getBudgetsAndExpensesPerYear($budgets, $accounts, $start, $end);
$entries = new Collection;
// go by budget, not by year.
/** @var Budget $budget */
foreach ($budgets as $budget) {
$entry = ['name' => '', 'spent' => [], 'budgeted' => []];
$id = $budget->id;
$currentStart = clone $start;
while ($currentStart < $end) {
// fix the date:
$currentEnd = clone $currentStart;
$currentEnd->endOfYear();
// save to array:
$year = $currentStart->year;
$entry['name'] = $budget->name;
$spent = 0;
$budgeted = 0;
if (isset($set[$id]['entries'][$year])) {
$spent = $set[$id]['entries'][$year] * -1;
}
if (isset($budgetedArray[$id][$year])) {
$budgeted = round($budgetedArray[$id][$year], 2);
}
$entry['spent'][$year] = $spent;
$entry['budgeted'][$year] = $budgeted;
// jump to next year.
$currentStart = clone $currentEnd;
$currentStart->addDay();
}
$entries->push($entry);
}
// generate chart with data:
$data = $this->generator->multiYear($entries);
$cache->store($data);
return Response::json($data);
}
/**
* @param BudgetRepositoryInterface $repository
* @param Budget $budget
@ -298,10 +217,91 @@ class BudgetController extends Controller
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
* @param Collection $budgets
*
* @SuppressWarnings(PHPMD.ExcessiveParameterList) // need all parameters
*
* @return \Illuminate\Http\JsonResponse
*/
public function year(BudgetRepositoryInterface $repository, $reportType, Carbon $start, Carbon $end, Collection $accounts)
public function multiYear(BudgetRepositoryInterface $repository, string $reportType, Carbon $start, Carbon $end, Collection $accounts, Collection $budgets)
{
// chart properties for cache:
$cache = new CacheProperties();
$cache->addProperty($reportType);
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty($accounts);
$cache->addProperty($budgets);
$cache->addProperty('multiYearBudget');
if ($cache->has()) {
return Response::json($cache->get()); // @codeCoverageIgnore
}
/*
* Get the budgeted amounts for each budgets in each year.
*/
$budgetedSet = $repository->getBudgetedPerYear($budgets, $start, $end);
$budgetedArray = [];
/** @var Budget $entry */
foreach ($budgetedSet as $entry) {
$budgetedArray[$entry->id][$entry->dateFormatted] = $entry->budgeted;
}
$set = $repository->getBudgetsAndExpensesPerYear($budgets, $accounts, $start, $end);
$entries = new Collection;
// go by budget, not by year.
/** @var Budget $budget */
foreach ($budgets as $budget) {
$entry = ['name' => '', 'spent' => [], 'budgeted' => []];
$id = $budget->id;
$currentStart = clone $start;
while ($currentStart < $end) {
// fix the date:
$currentEnd = clone $currentStart;
$currentEnd->endOfYear();
// save to array:
$year = $currentStart->year;
$entry['name'] = $budget->name;
$spent = 0;
$budgeted = 0;
if (isset($set[$id]['entries'][$year])) {
$spent = $set[$id]['entries'][$year] * -1;
}
if (isset($budgetedArray[$id][$year])) {
$budgeted = round($budgetedArray[$id][$year], 2);
}
$entry['spent'][$year] = $spent;
$entry['budgeted'][$year] = $budgeted;
// jump to next year.
$currentStart = clone $currentEnd;
$currentStart->addDay();
}
$entries->push($entry);
}
// generate chart with data:
$data = $this->generator->multiYear($entries);
$cache->store($data);
return Response::json($data);
}
/**
*
* @param BudgetRepositoryInterface $repository
* @param $reportType
* @param Carbon $start
* @param Carbon $end
* @param Collection $accounts
*
* @return \Illuminate\Http\JsonResponse
*/
public function year(BudgetRepositoryInterface $repository, string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
// chart properties for cache:
$cache = new CacheProperties();

View File

@ -114,7 +114,7 @@ class CategoryController extends Controller
*
* @return \Illuminate\Http\JsonResponse
*/
public function earnedInPeriod(CRI $repository, $reportType, Carbon $start, Carbon $end, Collection $accounts)
public function earnedInPeriod(CRI $repository, string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
$cache = new CacheProperties; // chart properties for cache:
$cache->addProperty($start);
@ -215,7 +215,7 @@ class CategoryController extends Controller
*
* @return \Illuminate\Http\JsonResponse
*/
public function multiYear($reportType, Carbon $start, Carbon $end, Collection $accounts, Collection $categories)
public function multiYear(string $reportType, Carbon $start, Carbon $end, Collection $accounts, Collection $categories)
{
/** @var CRI $repository */
$repository = app('FireflyIII\Repositories\Category\CategoryRepositoryInterface');

View File

@ -45,7 +45,7 @@ class ReportController extends Controller
*
* @return \Illuminate\Http\JsonResponse
*/
public function yearInOut(ReportQueryInterface $query, $reportType, Carbon $start, Carbon $end, Collection $accounts)
public function yearInOut(ReportQueryInterface $query, string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
// chart properties for cache:
$cache = new CacheProperties;
@ -88,7 +88,7 @@ class ReportController extends Controller
*
* @return \Illuminate\Http\JsonResponse
*/
public function yearInOutSummarized(ReportQueryInterface $query, $reportType, Carbon $start, Carbon $end, Collection $accounts)
public function yearInOutSummarized(ReportQueryInterface $query, string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
// chart properties for cache:

View File

@ -25,7 +25,7 @@ class HelpController extends Controller
*
* @return \Illuminate\Http\JsonResponse
*/
public function show(HelpInterface $help, $route)
public function show(HelpInterface $help, string $route)
{
$content = [
'text' => '<p>There is no help for this route!</p>',

View File

@ -122,7 +122,7 @@ class ProfileController extends Controller
*
* @return string|bool
*/
protected function validatePassword($old, $new1)
protected function validatePassword(string $old, string $new1)
{
if ($new1 == $old) {
return trans('firefly.should_change');

View File

@ -78,7 +78,7 @@ class ReportController extends Controller
*
* @return View
*/
public function report($reportType, Carbon $start, Carbon $end, Collection $accounts)
public function report(string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
// throw an error if necessary.
if ($end < $start) {
@ -130,7 +130,7 @@ class ReportController extends Controller
*
* @return View
*/
private function defaultMonth($reportType, Carbon $start, Carbon $end, Collection $accounts)
private function defaultMonth(string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
$incomeTopLength = 8;
$expenseTopLength = 8;
@ -171,7 +171,7 @@ class ReportController extends Controller
*
* @return View
*/
private function defaultMultiYear($reportType, $start, $end, $accounts)
private function defaultMultiYear(string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
$incomeTopLength = 8;
@ -208,7 +208,7 @@ class ReportController extends Controller
*
* @return View
*/
private function defaultYear($reportType, Carbon $start, Carbon $end, Collection $accounts)
private function defaultYear(string $reportType, Carbon $start, Carbon $end, Collection $accounts)
{
$incomeTopLength = 8;
$expenseTopLength = 8;

View File

@ -159,11 +159,11 @@ class TagController extends Controller
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function hideTagHelp($state)
public function hideTagHelp(string $state)
{
$state = $state == 'true' ? true : false;
Preferences::set('hideTagHelp', $state);
$newState = $state == 'true' ? true : false;
Preferences::set('hideTagHelp', $newState);
return Response::json([true]);
}

View File

@ -49,7 +49,7 @@ class TransactionController extends Controller
*
* @return \Illuminate\View\View
*/
public function create(ARI $repository, $what = TransactionType::DEPOSIT)
public function create(ARI $repository, string $what = TransactionType::DEPOSIT)
{
$what = strtolower($what);
$maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
@ -211,7 +211,7 @@ class TransactionController extends Controller
*
* @return \Illuminate\View\View
*/
public function index(JournalRepositoryInterface $repository, $what)
public function index(JournalRepositoryInterface $repository, string $what)
{
$subTitleIcon = Config::get('firefly.transactionIconsByWhat.' . $what);
$types = Config::get('firefly.transactionTypesByWhat.' . $what);

View File

@ -33,14 +33,14 @@ Breadcrumbs::register(
// accounts
Breadcrumbs::register(
'accounts.index', function (BreadCrumbGenerator $breadcrumbs, $what) {
'accounts.index', function (BreadCrumbGenerator $breadcrumbs, string $what) {
$breadcrumbs->parent('home');
$breadcrumbs->push(trans('firefly.' . strtolower(e($what)) . '_accounts'), route('accounts.index', [$what]));
}
);
Breadcrumbs::register(
'accounts.create', function (BreadCrumbGenerator $breadcrumbs, $what) {
'accounts.create', function (BreadCrumbGenerator $breadcrumbs, string $what) {
$breadcrumbs->parent('accounts.index', $what);
$breadcrumbs->push(trans('firefly.new_' . strtolower(e($what)) . '_account'), route('accounts.create', [$what]));
}
@ -384,13 +384,13 @@ Breadcrumbs::register(
// transactions
Breadcrumbs::register(
'transactions.index', function (BreadCrumbGenerator $breadcrumbs, $what) {
'transactions.index', function (BreadCrumbGenerator $breadcrumbs, string $what) {
$breadcrumbs->parent('home');
$breadcrumbs->push(trans('breadcrumbs.' . $what . '_list'), route('transactions.index', [$what]));
}
);
Breadcrumbs::register(
'transactions.create', function (BreadCrumbGenerator $breadcrumbs, $what) {
'transactions.create', function (BreadCrumbGenerator $breadcrumbs, string $what) {
$breadcrumbs->parent('transactions.index', $what);
$breadcrumbs->push(trans('breadcrumbs.create_' . e($what)), route('transactions.create', [$what]));
}

View File

@ -63,11 +63,11 @@ class AccountRepository implements AccountRepositoryInterface
/**
* @deprecated
*
* @param $accountId
* @param int $accountId
*
* @return Account
*/
public function find($accountId)
public function find(int $accountId)
{
return Auth::user()->accounts()->findOrNew($accountId);
}

View File

@ -34,13 +34,13 @@ interface AccountRepositoryInterface
public function destroy(Account $account, Account $moveTo = null);
/**
* @param $accountId
* @param int $accountId
*
* @deprecated
*
* @return Account
*/
public function find($accountId);
public function find(int $accountId);
/**
* Gets all the accounts by ID, for a given set.

View File

@ -443,7 +443,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
*
* @return LengthAwarePaginator
*/
public function getJournals(Budget $budget, LimitRepetition $repetition = null, $take = 50)
public function getJournals(Budget $budget, LimitRepetition $repetition, int $take)
{
$offset = intval(Input::get('page')) > 0 ? intval(Input::get('page')) * $take : 0;
$setQuery = $budget->transactionJournals()->withRelevantData()->take($take)->offset($offset)
@ -493,7 +493,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
* @param Carbon $start
* @param Carbon $end
*
* @return double
* @return string
*/
public function getWithoutBudgetSum(Carbon $start, Carbon $end)
{
@ -519,6 +519,9 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
)
->transactionTypes([TransactionType::WITHDRAWAL])
->first([DB::Raw('SUM(`transactions`.`amount`) as `journalAmount`')]);
if (is_null($entry->journalAmount)) {
return '';
}
return $entry->journalAmount;
}

View File

@ -168,7 +168,7 @@ interface BudgetRepositoryInterface
*
* @return LengthAwarePaginator
*/
public function getJournals(Budget $budget, LimitRepetition $repetition = null, $take = 50);
public function getJournals(Budget $budget, LimitRepetition $repetition, int $take);
/**
* @param Carbon $start

View File

@ -68,11 +68,11 @@ class ExportJobRepository implements ExportJobRepositoryInterface
}
/**
* @param $key
* @param string $key
*
* @return ExportJob|null
*/
public function findByKey($key)
public function findByKey(string $key)
{
return Auth::user()->exportJobs()->where('key', $key)->first();
}

View File

@ -29,10 +29,10 @@ interface ExportJobRepositoryInterface
public function create();
/**
* @param $key
* @param string $key
*
* @return ExportJob|null
*/
public function findByKey($key);
public function findByKey(string $key);
}

View File

@ -90,7 +90,7 @@ class JournalRepository implements JournalRepositoryInterface
*
* @return LengthAwarePaginator
*/
public function getJournalsOfTypes(array $types, $offset, $page)
public function getJournalsOfTypes(array $types, int $offset, int $page)
{
$set = Auth::user()->transactionJournals()->transactionTypes($types)->withRelevantData()->take(50)->offset($offset)
->orderBy('date', 'DESC')
@ -106,11 +106,11 @@ class JournalRepository implements JournalRepositoryInterface
}
/**
* @param $type
* @param string $type
*
* @return TransactionType
*/
public function getTransactionType($type)
public function getTransactionType(string $type)
{
return TransactionType::whereType($type)->first();
}
@ -121,7 +121,7 @@ class JournalRepository implements JournalRepositoryInterface
*
* @return TransactionJournal
*/
public function getWithDate($journalId, Carbon $date)
public function getWithDate(int $journalId, Carbon $date)
{
return Auth::user()->transactionjournals()->where('id', $journalId)->where('date', $date->format('Y-m-d 00:00:00'))->first();
}

View File

@ -52,14 +52,14 @@ interface JournalRepositoryInterface
*
* @return LengthAwarePaginator
*/
public function getJournalsOfTypes(array $types, $offset, $page);
public function getJournalsOfTypes(array $types, int $offset, int $page);
/**
* @param $type
* @param string $type
*
* @return TransactionType
*/
public function getTransactionType($type);
public function getTransactionType(string $type);
/**
* @param int $journalId
@ -67,7 +67,7 @@ interface JournalRepositoryInterface
*
* @return TransactionJournal
*/
public function getWithDate($journalId, Carbon $date);
public function getWithDate(int $journalId, Carbon $date);
/**
* @param TransactionJournal $journal

View File

@ -19,11 +19,11 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
/**
* @param PiggyBank $piggyBank
* @param $amount
* @param string $amount
*
* @return bool
*/
public function createEvent(PiggyBank $piggyBank, $amount)
public function createEvent(PiggyBank $piggyBank, string $amount)
{
PiggyBankEvent::create(['date' => Carbon::now(), 'amount' => $amount, 'piggy_bank_id' => $piggyBank->id]);
@ -107,7 +107,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
*
* @return void
*/
public function setOrder($piggyBankId, $order)
public function setOrder(int $piggyBankId, int $order)
{
$piggyBank = PiggyBank::leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.account_id')->where('accounts.user_id', Auth::user()->id)
->where('piggy_banks.id', $piggyBankId)->first(['piggy_banks.*']);

View File

@ -15,11 +15,11 @@ interface PiggyBankRepositoryInterface
/**
* @param PiggyBank $piggyBank
* @param $amount
* @param string $amount
*
* @return bool
*/
public function createEvent(PiggyBank $piggyBank, $amount);
public function createEvent(PiggyBank $piggyBank, string $amount);
/**
* @param PiggyBank $piggyBank
@ -68,7 +68,7 @@ interface PiggyBankRepositoryInterface
*
* @return void
*/
public function setOrder($piggyBankId, $order);
public function setOrder(int $piggyBankId, int $order);
/**

View File

@ -18,12 +18,12 @@ class Amount
{
/**
* @param $amount
* @param bool $coloured
* @param string $amount
* @param bool $coloured
*
* @return string
*/
public function format($amount, $coloured = true)
public function format(string $amount, bool $coloured = true)
{
return $this->formatAnything($this->getDefaultCurrency(), $amount, $coloured);
}
@ -33,16 +33,17 @@ class Amount
* as a currency, given two things: the currency required and the current locale.
*
* @param TransactionCurrency $format
* @param $amount
* @param string $amount
* @param bool $coloured
*
* @return string
*/
public function formatAnything(TransactionCurrency $format, $amount, $coloured = true)
public function formatAnything(TransactionCurrency $format, string $amount, bool $coloured = true)
{
$locale = setlocale(LC_MONETARY, 0);
$float = floatval($amount);
$formatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
$result = $formatter->formatCurrency($amount, $format->code);
$result = $formatter->formatCurrency($float, $format->code);
if ($coloured === true) {
if ($amount == 0) {
@ -66,7 +67,7 @@ class Amount
*
* @return string
*/
public function formatJournal(TransactionJournal $journal, $coloured = true)
public function formatJournal(TransactionJournal $journal, bool $coloured = true)
{
$cache = new CacheProperties;
$cache->addProperty($journal->id);
@ -101,7 +102,7 @@ class Amount
*
* @return string
*/
public function formatTransaction(Transaction $transaction, $coloured = true)
public function formatTransaction(Transaction $transaction, bool $coloured = true)
{
$currency = $transaction->transactionJournal->transactionCurrency;
@ -115,7 +116,7 @@ class Amount
*
* @return string
*/
public function formatWithSymbol($symbol, $amount, $coloured = true)
public function formatWithSymbol(string $symbol, string $amount, $coloured = true)
{
return $this->formatAnything($this->getDefaultCurrency(), $amount, $coloured);
}

View File

@ -13,6 +13,7 @@ namespace FireflyIII\Support\Binder;
use Auth;
use FireflyIII\Models\Account;
use Illuminate\Support\Collection;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
@ -27,7 +28,7 @@ class AccountList implements BinderInterface
* @param $value
* @param $route
*
* @return mixed
* @return Collection
*/
public static function routeBinder($value, $route)
{

View File

@ -26,7 +26,7 @@ class ExpandedForm
*
* @return string
*/
public function amount($name, $value = null, array $options = [])
public function amount(string $name, $value = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -51,7 +51,7 @@ class ExpandedForm
*
* @return string
*/
public function balance($name, $value = null, array $options = [])
public function balance(string $name, $value = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -75,7 +75,7 @@ class ExpandedForm
*
* @return string
*/
public function checkbox($name, $value = 1, $checked = null, $options = [])
public function checkbox(string $name, $value = 1, $checked = null, $options = [])
{
$options['checked'] = $checked === true ? true : null;
$label = $this->label($name, $options);
@ -97,7 +97,7 @@ class ExpandedForm
*
* @return string
*/
public function date($name, $value = null, array $options = [])
public function date(string $name, $value = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -115,7 +115,7 @@ class ExpandedForm
*
* @return string
*/
public function file($name, array $options = [])
public function file(string $name, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -133,7 +133,7 @@ class ExpandedForm
*
* @return string
*/
public function integer($name, $value = null, array $options = [])
public function integer(string $name, $value = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -153,7 +153,7 @@ class ExpandedForm
*
* @return string
*/
public function location($name, $value = null, array $options = [])
public function location(string $name, $value = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -174,7 +174,7 @@ class ExpandedForm
*
* @return mixed
*/
public function makeSelectList(Collection $set, $addEmpty = false)
public function makeSelectList(Collection $set, bool $addEmpty = false)
{
$selectList = [];
if ($addEmpty) {
@ -205,7 +205,7 @@ class ExpandedForm
*
* @return string
*/
public function multiCheckbox($name, array $list = [], $selected = null, array $options = [])
public function multiCheckbox(string $name, array $list = [], $selected = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -226,7 +226,7 @@ class ExpandedForm
*
* @return string
*/
public function multiRadio($name, array $list = [], $selected = null, array $options = [])
public function multiRadio(string $name, array $list = [], $selected = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
@ -271,7 +271,7 @@ class ExpandedForm
*
* @return string
*/
public function select($name, array $list = [], $selected = null, array $options = [])
public function select(string $name, array $list = [], $selected = null, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);

View File

@ -66,197 +66,6 @@ class General extends Twig_Extension
return 'FireflyIII\Support\Twig\General';
}
/**
* @return Twig_SimpleFilter
*/
protected function formatFilesize()
{
return new Twig_SimpleFilter(
'filesize', function ($size) {
$size = intval($size);
// less than one GB, more than one MB
if ($size < (1024 * 1024 * 2014) && $size >= (1024 * 1024)) {
return round($size / (1024 * 1024), 2) . ' MB';
}
// less than one MB
if ($size < (1024 * 1024)) {
return round($size / 1024, 2) . ' KB';
}
return $size . ' bytes';
}
);
}
/**
* @return Twig_SimpleFilter
*/
protected function mimeIcon()
{
return new Twig_SimpleFilter(
'mimeIcon', function ($string) {
switch ($string) {
default:
return 'fa-file-o';
case 'application/pdf':
return 'fa-file-pdf-o';
case 'image/png':
case 'image/jpeg':
return 'fa-file-image-o';
}
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatAmount()
{
return new Twig_SimpleFilter(
'formatAmount', function ($string) {
return app('amount')->format($string);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatTransaction()
{
return new Twig_SimpleFilter(
'formatTransaction', function (Transaction $transaction) {
return app('amount')->formatTransaction($transaction);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatAmountPlain()
{
return new Twig_SimpleFilter(
'formatAmountPlain', function ($string) {
return app('amount')->format($string, false);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatJournal()
{
return new Twig_SimpleFilter(
'formatJournal', function ($journal) {
return app('amount')->formatJournal($journal);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function balance()
{
return new Twig_SimpleFilter(
'balance', function (Account $account = null) {
if (is_null($account)) {
return 'NULL';
}
$date = session('end', Carbon::now()->endOfMonth());
return app('steam')->balance($account, $date);
}
);
}
/**
* @return Twig_SimpleFilter
*/
protected function getAccountRole()
{
return new Twig_SimpleFilter(
'getAccountRole', function ($name) {
return Config::get('firefly.accountRoles.' . $name);
}
);
}
/**
* @return Twig_SimpleFunction
*/
protected function getCurrencyCode()
{
return new Twig_SimpleFunction(
'getCurrencyCode', function () {
return app('amount')->getCurrencyCode();
}
);
}
/**
* @return Twig_SimpleFunction
*/
protected function getCurrencySymbol()
{
return new Twig_SimpleFunction(
'getCurrencySymbol', function () {
return app('amount')->getCurrencySymbol();
}
);
}
/**
* @return Twig_SimpleFunction
*/
protected function phpdate()
{
return new Twig_SimpleFunction(
'phpdate', function ($str) {
return date($str);
}
);
}
/**
* @return Twig_SimpleFunction
*/
protected function env()
{
return new Twig_SimpleFunction(
'env', function ($name, $default) {
return env($name, $default);
}
);
}
/**
* Will return "active" when the current route matches the given argument
* exactly.
*
* @return Twig_SimpleFunction
*/
protected function activeRouteStrict()
{
return new Twig_SimpleFunction(
'activeRouteStrict', function () {
$args = func_get_args();
$route = $args[0]; // name of the route.
if (Route::getCurrentRoute()->getName() == $route) {
return 'active';
}
return '';
}
);
}
/**
* Will return "active" when a part of the route matches the argument.
* ie. "accounts" will match "accounts.index".
@ -302,4 +111,197 @@ class General extends Twig_Extension
);
}
/**
* Will return "active" when the current route matches the given argument
* exactly.
*
* @return Twig_SimpleFunction
*/
protected function activeRouteStrict()
{
return new Twig_SimpleFunction(
'activeRouteStrict', function () {
$args = func_get_args();
$route = $args[0]; // name of the route.
if (Route::getCurrentRoute()->getName() == $route) {
return 'active';
}
return '';
}
);
}
/**
* @return Twig_SimpleFilter
*/
protected function balance()
{
return new Twig_SimpleFilter(
'balance', function (Account $account = null) {
if (is_null($account)) {
return 'NULL';
}
$date = session('end', Carbon::now()->endOfMonth());
return app('steam')->balance($account, $date);
}
);
}
/**
* @return Twig_SimpleFunction
*/
protected function env()
{
return new Twig_SimpleFunction(
'env', function ($name, $default) {
return env($name, $default);
}
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatAmount()
{
return new Twig_SimpleFilter(
'formatAmount', function ($string) {
$value = is_null($string) ? '0' : $string;
return app('amount')->format($value);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatAmountPlain()
{
return new Twig_SimpleFilter(
'formatAmountPlain', function ($string) {
return app('amount')->format($string, false);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatFilesize()
{
return new Twig_SimpleFilter(
'filesize', function ($size) {
$size = intval($size);
// less than one GB, more than one MB
if ($size < (1024 * 1024 * 2014) && $size >= (1024 * 1024)) {
return round($size / (1024 * 1024), 2) . ' MB';
}
// less than one MB
if ($size < (1024 * 1024)) {
return round($size / 1024, 2) . ' KB';
}
return $size . ' bytes';
}
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatJournal()
{
return new Twig_SimpleFilter(
'formatJournal', function ($journal) {
return app('amount')->formatJournal($journal);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function formatTransaction()
{
return new Twig_SimpleFilter(
'formatTransaction', function (Transaction $transaction) {
return app('amount')->formatTransaction($transaction);
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFilter
*/
protected function getAccountRole()
{
return new Twig_SimpleFilter(
'getAccountRole', function ($name) {
return Config::get('firefly.accountRoles.' . $name);
}
);
}
/**
* @return Twig_SimpleFunction
*/
protected function getCurrencyCode()
{
return new Twig_SimpleFunction(
'getCurrencyCode', function () {
return app('amount')->getCurrencyCode();
}
);
}
/**
* @return Twig_SimpleFunction
*/
protected function getCurrencySymbol()
{
return new Twig_SimpleFunction(
'getCurrencySymbol', function () {
return app('amount')->getCurrencySymbol();
}
);
}
/**
* @return Twig_SimpleFilter
*/
protected function mimeIcon()
{
return new Twig_SimpleFilter(
'mimeIcon', function ($string) {
switch ($string) {
default:
return 'fa-file-o';
case 'application/pdf':
return 'fa-file-pdf-o';
case 'image/png':
case 'image/jpeg':
return 'fa-file-image-o';
}
}, ['is_safe' => ['html']]
);
}
/**
* @return Twig_SimpleFunction
*/
protected function phpdate()
{
return new Twig_SimpleFunction(
'phpdate', function ($str) {
return date($str);
}
);
}
}

View File

@ -26,13 +26,14 @@
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"mockery/mockery": "dev-master",
"phpunit/phpunit": "~4.0",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*",
"barryvdh/laravel-debugbar": "@stable",
"barryvdh/laravel-ide-helper": "~2.0",
"johnkary/phpunit-speedtrap": "^1.0"
"johnkary/phpunit-speedtrap": "^1.0",
"hamcrest/hamcrest-php": "^2.0@dev"
},
"autoload": {
"classmap": [

View File

@ -1,63 +1,3 @@
NL11XOLA6707795988,NL10TAPT8906262744,"Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium.",20160123,15.03,gifts,holiday
NL11XOLA6707795988,NL93UPSZ1261542703,"Morbi quis mauris nec tortor egestas blandit.",20160123,47.38,groceries,studies
NL11XOLA6707795988,NL86IHAL3264575116,"Proin eleifend magna et ante cursus laoreet.",20160123,43.73,"books and such",groceries
NL11XOLA6707795988,NL63BKBO9993148806,"In scelerisque velit eget ante pharetra pretium.",20160123,39.21,dinner,holiday
NL11XOLA6707795988,NL22EZVA6611573534,"Donec tincidunt nibh nec diam sodales, feugiat pulvinar ante consequat.",20160123,24.77,taxes,holiday
NL11XOLA6707795988,NL40KZVR5107424627,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,17.19,dinner,clothes
NL11XOLA6707795988,NL29RHEE6437366575,"Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium.",20160123,43.14,cash,studies
NL11XOLA6707795988,NL63IEPJ7437420074,"Nunc sed leo scelerisque quam consectetur elementum quis consequat dui.",20160123,35.25,gifts,bills
NL11XOLA6707795988,NL62HQWJ8837203470,"Aenean dictum sem pellentesque, semper est eget, ultricies magna.",20160123,42.07,taxes,holiday
NL11XOLA6707795988,NL89FPEA1494900858,"Vivamus ultrices tortor vel semper lacinia.",20160123,25.31,gifts,groceries
NL11XOLA6707795988,NL76MDMU3222445567,"In scelerisque velit eget ante pharetra pretium.",20160123,41.76,cash,clothes
NL11XOLA6707795988,NL07TDQA3309954056,"Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem.",20160123,10.81,food,studies
NL11XOLA6707795988,NL35MKIY9736938778,"Aenean dictum sem pellentesque, semper est eget, ultricies magna.",20160123,46.82,"books and such",bills
NL11XOLA6707795988,NL63IEPJ7437420074,"Nullam malesuada orci in vulputate imperdiet.",20160123,10.3,groceries,studies
NL11XOLA6707795988,NL56DNGY5455310496,"Morbi quis mauris nec tortor egestas blandit.",20160123,22.39,bike,bills
NL11XOLA6707795988,NL17LKFR7594179781,"Vivamus ultrices tortor vel semper lacinia.",20160123,11.45,gifts,clothes
NL11XOLA6707795988,NL76UJQI9524250446,"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",20160123,49.23,bike,studies
NL11XOLA6707795988,NL45YTPP6157249080,"Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem.",20160123,22.6,cash,"other stuff"
NL11XOLA6707795988,NL46TFVH5548690248,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,44.34,bike,holiday
NL11XOLA6707795988,NL79XZWN0846248670,"Donec tincidunt nibh nec diam sodales, feugiat pulvinar ante consequat.",20160123,12.96,car,groceries
NL11XOLA6707795988,NL52MKIO8325583045,"Duis fringilla libero eget quam pharetra, non gravida ex fermentum.",20160123,44.47,taxes,bills
NL11XOLA6707795988,NL47YVJU4419567422,"Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem.",20160123,17.51,car,bills
NL11XOLA6707795988,NL04TNIP4218080631,"Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium.",20160123,17.36,cash,groceries
NL11XOLA6707795988,NL68SOAC3516744723,"In scelerisque velit eget ante pharetra pretium.",20160123,34.22,taxes,groceries
NL11XOLA6707795988,NL53YVTS7223912863,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,27.9,food,"other stuff"
NL11XOLA6707795988,NL40QRBS9553175317,"Vivamus ultrices tortor vel semper lacinia.",20160123,-10.86,groceries,holiday
NL11XOLA6707795988,NL79XZWN0846248670,"Duis fringilla libero eget quam pharetra, non gravida ex fermentum.",20160123,-19.57,bike,household
NL11XOLA6707795988,NL54TZNZ2922111989,"Pellentesque sit amet enim ac tortor euismod ullamcorper vel et massa.",20160123,-12.05,cash,holiday
NL11XOLA6707795988,NL04BAGX3284775110,"Aenean dictum sem pellentesque, semper est eget, ultricies magna.",20160123,-15.98,groceries,bills
NL11XOLA6707795988,NL49LULH7261231215,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,-35.67,food,clothes
NL11XOLA6707795988,NL11YHMI8046080217,"Nunc sed leo scelerisque quam consectetur elementum quis consequat dui.",20160123,-48.94,dinner,clothes
NL11XOLA6707795988,NL89BXNF2470379032,"Aenean dictum sem pellentesque, semper est eget, ultricies magna.",20160123,-33.82,taxes,holiday
NL11XOLA6707795988,NL74SHGG7300113478,"In scelerisque velit eget ante pharetra pretium.",20160123,-17.36,food,"other stuff"
NL11XOLA6707795988,NL48ZPLO1718215436,"Duis fringilla libero eget quam pharetra, non gravida ex fermentum.",20160123,-19.31,food,holiday
NL11XOLA6707795988,NL13BJMO5341591615,"Pellentesque sit amet enim ac tortor euismod ullamcorper vel et massa.",20160123,-28.47,groceries,"other stuff"
NL11XOLA6707795988,NL59PKVU0116767154,"Proin eleifend magna et ante cursus laoreet.",20160123,-39.24,taxes,"other stuff"
NL11XOLA6707795988,NL72BQRL1220175315,"Nulla in neque sed velit ultricies placerat.",20160123,-17.53,groceries,bills
NL11XOLA6707795988,NL53QHDG0329036955,"Nulla a dui euismod nulla convallis dictum.",20160123,-39.45,"books and such",holiday
NL11XOLA6707795988,NL29RHEE6437366575,"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",20160123,-23.47,food,studies
NL11XOLA6707795988,NL48BLDJ9721843563,"Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem.",20160123,-16.56,food,"other stuff"
NL11XOLA6707795988,NL48BHXI9733658006,"Nulla in neque sed velit ultricies placerat.",20160123,-21.89,gifts,household
NL11XOLA6707795988,NL33VPSU8067103542,"Duis fringilla libero eget quam pharetra, non gravida ex fermentum.",20160123,-11.71,groceries,clothes
NL11XOLA6707795988,NL62UDLY8957139303,"Nunc sed leo scelerisque quam consectetur elementum quis consequat dui.",20160123,-38.08,gifts,groceries
NL11XOLA6707795988,NL28EDMD2653501341,"Aenean dictum sem pellentesque, semper est eget, ultricies magna.",20160123,-39.57,cash,holiday
NL11XOLA6707795988,NL92QMZD6854625548,"Duis fringilla libero eget quam pharetra, non gravida ex fermentum.",20160123,-48.8,car,groceries
NL11XOLA6707795988,NL37VSLJ0853659915,"Nulla a dui euismod nulla convallis dictum.",20160123,-34.55,bike,household
NL11XOLA6707795988,NL95NQHS4363870109,"Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium.",20160123,-34.95,dinner,studies
NL11XOLA6707795988,NL81LEJP9477634344,"Vivamus ultrices tortor vel semper lacinia.",20160123,-13.18,dinner,"other stuff"
NL11XOLA6707795988,NL14JYVJ1041891180,"Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem.",20160123,-12.79,groceries,bills
NL11XOLA6707795988,NL57SPBS0788124528,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,-35.53,bike,groceries
NL11XOLA6707795988,NL96DZCO4665940223,"Proin eleifend magna et ante cursus laoreet.",20160123,34.41,groceries,
NL11XOLA6707795988,NL96DZCO4665940223,"Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem.",20160123,35.8,groceries,
NL11XOLA6707795988,NL96DZCO4665940223,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,22.46,car,
NL11XOLA6707795988,NL96DZCO4665940223,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,43.74,bike,
NL11XOLA6707795988,NL96DZCO4665940223,"Aenean dictum sem pellentesque, semper est eget, ultricies magna.",20160123,28.68,dinner,
NL11XOLA6707795988,NL96DZCO4665940223,"Duis fringilla libero eget quam pharetra, non gravida ex fermentum.",20160123,32.36,car,
NL11XOLA6707795988,NL96DZCO4665940223,"Nam in purus porta, accumsan felis vitae, bibendum leo.",20160123,37.76,groceries,
NL11XOLA6707795988,NL96DZCO4665940223,"Nulla in neque sed velit ultricies placerat.",20160123,19.98,"books and such",
NL11XOLA6707795988,NL96DZCO4665940223,"Aenean dictum sem pellentesque, semper est eget, ultricies magna.",20160123,26.57,gifts,
NL11XOLA6707795988,NL96DZCO4665940223,"Morbi quis mauris nec tortor egestas blandit.",20160123,12.09,"books and such",
NL11XOLA6707795988,NL96DZCO4665940223,"Vivamus ultrices tortor vel semper lacinia.",20160123,34.96,dinner,
NL11XOLA6707795988,NL96DZCO4665940223,"Nullam malesuada orci in vulputate imperdiet.",20160123,16.62,food,
NL11XOLA6707795988,NL96DZCO4665940223,"Nulla a dui euismod nulla convallis dictum.",20160123,31.14,car,

1 NL11XOLA6707795988 NL10TAPT8906262744 NL96DZCO4665940223 Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium. Vivamus ultrices tortor vel semper lacinia. 20160123 15.03 34.96 gifts dinner holiday
NL11XOLA6707795988 NL10TAPT8906262744 Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium. 20160123 15.03 gifts holiday
NL11XOLA6707795988 NL93UPSZ1261542703 Morbi quis mauris nec tortor egestas blandit. 20160123 47.38 groceries studies
NL11XOLA6707795988 NL86IHAL3264575116 Proin eleifend magna et ante cursus laoreet. 20160123 43.73 books and such groceries
NL11XOLA6707795988 NL63BKBO9993148806 In scelerisque velit eget ante pharetra pretium. 20160123 39.21 dinner holiday
NL11XOLA6707795988 NL22EZVA6611573534 Donec tincidunt nibh nec diam sodales, feugiat pulvinar ante consequat. 20160123 24.77 taxes holiday
NL11XOLA6707795988 NL40KZVR5107424627 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 17.19 dinner clothes
NL11XOLA6707795988 NL29RHEE6437366575 Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium. 20160123 43.14 cash studies
NL11XOLA6707795988 NL63IEPJ7437420074 Nunc sed leo scelerisque quam consectetur elementum quis consequat dui. 20160123 35.25 gifts bills
NL11XOLA6707795988 NL62HQWJ8837203470 Aenean dictum sem pellentesque, semper est eget, ultricies magna. 20160123 42.07 taxes holiday
NL11XOLA6707795988 NL89FPEA1494900858 Vivamus ultrices tortor vel semper lacinia. 20160123 25.31 gifts groceries
NL11XOLA6707795988 NL76MDMU3222445567 In scelerisque velit eget ante pharetra pretium. 20160123 41.76 cash clothes
NL11XOLA6707795988 NL07TDQA3309954056 Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem. 20160123 10.81 food studies
NL11XOLA6707795988 NL35MKIY9736938778 Aenean dictum sem pellentesque, semper est eget, ultricies magna. 20160123 46.82 books and such bills
NL11XOLA6707795988 NL63IEPJ7437420074 Nullam malesuada orci in vulputate imperdiet. 20160123 10.3 groceries studies
NL11XOLA6707795988 NL56DNGY5455310496 Morbi quis mauris nec tortor egestas blandit. 20160123 22.39 bike bills
NL11XOLA6707795988 NL17LKFR7594179781 Vivamus ultrices tortor vel semper lacinia. 20160123 11.45 gifts clothes
NL11XOLA6707795988 NL76UJQI9524250446 Lorem ipsum dolor sit amet, consectetur adipiscing elit. 20160123 49.23 bike studies
NL11XOLA6707795988 NL45YTPP6157249080 Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem. 20160123 22.6 cash other stuff
NL11XOLA6707795988 NL46TFVH5548690248 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 44.34 bike holiday
NL11XOLA6707795988 NL79XZWN0846248670 Donec tincidunt nibh nec diam sodales, feugiat pulvinar ante consequat. 20160123 12.96 car groceries
NL11XOLA6707795988 NL52MKIO8325583045 Duis fringilla libero eget quam pharetra, non gravida ex fermentum. 20160123 44.47 taxes bills
NL11XOLA6707795988 NL47YVJU4419567422 Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem. 20160123 17.51 car bills
NL11XOLA6707795988 NL04TNIP4218080631 Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium. 20160123 17.36 cash groceries
NL11XOLA6707795988 NL68SOAC3516744723 In scelerisque velit eget ante pharetra pretium. 20160123 34.22 taxes groceries
NL11XOLA6707795988 NL53YVTS7223912863 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 27.9 food other stuff
NL11XOLA6707795988 NL40QRBS9553175317 Vivamus ultrices tortor vel semper lacinia. 20160123 -10.86 groceries holiday
NL11XOLA6707795988 NL79XZWN0846248670 Duis fringilla libero eget quam pharetra, non gravida ex fermentum. 20160123 -19.57 bike household
NL11XOLA6707795988 NL54TZNZ2922111989 Pellentesque sit amet enim ac tortor euismod ullamcorper vel et massa. 20160123 -12.05 cash holiday
NL11XOLA6707795988 NL04BAGX3284775110 Aenean dictum sem pellentesque, semper est eget, ultricies magna. 20160123 -15.98 groceries bills
NL11XOLA6707795988 NL49LULH7261231215 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 -35.67 food clothes
NL11XOLA6707795988 NL11YHMI8046080217 Nunc sed leo scelerisque quam consectetur elementum quis consequat dui. 20160123 -48.94 dinner clothes
NL11XOLA6707795988 NL89BXNF2470379032 Aenean dictum sem pellentesque, semper est eget, ultricies magna. 20160123 -33.82 taxes holiday
NL11XOLA6707795988 NL74SHGG7300113478 In scelerisque velit eget ante pharetra pretium. 20160123 -17.36 food other stuff
NL11XOLA6707795988 NL48ZPLO1718215436 Duis fringilla libero eget quam pharetra, non gravida ex fermentum. 20160123 -19.31 food holiday
NL11XOLA6707795988 NL13BJMO5341591615 Pellentesque sit amet enim ac tortor euismod ullamcorper vel et massa. 20160123 -28.47 groceries other stuff
NL11XOLA6707795988 NL59PKVU0116767154 Proin eleifend magna et ante cursus laoreet. 20160123 -39.24 taxes other stuff
NL11XOLA6707795988 NL72BQRL1220175315 Nulla in neque sed velit ultricies placerat. 20160123 -17.53 groceries bills
NL11XOLA6707795988 NL53QHDG0329036955 Nulla a dui euismod nulla convallis dictum. 20160123 -39.45 books and such holiday
NL11XOLA6707795988 NL29RHEE6437366575 Lorem ipsum dolor sit amet, consectetur adipiscing elit. 20160123 -23.47 food studies
NL11XOLA6707795988 NL48BLDJ9721843563 Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem. 20160123 -16.56 food other stuff
NL11XOLA6707795988 NL48BHXI9733658006 Nulla in neque sed velit ultricies placerat. 20160123 -21.89 gifts household
NL11XOLA6707795988 NL33VPSU8067103542 Duis fringilla libero eget quam pharetra, non gravida ex fermentum. 20160123 -11.71 groceries clothes
NL11XOLA6707795988 NL62UDLY8957139303 Nunc sed leo scelerisque quam consectetur elementum quis consequat dui. 20160123 -38.08 gifts groceries
NL11XOLA6707795988 NL28EDMD2653501341 Aenean dictum sem pellentesque, semper est eget, ultricies magna. 20160123 -39.57 cash holiday
NL11XOLA6707795988 NL92QMZD6854625548 Duis fringilla libero eget quam pharetra, non gravida ex fermentum. 20160123 -48.8 car groceries
NL11XOLA6707795988 NL37VSLJ0853659915 Nulla a dui euismod nulla convallis dictum. 20160123 -34.55 bike household
NL11XOLA6707795988 NL95NQHS4363870109 Suspendisse tempus eros euismod leo consequat, non malesuada arcu pretium. 20160123 -34.95 dinner studies
NL11XOLA6707795988 NL81LEJP9477634344 Vivamus ultrices tortor vel semper lacinia. 20160123 -13.18 dinner other stuff
NL11XOLA6707795988 NL14JYVJ1041891180 Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem. 20160123 -12.79 groceries bills
NL11XOLA6707795988 NL57SPBS0788124528 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 -35.53 bike groceries
NL11XOLA6707795988 NL96DZCO4665940223 Proin eleifend magna et ante cursus laoreet. 20160123 34.41 groceries
NL11XOLA6707795988 NL96DZCO4665940223 Curabitur vitae nisi consectetur, feugiat ipsum vitae, hendrerit sem. 20160123 35.8 groceries
NL11XOLA6707795988 NL96DZCO4665940223 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 22.46 car
NL11XOLA6707795988 NL96DZCO4665940223 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 43.74 bike
NL11XOLA6707795988 NL96DZCO4665940223 Aenean dictum sem pellentesque, semper est eget, ultricies magna. 20160123 28.68 dinner
NL11XOLA6707795988 NL96DZCO4665940223 Duis fringilla libero eget quam pharetra, non gravida ex fermentum. 20160123 32.36 car
NL11XOLA6707795988 NL96DZCO4665940223 Nam in purus porta, accumsan felis vitae, bibendum leo. 20160123 37.76 groceries
NL11XOLA6707795988 NL96DZCO4665940223 Nulla in neque sed velit ultricies placerat. 20160123 19.98 books and such
NL11XOLA6707795988 NL96DZCO4665940223 Aenean dictum sem pellentesque, semper est eget, ultricies magna. 20160123 26.57 gifts
NL11XOLA6707795988 NL96DZCO4665940223 Morbi quis mauris nec tortor egestas blandit. 20160123 12.09 books and such
1 NL11XOLA6707795988 NL96DZCO4665940223 NL96DZCO4665940223 Vivamus ultrices tortor vel semper lacinia. Vivamus ultrices tortor vel semper lacinia. 20160123 34.96 34.96 dinner dinner
2 NL11XOLA6707795988 NL96DZCO4665940223 NL96DZCO4665940223 Nullam malesuada orci in vulputate imperdiet. Nullam malesuada orci in vulputate imperdiet. 20160123 16.62 16.62 food food
3 NL11XOLA6707795988 NL96DZCO4665940223 NL96DZCO4665940223 Nulla a dui euismod nulla convallis dictum. Nulla a dui euismod nulla convallis dictum. 20160123 31.14 31.14 car car