diff --git a/app/Http/Controllers/ExpenseApiController.php b/app/Http/Controllers/ExpenseApiController.php new file mode 100644 index 000000000000..88ff5497cefd --- /dev/null +++ b/app/Http/Controllers/ExpenseApiController.php @@ -0,0 +1,64 @@ +expenseRepo = $expenseRepo; + $this->expenseService = $expenseService; + } + + public function index() + { + + $expenses = Expense::scope() + ->withTrashed() + ->orderBy('created_at','desc'); + + $expenses = $expenses->paginate(); + + $transformer = new ExpenseTransformer(Auth::user()->account, Input::get('serializer')); + $paginator = Expense::scope()->withTrashed()->paginate(); + + $data = $this->createCollection($expenses, $transformer, ENTITY_EXPENSE, $paginator); + + return $this->response($data); + + } + + public function update() + { + //stub + + } + + public function store() + { + //stub + + } + + public function destroy() + { + //stub + + } + + +} \ No newline at end of file diff --git a/app/Http/Controllers/VendorApiController.php b/app/Http/Controllers/VendorApiController.php index 80236226dda0..e2cec175bada 100644 --- a/app/Http/Controllers/VendorApiController.php +++ b/app/Http/Controllers/VendorApiController.php @@ -48,6 +48,7 @@ class VendorApiController extends BaseAPIController { $vendors = Vendor::scope() ->with($this->getIncluded()) + ->withTrashed() ->orderBy('created_at', 'desc') ->paginate(); diff --git a/app/Http/routes.php b/app/Http/routes.php index 9001c18e6256..97002c05b14c 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -236,6 +236,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'api/v1'], function() Route::resource('products', 'ProductApiController'); Route::resource('tax_rates', 'TaxRateApiController'); Route::resource('users', 'UserApiController'); + Route::resource('expenses','ExpenseApiController'); // Vendor Route::resource('vendors', 'VendorApiController'); diff --git a/app/Models/Vendor.php b/app/Models/Vendor.php index a93fc6e5d7b4..ce21a6446364 100644 --- a/app/Models/Vendor.php +++ b/app/Models/Vendor.php @@ -124,6 +124,11 @@ class Vendor extends EntityModel return $this->belongsTo('App\Models\Industry'); } + public function expenses() + { + return $this->hasMany('App\Models\Expense','vendor_id','id'); + } + public function addVendorContact($data, $isPrimary = false) { $publicId = isset($data['public_id']) ? $data['public_id'] : false; diff --git a/app/Ninja/Mailers/ContactMailer.php b/app/Ninja/Mailers/ContactMailer.php index 8959602ce6a2..dc513c3e8822 100644 --- a/app/Ninja/Mailers/ContactMailer.php +++ b/app/Ninja/Mailers/ContactMailer.php @@ -41,6 +41,8 @@ class ContactMailer extends Mailer $client = $invoice->client; $account = $invoice->account; + $response = null; + if ($client->trashed()) { return trans('texts.email_errors.inactive_client'); } elseif ($invoice->trashed()) { diff --git a/app/Ninja/Transformers/ExpenseTransformer.php b/app/Ninja/Transformers/ExpenseTransformer.php new file mode 100644 index 000000000000..26729f4ddb17 --- /dev/null +++ b/app/Ninja/Transformers/ExpenseTransformer.php @@ -0,0 +1,29 @@ + (int) $expense->public_id, + 'private_notes' => $expense->private_notes, + 'public_notes' => $expense->public_notes, + 'should_be_invoiced' => (bool) $expense->should_be_invoiced, + 'updated_at' => $this->getTimestamp($expense->updated_at), + 'archived_at' => $this->getTimestamp($expense->deleted_at), + 'transaction_id' => $expense->transaction_id, + 'bank_id' => $expense->bank_id, + 'expense_currency_id' => (int) $expense->expense_currency_id, + 'account_key' => $this->account->account_key, + 'amount' => (float) $expense->amount, + 'expense_date' => $expense->expense_date, + 'exchange_rate' => (float) $expense->exchange_rate, + 'invoice_currency_id' => (int) $expense->invoice_currency_id, + 'is_deleted' => (bool) $expense->is_deleted, + ]; + } +} \ No newline at end of file diff --git a/app/Ninja/Transformers/VendorTransformer.php b/app/Ninja/Transformers/VendorTransformer.php index c1714b27a120..f0b8fd0415f0 100644 --- a/app/Ninja/Transformers/VendorTransformer.php +++ b/app/Ninja/Transformers/VendorTransformer.php @@ -36,14 +36,15 @@ class VendorTransformer extends EntityTransformer */ protected $availableIncludes = [ - 'contacts', + 'vendorContacts', 'invoices', + 'expenses', ]; - public function includeContacts(Vendor $vendor) + public function includeVendorContacts(Vendor $vendor) { - $transformer = new ContactTransformer($this->account, $this->serializer); - return $this->includeCollection($vendor->contacts, $transformer, ENTITY_CONTACT); + $transformer = new VendorContactTransformer($this->account, $this->serializer); + return $this->includeCollection($vendor->vendorContacts, $transformer, ENTITY_CONTACT); } public function includeInvoices(Vendor $vendor) @@ -52,6 +53,12 @@ class VendorTransformer extends EntityTransformer return $this->includeCollection($vendor->invoices, $transformer, ENTITY_INVOICE); } + public function includeExpenses(Vendor $vendor) + { + $transformer = new ExpenseTransformer($this->account, $this->serializer); + return $this->includeCollection($vendor->expenses, $transformer, ENTITY_EXPENSE); + } + public function transform(Vendor $vendor) { return [