Files
firefly-iii/app/lib/Firefly/Storage/Account/AccountRepositoryInterface.php
2014-09-21 16:22:18 +02:00

144 lines
2.5 KiB
PHP

<?php
namespace Firefly\Storage\Account;
use Illuminate\Queue\Jobs\Job;
/**
* Interface AccountRepositoryInterface
*
* @package Firefly\Storage\Account
*/
interface AccountRepositoryInterface
{
/**
* @param Job $job
* @param array $payload
*
* @return mixed
*/
public function importAccount(Job $job, array $payload);
/**
* @return mixed
*/
public function count();
/**
* Gets a list of accounts that have the mentioned type. Will automatically convert
* strings in this array to actual (model) account types.
*
* @param array $types
*
* @return Collection
*/
public function getOfTypes(array $types);
/**
* @param array $data
*
* @return mixed
*/
public function firstOrCreate(array $data);
/**
* @param \Account $account
*
* @return mixed
*/
public function destroy(\Account $account);
/**
* @param $accountId
*
* @return mixed
*/
public function find($accountId);
/**
* @param $type
*
* @return mixed
*/
public function findAccountType($type);
/**
* Takes a transaction/account component and updates the transaction journal to match.
*
* @param Job $job
* @param array $payload
*
* @return mixed
*/
public function importUpdateTransaction(Job $job, array $payload);
/**
* @param $id
*
* @return |Account|null
*/
public function findAssetAccountById($id);
/**
* @param $name
*
* @return |Account|null
*/
public function findExpenseAccountByName($name);
/**
* @param $name
*
* @return |Account|null
*/
public function findRevenueAccountByName($name);
/**
* @return mixed
*/
public function getActiveDefault();
/**
* @param $ids
*
* @return mixed
*/
public function getByIds(array $ids);
/**
* @return mixed
*/
public function getDefault();
/**
* @param \AccountType $type
*
* @return mixed
*/
public function getByAccountType(\AccountType $type);
/**
* @param \User $user
*
* @return mixed
*/
public function overruleUser(\User $user);
/**
* @param $data
*
* @return \Account
*/
public function store($data);
/**
* @param \Account $account
* @param $data
*
* @return mixed
*/
public function update(\Account $account, $data);
}