More code for rules.

This commit is contained in:
James Cole
2016-01-14 21:34:17 +01:00
parent 9703439a4c
commit 1f538be16e
10 changed files with 371 additions and 16 deletions

View File

@@ -8,7 +8,9 @@ use Crypt;
use DB;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Budget;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\User;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Validation\Validator;
@@ -39,7 +41,71 @@ class FireflyValidator extends Validator
* @param $value
* @param $parameters
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
* @return bool
*/
public function validateRuleTriggerValue($attribute, $value, $parameters)
{
// loop all rule-triggers.
// check if rule-value matches the thing.
if (is_array($this->data['rule-trigger'])) {
foreach ($this->data['rule-trigger'] as $index => $name) {
$value = $this->data['rule-trigger-value'][$index] ?? false;
switch ($name) {
default:
return true;
case 'amount_less':
return is_numeric($value);
break;
case 'transaction_type':
echo 'Implement me!';
exit;
break;
}
}
}
}
/**
* @param $attribute
* @param $value
* @param $parameters
*
* @return bool
*/
public function validateRuleActionValue($attribute, $value, $parameters)
{
// loop all rule-actions.
// check if rule-action-value matches the thing.
if (is_array($this->data['rule-action'])) {
foreach ($this->data['rule-action'] as $index => $name) {
$value = $this->data['rule-action-value'][$index] ?? false;
switch ($name) {
default:
return true;
case 'set_budget':
/** @var BudgetRepositoryInterface $repository */
$repository = app('FireflyIII\Repositories\Budget\BudgetRepositoryInterface');
$budgets = $repository->getBudgets();
// count budgets, should have at least one
$count = $budgets->filter(
function (Budget $budget) use ($value) {
return $budget->name == $value;
}
)->count();
return ($count === 1);
}
}
}
return false;
}
/**
* @param $attribute
* @param $value
* @param $parameters
*
* @return bool
*/