diff --git a/app/Filters/InvoiceFilters.php b/app/Filters/InvoiceFilters.php index 7477dc208d66..4a4b3344184d 100644 --- a/app/Filters/InvoiceFilters.php +++ b/app/Filters/InvoiceFilters.php @@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Builder; /** * ProductFilters */ -class Invoiceilters extends QueryFilters +class InvoiceFilters extends QueryFilters { diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 9a0d489edc4b..022503d5b941 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -3,12 +3,14 @@ namespace App\Http\Controllers; use App\Factory\InvoiceFactory; +use App\Filters\InvoiceFilters; use App\Http\Requests\Invoice\CreateInvoiceRequest; use App\Http\Requests\Invoice\EditInvoiceRequest; use App\Http\Requests\Invoice\ShowInvoiceRequest; use App\Http\Requests\Invoice\StoreInvoiceRequest; use App\Http\Requests\Invoice\UpdateInvoiceRequest; use App\Models\Invoice; +use App\Repositories\InvoiceRepository; use App\Transformers\InvoiceTransformer; use App\Utils\Traits\MakesHash; use Illuminate\Http\Request; @@ -37,7 +39,7 @@ class InvoiceController extends BaseController * ClientController constructor. * @param ClientRepository $clientRepo */ - public function __construct(InvoiceRespository $invoice_repo) + public function __construct(InvoiceRepository $invoice_repo) { parent::__construct(); @@ -48,7 +50,7 @@ class InvoiceController extends BaseController /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View */ - public function index() + public function index(InvoiceFilters $filters) { $invoices = Invoice::filter($filters); @@ -103,7 +105,7 @@ class InvoiceController extends BaseController * @param int $id * @return \Illuminate\Http\Response */ - public function edit(EditInvoiceRequest, Invoice $invoice) + public function edit(EditInvoiceRequest $request, Invoice $invoice) { return $this->itemResponse($invoice); @@ -138,6 +140,6 @@ class InvoiceController extends BaseController $invoice->delete(); return response()->json([], 200); - + } } diff --git a/app/Transformers/InvoiceTransformer.php b/app/Transformers/InvoiceTransformer.php index a4a3ad695b93..5867c91ab115 100644 --- a/app/Transformers/InvoiceTransformer.php +++ b/app/Transformers/InvoiceTransformer.php @@ -1,8 +1,9 @@ client = $client; - } - +/* public function includeInvoiceItems(Invoice $invoice) { $transformer = new InvoiceItemTransformer($this->serializer); return $this->includeCollection($invoice->invoice_items, $transformer, ENTITY_INVOICE_ITEM); } -/* + public function includeInvitations(Invoice $invoice) { $transformer = new InvitationTransformer($this->account, $this->serializer); @@ -126,7 +121,7 @@ class InvoiceTransformer extends EntityTransformer 'id' => $this->encodePrimaryKey($invoice->id), 'amount' => (float) $invoice->amount, 'balance' => (float) $invoice->balance, - 'client_id' => (int) ($this->client ? $this->client->public_id : $invoice->client->public_id), + 'client_id' => (int) $invoice->client_id, 'invoice_status_id' => (int) ($invoice->invoice_status_id ?: 1), 'updated_at' => $invoice->updated_at, 'archived_at' => $invoice->deleted_at, @@ -164,10 +159,7 @@ class InvoiceTransformer extends EntityTransformer 'quote_invoice_id' => (int) ($invoice->quote_invoice_id ?: 0), 'custom_text_value1' => $invoice->custom_text_value1 ?: '', 'custom_text_value2' => $invoice->custom_text_value2 ?: '', - 'is_quote' => (bool) $invoice->isType(INVOICE_TYPE_QUOTE), // Temp to support mobile app 'is_public' => (bool) $invoice->is_public, - 'filename' => $invoice->getFileName(), - 'options' => $invoice->options ?: '', 'backup' => $invoice->backup ?: '', ]; } diff --git a/tests/Feature/InvoiceTest.php b/tests/Feature/InvoiceTest.php index 3f0767e0c4b3..8fa99b2f87df 100644 --- a/tests/Feature/InvoiceTest.php +++ b/tests/Feature/InvoiceTest.php @@ -2,6 +2,8 @@ namespace Tests\Feature; +use App\Models\Account; +use App\Models\Client; use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -16,7 +18,7 @@ class InvoiceTest extends TestCase public function setUp() { - + parent::setUp(); Session::start(); @@ -25,6 +27,70 @@ class InvoiceTest extends TestCase Model::reguard(); + + } + + public function testInvoiceList() + { + $data = [ + 'first_name' => $this->faker->firstName, + 'last_name' => $this->faker->lastName, + 'email' => $this->faker->unique()->safeEmail, + 'password' => 'ALongAndBrilliantPassword123', + '_token' => csrf_token(), + 'privacy_policy' => 1, + 'terms_of_service' => 1 + ]; + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + ])->post('/api/v1/signup', $data); + + $acc = $response->json(); + + $account = Account::find($acc['id']); + + $company_token = $account->default_company->tokens()->first(); + $token = $company_token->token; + $company = $company_token->company; + + $user = $company_token->user; + + $this->assertNotNull($company_token); + $this->assertNotNull($token); + $this->assertNotNull($user); + $this->assertNotNull($company); + $this->assertNotNull($user->tokens->first()->company); + + factory(\App\Models\Client::class, 1)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){ + + factory(\App\Models\ClientContact::class,1)->create([ + 'user_id' => $user->id, + 'client_id' => $c->id, + 'company_id' => $company->id, + 'is_primary' => 1 + ]); + + factory(\App\Models\ClientContact::class,1)->create([ + 'user_id' => $user->id, + 'client_id' => $c->id, + 'company_id' => $company->id + ]); + + }); + $client = Client::all()->first(); + + factory(\App\Models\Invoice::class, 5)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]); + + + $response = $this->withHeaders([ + 'X-API-SECRET' => config('ninja.api_secret'), + 'X-API-TOKEN' => $token, + ])->get('/api/v1/invoices'); + + $response->assertStatus(200); + } }