App\Ninja\Repositories\ExpenseRepository::find PHP Method

find() public method

public find ( $filter = null )
    public function find($filter = null)
    {
        $accountid = \Auth::user()->account_id;
        $query = DB::table('expenses')->join('accounts', 'accounts.id', '=', 'expenses.account_id')->leftjoin('clients', 'clients.id', '=', 'expenses.client_id')->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id')->leftjoin('vendors', 'vendors.id', '=', 'expenses.vendor_id')->leftJoin('invoices', 'invoices.id', '=', 'expenses.invoice_id')->leftJoin('expense_categories', 'expenses.expense_category_id', '=', 'expense_categories.id')->where('expenses.account_id', '=', $accountid)->where('contacts.deleted_at', '=', null)->where('vendors.deleted_at', '=', null)->where('clients.deleted_at', '=', null)->where(function ($query) {
            $query->where('contacts.is_primary', '=', true)->orWhere('contacts.is_primary', '=', null);
        })->select(DB::raw('COALESCE(expenses.invoice_id, expenses.should_be_invoiced) expense_status_id'), 'expenses.account_id', 'expenses.amount', 'expenses.deleted_at', 'expenses.exchange_rate', 'expenses.expense_date', 'expenses.id', 'expenses.is_deleted', 'expenses.private_notes', 'expenses.public_id', 'expenses.invoice_id', 'expenses.public_notes', 'expenses.should_be_invoiced', 'expenses.vendor_id', 'expenses.expense_currency_id', 'expenses.invoice_currency_id', 'expenses.user_id', 'expenses.tax_rate1', 'expenses.tax_rate2', 'expense_categories.name as category', 'invoices.public_id as invoice_public_id', 'invoices.user_id as invoice_user_id', 'invoices.balance', 'vendors.name as vendor_name', 'vendors.public_id as vendor_public_id', 'vendors.user_id as vendor_user_id', DB::raw("COALESCE(NULLIF(clients.name,''), NULLIF(CONCAT(contacts.first_name, ' ', contacts.last_name),''), NULLIF(contacts.email,'')) client_name"), 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'contacts.first_name', 'contacts.email', 'contacts.last_name', 'clients.country_id as client_country_id');
        $showTrashed = \Session::get('show_trash:expense');
        if (!$showTrashed) {
            $query->where('expenses.deleted_at', '=', null);
        }
        if ($filter) {
            $query->where(function ($query) use($filter) {
                $query->where('expenses.public_notes', 'like', '%' . $filter . '%')->orWhere('clients.name', 'like', '%' . $filter . '%')->orWhere('vendors.name', 'like', '%' . $filter . '%')->orWhere('expense_categories.name', 'like', '%' . $filter . '%');
            });
        }
        return $query;
    }

Usage Example

 /**
  * @param $search
  * @return \Illuminate\Http\JsonResponse
  */
 public function getDatatable($search)
 {
     $query = $this->expenseRepo->find($search);
     if (!Utils::hasPermission('view_all')) {
         $query->where('expenses.user_id', '=', Auth::user()->id);
     }
     return $this->datatableService->createDatatable(new ExpenseDatatable(), $query);
 }