diff --git a/app/Http/routes.php b/app/Http/routes.php index 4413174f5ec3..8e91cf764e02 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -365,6 +365,7 @@ if (!defined('CONTACT_EMAIL')) { define('ENTITY_EXPENSE_ACTIVITY', 'expense_activity'); define('ENTITY_BANK_ACCOUNT', 'bank_account'); define('ENTITY_BANK_SUBACCOUNT', 'bank_subaccount'); + define('ENTITY_EXPENSE_CATEGORIES', 'expense_categories'); define('INVOICE_TYPE_STANDARD', 1); define('INVOICE_TYPE_QUOTE', 2); diff --git a/app/Models/Account.php b/app/Models/Account.php index e1c849ed80aa..dc4ee52151c7 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -198,6 +198,11 @@ class Account extends Eloquent return $this->belongsTo('App\Models\Company'); } + public function expenseCategories() + { + return $this->hasMany('App\Models\ExpenseCategory','account_id','id')->withTrashed(); + } + public function setIndustryIdAttribute($value) { $this->attributes['industry_id'] = $value ?: null; @@ -213,8 +218,6 @@ class Account extends Eloquent $this->attributes['size_id'] = $value ?: null; } - - public function isGatewayConfigured($gatewayId = 0) { if ( ! $this->relationLoaded('account_gateways')) { @@ -736,6 +739,7 @@ class Account extends Eloquent 'tax_rates' => [], 'expenses' => ['client', 'invoice', 'vendor'], 'payments' => ['invoice'], + 'expenseCategories' => [], ]; foreach ($map as $key => $values) { diff --git a/app/Models/ExpenseCategory.php b/app/Models/ExpenseCategory.php new file mode 100644 index 000000000000..9c65353ce688 --- /dev/null +++ b/app/Models/ExpenseCategory.php @@ -0,0 +1,20 @@ +belongsTo('App\Models\Expense'); + } + +} \ No newline at end of file diff --git a/app/Ninja/Transformers/AccountTransformer.php b/app/Ninja/Transformers/AccountTransformer.php index f56635bad2b1..bab26f79a321 100644 --- a/app/Ninja/Transformers/AccountTransformer.php +++ b/app/Ninja/Transformers/AccountTransformer.php @@ -7,6 +7,7 @@ use App\Models\Product; use App\Models\TaxRate; use League\Fractal; use League\Fractal\TransformerAbstract; +use App\Models\ExpenseCategory; class AccountTransformer extends EntityTransformer { @@ -14,6 +15,7 @@ class AccountTransformer extends EntityTransformer 'users', 'products', 'taxRates', + 'expense_categories' ]; protected $availableIncludes = [ @@ -22,6 +24,12 @@ class AccountTransformer extends EntityTransformer 'payments', ]; + public function includeExpenseCategories(Account $account) + { + $transformer = new ExpenseCategoryTransformer($account, $this->serializer); + return $this->includeCollection($account->expenseCategories, $transformer, ENTITY_EXPENSE_CATEGORIES); + } + public function includeUsers(Account $account) { $transformer = new UserTransformer($account, $this->serializer); @@ -96,7 +104,8 @@ class AccountTransformer extends EntityTransformer 'custom_label1' => $account->custom_label1, 'custom_label2' => $account->custom_label2, 'custom_value1' => $account->custom_value1, - 'custom_value2' => $account->custom_value2 + 'custom_value2' => $account->custom_value2, + 'logo' => $account->logo, ]; } } \ No newline at end of file diff --git a/app/Ninja/Transformers/ExpenseCategoryTransformer.php b/app/Ninja/Transformers/ExpenseCategoryTransformer.php new file mode 100644 index 000000000000..6ad6e743a376 --- /dev/null +++ b/app/Ninja/Transformers/ExpenseCategoryTransformer.php @@ -0,0 +1,18 @@ +getDefaults($expenseCategory), [ + 'id' => (int) $expenseCategory->public_id, + 'name' => $expenseCategory->name, + 'updated_at' => $this->getTimestamp($expenseCategory->updated_at), + 'archived_at' => $this->getTimestamp($expenseCategory->deleted_at), + ]); + } +} \ No newline at end of file