diff --git a/app/DataMapper/Analytics/DbQuery.php b/app/DataMapper/Analytics/DbQuery.php
new file mode 100644
index 000000000000..74a7470fa0a7
--- /dev/null
+++ b/app/DataMapper/Analytics/DbQuery.php
@@ -0,0 +1,65 @@
+string_metric5 = $string_metric5;
+ $this->double_metric2 = $double_metric2;
+ }
+}
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index 81dd5fffadd3..08747f9c2411 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -209,7 +209,8 @@ class LoginController extends BaseController
});
- return $this->listResponse($cu);
+ return $this->timeConstrainedResponse($cu);
+ // return $this->listResponse($cu);
} else {
diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php
index ea5b8d97deb5..5ec9add2ec26 100644
--- a/app/Http/Controllers/BaseController.php
+++ b/app/Http/Controllers/BaseController.php
@@ -367,6 +367,191 @@ class BaseController extends Controller
return $this->response($this->manager->createData($resource)->toArray());
}
+ protected function timeConstrainedResponse($query)
+ {
+
+ $user = auth()->user();
+
+ if ($user->getCompany()->is_large)
+ $this->manager->parseIncludes($this->mini_load);
+ else
+ $this->manager->parseIncludes($this->first_load);
+
+ $this->serializer = request()->input('serializer') ?: EntityTransformer::API_SERIALIZER_ARRAY;
+
+ if ($this->serializer === EntityTransformer::API_SERIALIZER_JSON) {
+ $this->manager->setSerializer(new JsonApiSerializer());
+ } else {
+ $this->manager->setSerializer(new ArraySerializer());
+ }
+
+ $transformer = new $this->entity_transformer($this->serializer);
+ $created_at = request()->has('created_at') ? request()->input('created_at') : 0;
+
+ $created_at = date('Y-m-d H:i:s', $created_at);
+
+ $query->with(
+ [
+ 'company' => function ($query) use ($created_at, $user) {
+ $query->whereNotNull('created_at')->with('documents');
+ },
+ 'company.clients' => function ($query) use ($user) {
+
+ if(!$user->hasPermission('view_client'))
+ $query->where('clients.user_id', $user->id)->orWhere('clients.assigned_user_id', $user->id);
+
+ },
+ 'company.company_gateways' => function ($query) use ($user) {
+ $query->whereNotNull('created_at');
+
+ if(!$user->isAdmin())
+ $query->where('company_gateways.user_id', $user->id);
+
+ },
+ 'company.credits'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('invitations', 'documents');
+
+ if(!$user->hasPermission('view_credit'))
+ $query->where('credits.user_id', $user->id)->orWhere('credits.assigned_user_id', $user->id);
+
+ },
+ 'company.designs'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('company');
+
+ if(!$user->isAdmin())
+ $query->where('designs.user_id', $user->id);
+ },
+ 'company.documents'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at);
+ },
+ 'company.expenses'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('documents');
+
+ if(!$user->hasPermission('view_expense'))
+ $query->where('expenses.user_id', $user->id)->orWhere('expenses.assigned_user_id', $user->id);
+ },
+ 'company.groups' => function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at);
+
+ if(!$user->isAdmin())
+ $query->where('group_settings.user_id', $user->id);
+ },
+ 'company.invoices'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('invitations', 'documents');
+
+ if(!$user->hasPermission('view_invoice'))
+ $query->where('invoices.user_id', $user->id)->orWhere('invoices.assigned_user_id', $user->id);
+
+ },
+ 'company.payments'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('paymentables', 'documents');
+
+ if(!$user->hasPermission('view_payment'))
+ $query->where('payments.user_id', $user->id)->orWhere('payments.assigned_user_id', $user->id);
+
+ },
+ 'company.payment_terms'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at);
+
+ if(!$user->isAdmin())
+ $query->where('payment_terms.user_id', $user->id);
+
+ },
+ 'company.products' => function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('documents');
+
+ if(!$user->hasPermission('view_product'))
+ $query->where('products.user_id', $user->id)->orWhere('products.assigned_user_id', $user->id);
+
+ },
+ 'company.projects'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('documents');
+
+ if(!$user->hasPermission('view_project'))
+ $query->where('projects.user_id', $user->id)->orWhere('projects.assigned_user_id', $user->id);
+
+ },
+ 'company.quotes'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('invitations', 'documents');
+
+ if(!$user->hasPermission('view_quote'))
+ $query->where('quotes.user_id', $user->id)->orWhere('quotes.assigned_user_id', $user->id);
+
+ },
+ 'company.recurring_invoices'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('invitations', 'documents');
+
+ if(!$user->hasPermission('view_recurring_invoice'))
+ $query->where('recurring_invoices.user_id', $user->id)->orWhere('recurring_invoices.assigned_user_id', $user->id);
+
+ },
+ 'company.tasks'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('documents');
+
+ if(!$user->hasPermission('view_task'))
+ $query->where('tasks.user_id', $user->id)->orWhere('tasks.assigned_user_id', $user->id);
+
+ },
+ 'company.tax_rates' => function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at);
+
+ if(!$user->isAdmin())
+ $query->where('tax_rates.user_id', $user->id);
+
+ },
+ 'company.vendors'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at)->with('contacts', 'documents');
+
+ if(!$user->hasPermission('view_vendor'))
+ $query->where('vendors.user_id', $user->id)->orWhere('vendors.assigned_user_id', $user->id);
+
+ },
+ 'company.expense_categories'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at);
+
+ if(!$user->isAdmin())
+ $query->where('expense_categories.user_id', $user->id);
+
+ },
+ 'company.task_statuses'=> function ($query) use ($created_at, $user) {
+ $query->where('created_at', '>=', $created_at);
+
+ if(!$user->isAdmin())
+ $query->where('task_statuses.user_id', $user->id);
+
+ },
+ 'company.activities'=> function ($query) use($user) {
+
+ if(!$user->isAdmin())
+ $query->where('activities.user_id', $user->id);
+
+ },
+ 'company.subscriptions'=> function ($query) use($created_at, $user) {
+ $query->where('created_at', '>=', $created_at);
+
+ if(!$user->isAdmin())
+ $query->where('subscriptions.user_id', $user->id);
+
+ }
+ ]
+ );
+
+ if ($query instanceof Builder) {
+ $limit = request()->input('per_page', 20);
+
+ $paginator = $query->paginate($limit);
+ $query = $paginator->getCollection();
+ $resource = new Collection($query, $transformer, $this->entity_type);
+ $resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
+ } else {
+ $resource = new Collection($query, $transformer, $this->entity_type);
+ }
+
+ return $this->response($this->manager->createData($resource)->toArray());
+
+
+ }
+
protected function listResponse($query)
{
$this->buildManager();
diff --git a/app/Http/Middleware/QueryLogging.php b/app/Http/Middleware/QueryLogging.php
index b898814f6855..034c13b2376a 100644
--- a/app/Http/Middleware/QueryLogging.php
+++ b/app/Http/Middleware/QueryLogging.php
@@ -11,10 +11,13 @@
namespace App\Http\Middleware;
+use App\DataMapper\Analytics\DbQuery;
+use App\Utils\Ninja;
use Closure;
use DB;
use Illuminate\Http\Request;
use Log;
+use Turbo124\Beacon\Facades\LightLogs;
/**
* Class QueryLogging.
@@ -31,32 +34,33 @@ class QueryLogging
*/
public function handle(Request $request, Closure $next)
{
- $timeStart = microtime(true);
// Enable query logging for development
- if (config('ninja.app_env') == 'production') {
+ if (!Ninja::isHosted() || !config('beacon.enabled')) {
return $next($request);
}
+ $timeStart = microtime(true);
DB::enableQueryLog();
-
$response = $next($request);
- if (config('ninja.app_env') != 'production') {
+ // hide requests made by debugbar
+ if (strstr($request->url(), '_debugbar') === false) {
- // hide requests made by debugbar
- if (strstr($request->url(), '_debugbar') === false) {
- $queries = DB::getQueryLog();
- $count = count($queries);
- $timeEnd = microtime(true);
- $time = $timeEnd - $timeStart;
+ $queries = DB::getQueryLog();
+ $count = count($queries);
+ $timeEnd = microtime(true);
+ $time = $timeEnd - $timeStart;
- nlog($request->method().' - '.$request->url().": $count queries - ".$time);
+ nlog($request->method().' - '.$request->url().": $count queries - ".$time);
- // if($count > 50)
- //nlog($queries);
- }
+ // if($count > 50)
+ //nlog($queries);
+
+ LightLogs::create(new DbQuery($request->method(), $request->url(), $count, $time))
+ ->batch();
}
+
return $response;
}
diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php
index ab11b83696b3..d210552e2033 100644
--- a/app/Models/Invoice.php
+++ b/app/Models/Invoice.php
@@ -249,19 +249,14 @@ class Invoice extends BaseModel
$partial_due_date = $this->partial_due_Date ? Carbon::parse($this->partial_due_date) : false;
if ($this->status_id == self::STATUS_SENT && $due_date && $due_date->gt(now())) {
- nlog("1 unpaid");
return self::STATUS_UNPAID;
} elseif ($this->status_id == self::STATUS_PARTIAL && $partial_due_date && $partial_due_date->gt(now())) {
- nlog("2 partial");
return self::STATUS_PARTIAL;
} elseif ($this->status_id == self::STATUS_SENT && $due_date && $due_date->lt(now())) {
- nlog("3 overdue");
return self::STATUS_OVERDUE;
} elseif ($this->status_id == self::STATUS_PARTIAL && $partial_due_date && $partial_due_date->lt(now())) {
- nlog("4 overdue");
return self::STATUS_OVERDUE;
} else {
- nlog("status id ");
return $this->status_id;
}
}
diff --git a/app/Repositories/Migration/InvoiceMigrationRepository.php b/app/Repositories/Migration/InvoiceMigrationRepository.php
index 7d0a74b0c696..14d56965d29f 100644
--- a/app/Repositories/Migration/InvoiceMigrationRepository.php
+++ b/app/Repositories/Migration/InvoiceMigrationRepository.php
@@ -161,7 +161,7 @@ class InvoiceMigrationRepository extends BaseRepository
}
- if ($model->company->update_products !== false) {
+ if ($model->company->update_products) {
UpdateOrCreateProduct::dispatchNow($model->line_items, $model, $model->company);
}
}
diff --git a/resources/views/index/index.blade.php b/resources/views/index/index.blade.php
index 84eb079a0141..07d0b1e710f5 100644
--- a/resources/views/index/index.blade.php
+++ b/resources/views/index/index.blade.php
@@ -148,8 +148,6 @@
@if(config('ninja.flutter_renderer') == 'hosted')
- @elseif(config('ninja.flutter_renderer') == 'selfhosted-canvaskit')
-
@else
@endif