public function findByClientId($clientId)
{
return DB::table('activities')->join('accounts', 'accounts.id', '=', 'activities.account_id')->join('users', 'users.id', '=', 'activities.user_id')->join('clients', 'clients.id', '=', 'activities.client_id')->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id')->leftJoin('invoices', 'invoices.id', '=', 'activities.invoice_id')->leftJoin('payments', 'payments.id', '=', 'activities.payment_id')->leftJoin('credits', 'credits.id', '=', 'activities.credit_id')->leftJoin('tasks', 'tasks.id', '=', 'activities.task_id')->leftJoin('expenses', 'expenses.id', '=', 'activities.expense_id')->where('clients.id', '=', $clientId)->where('contacts.is_primary', '=', 1)->whereNull('contacts.deleted_at')->select(DB::raw('COALESCE(clients.currency_id, accounts.currency_id) currency_id'), DB::raw('COALESCE(clients.country_id, accounts.country_id) country_id'), 'activities.id', 'activities.created_at', 'activities.contact_id', 'activities.activity_type_id', 'activities.is_system', 'activities.balance', 'activities.adjustment', 'users.first_name as user_first_name', 'users.last_name as user_last_name', 'users.email as user_email', 'invoices.invoice_number as invoice', 'invoices.public_id as invoice_public_id', 'invoices.is_recurring', 'clients.name as client_name', 'accounts.name as account_name', 'clients.public_id as client_public_id', 'contacts.id as contact', 'contacts.first_name as first_name', 'contacts.last_name as last_name', 'contacts.email as email', 'payments.transaction_reference as payment', 'payments.amount as payment_amount', 'credits.amount as credit', 'tasks.description as task_description', 'tasks.public_id as task_public_id', 'expenses.public_notes as expense_public_notes', 'expenses.public_id as expense_public_id');
}