firefly-iii/app/lib/Firefly/Storage/RecurringTransaction/EloquentRecurringTransactionRepository.php

102 lines
3.4 KiB
PHP
Raw Normal View History

<?php
namespace Firefly\Storage\RecurringTransaction;
use Carbon\Carbon;
2014-08-10 08:01:46 -05:00
/**
* Class EloquentRecurringTransactionRepository
*
* @package Firefly\Storage\RecurringTransaction
*/
class EloquentRecurringTransactionRepository implements RecurringTransactionRepositoryInterface
{
2014-08-10 08:01:46 -05:00
/**
* @param \RecurringTransaction $recurringTransaction
*
* @return bool|mixed
*/
2014-08-10 04:30:14 -05:00
public function destroy(\RecurringTransaction $recurringTransaction)
{
$recurringTransaction->delete();
2014-08-10 04:30:14 -05:00
return true;
}
2014-08-10 08:01:46 -05:00
/**
* @return mixed
*/
public function get()
{
return \Auth::user()->recurringtransactions()->get();
}
2014-08-10 08:01:46 -05:00
/**
* @param $data
*
* @return mixed|\RecurringTransaction
*/
public function store($data)
{
$recurringTransaction = new \RecurringTransaction;
$recurringTransaction->user()->associate(\Auth::user());
$recurringTransaction->name = $data['name'];
$recurringTransaction->match = join(' ', explode(',', $data['match']));
$recurringTransaction->amount_max = floatval($data['amount_max']);
$recurringTransaction->amount_min = floatval($data['amount_min']);
// both amounts zero:
2014-08-10 04:30:14 -05:00
if ($recurringTransaction->amount_max == 0 && $recurringTransaction->amount_min == 0) {
$recurringTransaction->errors()->add('amount_max', 'Amount max and min cannot both be zero.');
return $recurringTransaction;
}
$recurringTransaction->date = new Carbon($data['date']);
$recurringTransaction->active = isset($data['active']) ? intval($data['active']) : 0;
$recurringTransaction->automatch = isset($data['automatch']) ? intval($data['automatch']) : 0;
$recurringTransaction->skip = isset($data['skip']) ? intval($data['skip']) : 0;
$recurringTransaction->repeat_freq = $data['repeat_freq'];
2014-08-10 04:30:14 -05:00
if ($recurringTransaction->validate()) {
$recurringTransaction->save();
}
2014-08-10 04:30:14 -05:00
return $recurringTransaction;
}
/**
* @param \RecurringTransaction $recurringTransaction
2014-08-28 00:53:54 -05:00
* @param $data
*
* @return mixed|void
*/
2014-08-28 00:53:54 -05:00
public function update(\RecurringTransaction $recurringTransaction, $data)
{
$recurringTransaction->name = $data['name'];
$recurringTransaction->match = join(' ', explode(',', $data['match']));
$recurringTransaction->amount_max = floatval($data['amount_max']);
$recurringTransaction->amount_min = floatval($data['amount_min']);
// both amounts zero:
if ($recurringTransaction->amount_max == 0 && $recurringTransaction->amount_min == 0) {
$recurringTransaction->errors()->add('amount_max', 'Amount max and min cannot both be zero.');
return $recurringTransaction;
}
$recurringTransaction->date = new Carbon($data['date']);
$recurringTransaction->active = isset($data['active']) ? intval($data['active']) : 0;
$recurringTransaction->automatch = isset($data['automatch']) ? intval($data['automatch']) : 0;
$recurringTransaction->skip = isset($data['skip']) ? intval($data['skip']) : 0;
$recurringTransaction->repeat_freq = $data['repeat_freq'];
if ($recurringTransaction->validate()) {
$recurringTransaction->save();
}
return $recurringTransaction;
}
}