firefly-iii/app/lib/Firefly/Storage/Account/EloquentAccountRepository.php

75 lines
2.3 KiB
PHP
Raw Normal View History

<?php
namespace Firefly\Storage\Account;
use Firefly\Helper\MigrationException;
class EloquentAccountRepository implements AccountRepositoryInterface
{
public $validator;
public function __construct()
{
}
public function count()
{
return \Auth::user()->accounts()->count();
}
public function storeWithInitialBalance($data, \Carbon\Carbon $date, $amount = 0)
{
2014-06-30 08:57:05 -05:00
$account = $this->store($data);
2014-06-30 08:57:05 -05:00
$initialBalanceAT = \AccountType::where('description', 'Initial balance account')->first();
$initial = new \Account;
$initial->accountType()->associate($initialBalanceAT);
$initial->user()->associate(\Auth::user());
$initial->name = $data['name'] . ' initial balance';
$initial->active = 0;
try {
$initial->save();
} catch (\Illuminate\Database\QueryException $e) {
\Log::error('DB ERROR: ' . $e->getMessage());
throw new FireflyException('Could not save counterbalance account for ' . $data['name']);
}
// create new transaction journal (and transactions):
/** @var \Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface $transactionJournal */
$transactionJournal = \App::make('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
$transactionJournal->createSimpleJournal(
$initial, $account, 'Initial Balance for ' . $data['name'], $amount, $date
);
2014-06-30 08:57:05 -05:00
return $account;
2014-06-30 08:57:05 -05:00
}
2014-06-30 08:57:05 -05:00
public function store($data)
{
$defaultAT = \AccountType::where('description', 'Default account')->first();
2014-06-30 08:57:05 -05:00
$at = isset($data['account_type']) ? $data['account_type'] : $defaultAT;
2014-06-30 08:57:05 -05:00
$account = new \Account;
$account->accountType()->associate($at);
$account->user()->associate(\Auth::user());
$account->name = $data['name'];
$account->active = isset($data['active']) ? $data['active'] : 1;
try {
$account->save();
} catch (\Illuminate\Database\QueryException $e) {
\Log::error('DB ERROR: ' . $e->getMessage());
throw new \Firefly\Exception\FireflyException('Could not save account ' . $data['name']);
}
return $account;
}
}