2014-08-06 10:02:02 -05:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace Firefly\Storage\RecurringTransaction;
|
|
|
|
|
|
|
|
use Carbon\Carbon;
|
|
|
|
|
2014-08-10 08:01:46 -05:00
|
|
|
/**
|
|
|
|
* Class EloquentRecurringTransactionRepository
|
|
|
|
*
|
|
|
|
* @package Firefly\Storage\RecurringTransaction
|
|
|
|
*/
|
2014-08-06 10:02:02 -05:00
|
|
|
class EloquentRecurringTransactionRepository implements RecurringTransactionRepositoryInterface
|
|
|
|
{
|
2014-09-02 10:27:28 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @param \User $user
|
|
|
|
* @return mixed|void
|
|
|
|
*/
|
|
|
|
public function overruleUser(\User $user)
|
|
|
|
{
|
|
|
|
$this->_user = $user;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected $_user = null;
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
$this->_user = \Auth::user();
|
|
|
|
}
|
|
|
|
|
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)
|
|
|
|
{
|
2014-08-07 00:44:37 -05:00
|
|
|
$recurringTransaction->delete();
|
2014-08-10 04:30:14 -05:00
|
|
|
|
2014-08-07 00:44:37 -05:00
|
|
|
return true;
|
|
|
|
}
|
2014-08-06 10:02:02 -05:00
|
|
|
|
2014-09-02 01:58:56 -05:00
|
|
|
public function findByName($name)
|
|
|
|
{
|
2014-09-02 10:27:28 -05:00
|
|
|
return $this->_user->recurringtransactions()->where('name', 'LIKE', '%' . $name . '%')->first();
|
2014-09-02 01:58:56 -05:00
|
|
|
}
|
|
|
|
|
2014-08-10 08:01:46 -05:00
|
|
|
/**
|
|
|
|
* @return mixed
|
|
|
|
*/
|
2014-08-07 00:44:37 -05:00
|
|
|
public function get()
|
|
|
|
{
|
2014-09-02 10:27:28 -05:00
|
|
|
return $this->_user->recurringtransactions()->get();
|
2014-08-06 10:02:02 -05:00
|
|
|
}
|
|
|
|
|
2014-08-10 08:01:46 -05:00
|
|
|
/**
|
|
|
|
* @param $data
|
|
|
|
*
|
|
|
|
* @return mixed|\RecurringTransaction
|
|
|
|
*/
|
2014-08-07 00:44:37 -05:00
|
|
|
public function store($data)
|
|
|
|
{
|
|
|
|
$recurringTransaction = new \RecurringTransaction;
|
2014-09-02 10:27:28 -05:00
|
|
|
$recurringTransaction->user()->associate($this->_user);
|
2014-09-02 01:58:56 -05:00
|
|
|
$recurringTransaction->name = $data['name'];
|
|
|
|
$recurringTransaction->match = join(' ', explode(',', $data['match']));
|
2014-08-07 00:44:37 -05:00
|
|
|
$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.');
|
|
|
|
|
2014-08-07 00:44:37 -05:00
|
|
|
return $recurringTransaction;
|
|
|
|
}
|
|
|
|
|
2014-09-02 01:58:56 -05:00
|
|
|
$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;
|
2014-08-07 00:44:37 -05:00
|
|
|
$recurringTransaction->repeat_freq = $data['repeat_freq'];
|
|
|
|
|
2014-08-10 04:30:14 -05:00
|
|
|
if ($recurringTransaction->validate()) {
|
2014-08-07 00:44:37 -05:00
|
|
|
$recurringTransaction->save();
|
|
|
|
}
|
2014-08-10 04:30:14 -05:00
|
|
|
|
2014-08-07 00:44:37 -05:00
|
|
|
return $recurringTransaction;
|
|
|
|
}
|
|
|
|
|
2014-08-21 08:15:39 -05:00
|
|
|
/**
|
|
|
|
* @param \RecurringTransaction $recurringTransaction
|
2014-08-28 00:53:54 -05:00
|
|
|
* @param $data
|
|
|
|
*
|
2014-08-21 08:15:39 -05:00
|
|
|
* @return mixed|void
|
|
|
|
*/
|
2014-08-28 00:53:54 -05:00
|
|
|
public function update(\RecurringTransaction $recurringTransaction, $data)
|
|
|
|
{
|
2014-09-02 01:58:56 -05:00
|
|
|
$recurringTransaction->name = $data['name'];
|
|
|
|
$recurringTransaction->match = join(' ', explode(',', $data['match']));
|
2014-08-21 08:15:39 -05:00
|
|
|
$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;
|
|
|
|
}
|
2014-09-02 01:58:56 -05:00
|
|
|
$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;
|
2014-08-21 08:15:39 -05:00
|
|
|
$recurringTransaction->repeat_freq = $data['repeat_freq'];
|
|
|
|
|
|
|
|
if ($recurringTransaction->validate()) {
|
|
|
|
$recurringTransaction->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
return $recurringTransaction;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2014-08-06 10:02:02 -05:00
|
|
|
}
|