From c25cd7f2329358a0736d6c9fe7c3d522abe15c83 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 20 Mar 2016 09:38:05 +1100 Subject: [PATCH 01/11] working on dashboard for API --- .../Controllers/DashboardApiController.php | 177 ++++++++++++++++++ app/Http/routes.php | 1 + 2 files changed, 178 insertions(+) create mode 100644 app/Http/Controllers/DashboardApiController.php diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php new file mode 100644 index 000000000000..5439efc2871e --- /dev/null +++ b/app/Http/Controllers/DashboardApiController.php @@ -0,0 +1,177 @@ +hasPermission('view_all'); + $user_id = Auth::user()->id; + + // total_income, billed_clients, invoice_sent and active_clients + $select = DB::raw('COUNT(DISTINCT CASE WHEN invoices.id IS NOT NULL THEN clients.id ELSE null END) billed_clients, + SUM(CASE WHEN invoices.invoice_status_id >= '.INVOICE_STATUS_SENT.' THEN 1 ELSE 0 END) invoices_sent, + COUNT(DISTINCT clients.id) active_clients'); + $metrics = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->leftJoin('invoices', 'clients.id', '=', 'invoices.client_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false) + ->where('invoices.is_deleted', '=', false) + ->where('invoices.is_recurring', '=', false) + ->where('invoices.is_quote', '=', false); + + if(!$view_all){ + $metrics = $metrics->where(function($query) use($user_id){ + $query->where('invoices.user_id', '=', $user_id); + $query->orwhere(function($query) use($user_id){ + $query->where('invoices.user_id', '=', null); + $query->where('clients.user_id', '=', $user_id); + }); + }); + } + + $metrics = $metrics->groupBy('accounts.id') + ->first(); + + $select = DB::raw('SUM(clients.paid_to_date) as value, clients.currency_id as currency_id'); + $paidToDate = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false); + + if(!$view_all){ + $paidToDate = $paidToDate->where('clients.user_id', '=', $user_id); + } + + $paidToDate = $paidToDate->groupBy('accounts.id') + ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) + ->get(); + + $select = DB::raw('AVG(invoices.amount) as invoice_avg, clients.currency_id as currency_id'); + $averageInvoice = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->leftJoin('invoices', 'clients.id', '=', 'invoices.client_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false) + ->where('invoices.is_deleted', '=', false) + ->where('invoices.is_quote', '=', false) + ->where('invoices.is_recurring', '=', false); + + if(!$view_all){ + $averageInvoice = $averageInvoice->where('invoices.user_id', '=', $user_id); + } + + $averageInvoice = $averageInvoice->groupBy('accounts.id') + ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) + ->get(); + + $select = DB::raw('SUM(clients.balance) as value, clients.currency_id as currency_id'); + $balances = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false) + ->groupBy('accounts.id') + ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) + ->get(); + + $pastDue = DB::table('invoices') + ->leftJoin('clients', 'clients.id', '=', 'invoices.client_id') + ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') + ->where('invoices.account_id', '=', Auth::user()->account_id) + ->where('clients.deleted_at', '=', null) + ->where('contacts.deleted_at', '=', null) + ->where('invoices.is_recurring', '=', false) + //->where('invoices.is_quote', '=', false) + ->where('invoices.balance', '>', 0) + ->where('invoices.is_deleted', '=', false) + ->where('invoices.deleted_at', '=', null) + ->where('contacts.is_primary', '=', true) + ->where('invoices.due_date', '<', date('Y-m-d')); + + if(!$view_all){ + $pastDue = $pastDue->where('invoices.user_id', '=', $user_id); + } + + $pastDue = $pastDue->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) + ->orderBy('invoices.due_date', 'asc') + ->take(50) + ->get(); + + $upcoming = DB::table('invoices') + ->leftJoin('clients', 'clients.id', '=', 'invoices.client_id') + ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') + ->where('invoices.account_id', '=', Auth::user()->account_id) + ->where('clients.deleted_at', '=', null) + ->where('contacts.deleted_at', '=', null) + ->where('invoices.deleted_at', '=', null) + ->where('invoices.is_recurring', '=', false) + //->where('invoices.is_quote', '=', false) + ->where('invoices.balance', '>', 0) + ->where('invoices.is_deleted', '=', false) + ->where('contacts.is_primary', '=', true) + ->where('invoices.due_date', '>=', date('Y-m-d')) + ->orderBy('invoices.due_date', 'asc'); + + if(!$view_all){ + $upcoming = $upcoming->where('invoices.user_id', '=', $user_id); + } + + $upcoming = $upcoming->take(50) + ->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) + ->get(); + + $payments = DB::table('payments') + ->leftJoin('clients', 'clients.id', '=', 'payments.client_id') + ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') + ->leftJoin('invoices', 'invoices.id', '=', 'payments.invoice_id') + ->where('payments.account_id', '=', Auth::user()->account_id) + ->where('payments.is_deleted', '=', false) + ->where('invoices.is_deleted', '=', false) + ->where('clients.is_deleted', '=', false) + ->where('contacts.deleted_at', '=', null) + ->where('contacts.is_primary', '=', true); + + if(!$view_all){ + $payments = $payments->where('payments.user_id', '=', $user_id); + } + + $payments = $payments->select(['payments.payment_date', 'payments.amount', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id']) + ->orderBy('payments.payment_date', 'desc') + ->take(50) + ->get(); + + $hasQuotes = false; + foreach ([$upcoming, $pastDue] as $data) { + foreach ($data as $invoice) { + if ($invoice->is_quote) { + $hasQuotes = true; + } + } + } + + $data = [ + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + 'pastDue' => $pastDue, + 'upcoming' => $upcoming, + 'payments' => $payments, + 'title' => trans('texts.dashboard'), + 'hasQuotes' => $hasQuotes, + ]; + + return $this->response($data); + + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index f43317ed10f3..dec31aa26cb8 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -101,6 +101,7 @@ if (Utils::isReseller()) { Route::group(['middleware' => 'auth:user'], function() { Route::get('dashboard', 'DashboardController@index'); + Route::get('dashboard2', 'DashboardApiController@index'); Route::get('view_archive/{entity_type}/{visible}', 'AccountController@setTrashVisible'); Route::get('hide_message', 'HomeController@hideMessage'); Route::get('force_inline_pdf', 'UserController@forcePDFJS'); From 56b863a89a1f45e7385e088e1c890d67e62c33f1 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 19:50:09 +1100 Subject: [PATCH 02/11] Working on Dashboard API --- app/Http/Controllers/DashboardApiController.php | 1 + app/Http/routes.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 5439efc2871e..2da50d6dfbd8 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -159,6 +159,7 @@ class DashboardApiController extends BaseAPIController } $data = [ + 'id' => 1, 'paidToDate' => $paidToDate, 'balances' => $balances, 'averageInvoice' => $averageInvoice, diff --git a/app/Http/routes.php b/app/Http/routes.php index dec31aa26cb8..e01457909569 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -101,7 +101,6 @@ if (Utils::isReseller()) { Route::group(['middleware' => 'auth:user'], function() { Route::get('dashboard', 'DashboardController@index'); - Route::get('dashboard2', 'DashboardApiController@index'); Route::get('view_archive/{entity_type}/{visible}', 'AccountController@setTrashVisible'); Route::get('hide_message', 'HomeController@hideMessage'); Route::get('force_inline_pdf', 'UserController@forcePDFJS'); @@ -258,6 +257,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'api/v1'], function() Route::resource('expenses','ExpenseApiController'); Route::post('add_token', 'AccountApiController@addDeviceToken'); Route::post('update_notifications', 'AccountApiController@updatePushNotifications'); + Route::get('dashboard', 'DashboardApiController@index'); // Vendor Route::resource('vendors', 'VendorApiController'); From 06d796a318feef16e01a3624a98bfadadc4ad5ee Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 20:43:08 +1100 Subject: [PATCH 03/11] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 2da50d6dfbd8..bf4636e2b4a5 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -160,9 +160,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, + 'paidToDate' => $paidToDate['value'], + 'balances' => $balances['value'], + 'averageInvoice' => $averageInvoice['invoice_avg'], 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, 'pastDue' => $pastDue, From 7bc703e5dd364e1001a32e1105c90d106dd25e1c Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 20:50:11 +1100 Subject: [PATCH 04/11] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index bf4636e2b4a5..b3fea79499e1 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -160,9 +160,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, - 'paidToDate' => $paidToDate['value'], - 'balances' => $balances['value'], - 'averageInvoice' => $averageInvoice['invoice_avg'], + 'paidToDate' => $paidToDate[0]['value'], + 'balances' => $balances[0]['value'], + 'averageInvoice' => $averageInvoice[0]['invoice_avg'], 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, 'pastDue' => $pastDue, From 431c9a899f2fe474d1a6fa4fec55807450d6c79d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 20:54:36 +1100 Subject: [PATCH 05/11] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index b3fea79499e1..6d32163fc2f8 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -160,9 +160,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, - 'paidToDate' => $paidToDate[0]['value'], - 'balances' => $balances[0]['value'], - 'averageInvoice' => $averageInvoice[0]['invoice_avg'], + 'paidToDate' => $paidToDate[0]->value, + 'balances' => $balances[0]->value, + 'averageInvoice' => $averageInvoice[0]->invoice_avg, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, 'pastDue' => $pastDue, From b8560187f5c62cce5113b0c88b654fa3c3a205e3 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:04:23 +1100 Subject: [PATCH 06/11] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 6d32163fc2f8..8f0b23db6a50 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -161,7 +161,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, 'paidToDate' => $paidToDate[0]->value, + 'paidToDateCurrency' => $paidToDate[0]->currency_id, 'balances' => $balances[0]->value, + 'balancesCurrency' => $balances[0]->currency_id, 'averageInvoice' => $averageInvoice[0]->invoice_avg, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, From 85633d346425f29e4d1b5ec35c35d572f6920d64 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:06:57 +1100 Subject: [PATCH 07/11] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 8f0b23db6a50..3a40ad78dc2d 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -158,6 +158,7 @@ class DashboardApiController extends BaseAPIController } } + /* $data = [ 'id' => 1, 'paidToDate' => $paidToDate[0]->value, @@ -167,13 +168,23 @@ class DashboardApiController extends BaseAPIController 'averageInvoice' => $averageInvoice[0]->invoice_avg, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; +*/ + $data = [ + 'account' => Auth::user()->account, + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + 'activities' => $activities, 'pastDue' => $pastDue, 'upcoming' => $upcoming, 'payments' => $payments, 'title' => trans('texts.dashboard'), 'hasQuotes' => $hasQuotes, ]; - + return $this->response($data); } From 6e7c19b38edba31f9507274f377dceaa3542d533 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:08:58 +1100 Subject: [PATCH 08/11] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 3a40ad78dc2d..5f766a126ca1 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -171,20 +171,14 @@ class DashboardApiController extends BaseAPIController ]; */ $data = [ - 'account' => Auth::user()->account, + 'id' => 1, 'paidToDate' => $paidToDate, 'balances' => $balances, 'averageInvoice' => $averageInvoice, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, - 'activities' => $activities, - 'pastDue' => $pastDue, - 'upcoming' => $upcoming, - 'payments' => $payments, - 'title' => trans('texts.dashboard'), - 'hasQuotes' => $hasQuotes, ]; - + return $this->response($data); } From 0ec1fcbd238816f3ffbe743e426d90df3afb1f74 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:13:24 +1100 Subject: [PATCH 09/11] Dashboard API --- .../Controllers/DashboardApiController.php | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 5f766a126ca1..349610598242 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -158,7 +158,7 @@ class DashboardApiController extends BaseAPIController } } - /* + $data = [ 'id' => 1, 'paidToDate' => $paidToDate[0]->value, @@ -166,19 +166,21 @@ class DashboardApiController extends BaseAPIController 'balances' => $balances[0]->value, 'balancesCurrency' => $balances[0]->currency_id, 'averageInvoice' => $averageInvoice[0]->invoice_avg, + 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, ]; -*/ - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - + + /* + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; + */ return $this->response($data); } From d83a02f80fc2e968cd17b13d33f68b2c2f1bbdc1 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:17:52 +1100 Subject: [PATCH 10/11] Dashboard API --- .../Controllers/DashboardApiController.php | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 349610598242..de004a97e3cd 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -158,29 +158,29 @@ class DashboardApiController extends BaseAPIController } } - - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate[0]->value, - 'paidToDateCurrency' => $paidToDate[0]->currency_id, - 'balances' => $balances[0]->value, - 'balancesCurrency' => $balances[0]->currency_id, - 'averageInvoice' => $averageInvoice[0]->invoice_avg, - 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - /* - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - */ + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate[0]->value, + 'paidToDateCurrency' => $paidToDate[0]->currency_id, + 'balances' => $balances[0]->value, + 'balancesCurrency' => $balances[0]->currency_id, + 'averageInvoice' => $averageInvoice[0]->invoice_avg, + 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; + + */ + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; + return $this->response($data); } From 8e5d15dfbe8c9dad599a4b06503d9f914e92d89b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:21:05 +1100 Subject: [PATCH 11/11] Dashboard API --- .../Controllers/DashboardApiController.php | 64 ++++++++----------- 1 file changed, 28 insertions(+), 36 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index de004a97e3cd..06393e3ddc3c 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -11,7 +11,7 @@ class DashboardApiController extends BaseAPIController { $view_all = !Auth::user()->hasPermission('view_all'); $user_id = Auth::user()->id; - + // total_income, billed_clients, invoice_sent and active_clients $select = DB::raw('COUNT(DISTINCT CASE WHEN invoices.id IS NOT NULL THEN clients.id ELSE null END) billed_clients, SUM(CASE WHEN invoices.invoice_status_id >= '.INVOICE_STATUS_SENT.' THEN 1 ELSE 0 END) invoices_sent, @@ -25,17 +25,17 @@ class DashboardApiController extends BaseAPIController ->where('invoices.is_deleted', '=', false) ->where('invoices.is_recurring', '=', false) ->where('invoices.is_quote', '=', false); - + if(!$view_all){ $metrics = $metrics->where(function($query) use($user_id){ $query->where('invoices.user_id', '=', $user_id); $query->orwhere(function($query) use($user_id){ - $query->where('invoices.user_id', '=', null); + $query->where('invoices.user_id', '=', null); $query->where('clients.user_id', '=', $user_id); }); }); } - + $metrics = $metrics->groupBy('accounts.id') ->first(); @@ -45,11 +45,11 @@ class DashboardApiController extends BaseAPIController ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') ->where('accounts.id', '=', Auth::user()->account_id) ->where('clients.is_deleted', '=', false); - + if(!$view_all){ $paidToDate = $paidToDate->where('clients.user_id', '=', $user_id); } - + $paidToDate = $paidToDate->groupBy('accounts.id') ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) ->get(); @@ -64,11 +64,11 @@ class DashboardApiController extends BaseAPIController ->where('invoices.is_deleted', '=', false) ->where('invoices.is_quote', '=', false) ->where('invoices.is_recurring', '=', false); - + if(!$view_all){ $averageInvoice = $averageInvoice->where('invoices.user_id', '=', $user_id); } - + $averageInvoice = $averageInvoice->groupBy('accounts.id') ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) ->get(); @@ -96,11 +96,11 @@ class DashboardApiController extends BaseAPIController ->where('invoices.deleted_at', '=', null) ->where('contacts.is_primary', '=', true) ->where('invoices.due_date', '<', date('Y-m-d')); - + if(!$view_all){ $pastDue = $pastDue->where('invoices.user_id', '=', $user_id); } - + $pastDue = $pastDue->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) ->orderBy('invoices.due_date', 'asc') ->take(50) @@ -120,11 +120,11 @@ class DashboardApiController extends BaseAPIController ->where('contacts.is_primary', '=', true) ->where('invoices.due_date', '>=', date('Y-m-d')) ->orderBy('invoices.due_date', 'asc'); - + if(!$view_all){ $upcoming = $upcoming->where('invoices.user_id', '=', $user_id); } - + $upcoming = $upcoming->take(50) ->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) ->get(); @@ -139,11 +139,11 @@ class DashboardApiController extends BaseAPIController ->where('clients.is_deleted', '=', false) ->where('contacts.deleted_at', '=', null) ->where('contacts.is_primary', '=', true); - + if(!$view_all){ $payments = $payments->where('payments.user_id', '=', $user_id); } - + $payments = $payments->select(['payments.payment_date', 'payments.amount', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id']) ->orderBy('payments.payment_date', 'desc') ->take(50) @@ -158,30 +158,22 @@ class DashboardApiController extends BaseAPIController } } - /* - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate[0]->value, - 'paidToDateCurrency' => $paidToDate[0]->currency_id, - 'balances' => $balances[0]->value, - 'balancesCurrency' => $balances[0]->currency_id, - 'averageInvoice' => $averageInvoice[0]->invoice_avg, - 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - */ - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate[0]->value, + 'paidToDateCurrency' => $paidToDate[0]->currency_id, + 'balances' => $balances[0]->value, + 'balancesCurrency' => $balances[0]->currency_id, + 'averageInvoice' => $averageInvoice[0]->invoice_avg, + 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; - return $this->response($data); + + + return $this->response($data); } }