diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index 67440856c8..261ffa7fc6 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -49,6 +49,10 @@ jobs: options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 steps: + - name: Add hosts to /etc/hosts + run: | + sudo echo "127.0.0.1 ninja.test" | sudo tee -a /etc/hosts + - name: Start mysql service run: | sudo /etc/init.d/mysql start diff --git a/app/Filters/ClientFilters.php b/app/Filters/ClientFilters.php index a47fbb9c8f..4d4102e037 100644 --- a/app/Filters/ClientFilters.php +++ b/app/Filters/ClientFilters.php @@ -92,9 +92,11 @@ class ClientFilters extends QueryFilters return $this->builder->where(function ($query) use ($filter) { $query->where('clients.name', 'like', '%'.$filter.'%') ->orWhere('clients.id_number', 'like', '%'.$filter.'%') - ->orWhere('client_contacts.first_name', 'like', '%'.$filter.'%') - ->orWhere('client_contacts.last_name', 'like', '%'.$filter.'%') - ->orWhere('client_contacts.email', 'like', '%'.$filter.'%') + ->orWhereHas('contacts', function ($query) use($filter){ + $query->where('first_name', 'like', '%'.$filter.'%'); + $query->orWhere('last_name', 'like', '%'.$filter.'%'); + $query->orWhere('email', 'like', '%'.$filter.'%'); + }) ->orWhere('clients.custom_value1', 'like', '%'.$filter.'%') ->orWhere('clients.custom_value2', 'like', '%'.$filter.'%') ->orWhere('clients.custom_value3', 'like', '%'.$filter.'%') diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php index ac54ac9d75..8992424d59 100644 --- a/app/Filters/ExpenseFilters.php +++ b/app/Filters/ExpenseFilters.php @@ -38,9 +38,11 @@ class ExpenseFilters extends QueryFilters return $this->builder->where(function ($query) use ($filter) { $query->where('expenses.name', 'like', '%'.$filter.'%') ->orWhere('expenses.id_number', 'like', '%'.$filter.'%') - ->orWhere('expense_contacts.first_name', 'like', '%'.$filter.'%') - ->orWhere('expense_contacts.last_name', 'like', '%'.$filter.'%') - ->orWhere('expense_contacts.email', 'like', '%'.$filter.'%') + ->orWhereHas('contacts', function ($query) use($filter){ + $query->where('expense_contacts.first_name', 'like', '%'.$filter.'%'); + $query->orWhere('expense_contacts.last_name', 'like', '%'.$filter.'%'); + $query->orWhere('expense_contacts.email', 'like', '%'.$filter.'%'); + }) ->orWhere('expenses.custom_value1', 'like', '%'.$filter.'%') ->orWhere('expenses.custom_value2', 'like', '%'.$filter.'%') ->orWhere('expenses.custom_value3', 'like', '%'.$filter.'%') diff --git a/app/Filters/InvoiceFilters.php b/app/Filters/InvoiceFilters.php index 254183ebf4..df0e557b42 100644 --- a/app/Filters/InvoiceFilters.php +++ b/app/Filters/InvoiceFilters.php @@ -13,6 +13,7 @@ namespace App\Filters; use App\Models\Invoice; use App\Models\User; +use App\Utils\Traits\MakesHash; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Carbon; @@ -21,6 +22,7 @@ use Illuminate\Support\Carbon; */ class InvoiceFilters extends QueryFilters { + use MakesHash; /** * Filter based on client status. * @@ -65,6 +67,18 @@ class InvoiceFilters extends QueryFilters return $this->builder; } + public function client_id(string $client_id = '') :Builder + { + if (strlen($client_id) == 0) { + return $this->builder; + } + + $this->builder->where('client_id', $this->decodePrimaryKey($client_id)); + + return $this->builder; + + } + public function number(string $number) :Builder { return $this->builder->where('number', $number); @@ -96,6 +110,7 @@ class InvoiceFilters extends QueryFilters }); } + /** * Filters the list based on the status * archived, active, deleted - legacy from V1. diff --git a/app/Filters/VendorFilters.php b/app/Filters/VendorFilters.php index 231bc4f5e8..0dafbb589d 100644 --- a/app/Filters/VendorFilters.php +++ b/app/Filters/VendorFilters.php @@ -38,9 +38,11 @@ class VendorFilters extends QueryFilters return $this->builder->where(function ($query) use ($filter) { $query->where('vendors.name', 'like', '%'.$filter.'%') ->orWhere('vendors.id_number', 'like', '%'.$filter.'%') - ->orWhere('vendor_contacts.first_name', 'like', '%'.$filter.'%') - ->orWhere('vendor_contacts.last_name', 'like', '%'.$filter.'%') - ->orWhere('vendor_contacts.email', 'like', '%'.$filter.'%') + ->orWhereHas('contacts', function ($query) use($filter){ + $query->where('vendor_contacts.first_name', 'like', '%'.$filter.'%'); + $query->orWhere('vendor_contacts.last_name', 'like', '%'.$filter.'%'); + $query->orWhere('vendor_contacts.email', 'like', '%'.$filter.'%'); + }) ->orWhere('vendors.custom_value1', 'like', '%'.$filter.'%') ->orWhere('vendors.custom_value2', 'like', '%'.$filter.'%') ->orWhere('vendors.custom_value3', 'like', '%'.$filter.'%') diff --git a/tests/MockAccountData.php b/tests/MockAccountData.php index 227200e9dd..33c11a94d8 100644 --- a/tests/MockAccountData.php +++ b/tests/MockAccountData.php @@ -167,7 +167,8 @@ trait MockAccountData $settings = CompanySettings::defaults(); - $settings->company_logo = asset('images/new_logo.png'); + $settings->company_logo = ''; + // $settings->company_logo = asset('images/new_logo.png'); $settings->website = 'www.invoiceninja.com'; $settings->address1 = 'Address 1'; $settings->address2 = 'Address 2';