diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php index 1eee067b0b23..1ec12ef567f0 100644 --- a/app/Http/Controllers/BaseController.php +++ b/app/Http/Controllers/BaseController.php @@ -132,52 +132,90 @@ class BaseController extends Controller protected function refreshResponse($query) { - $this->buildManager(); + +// $this->manager->parseIncludes($includes); + + $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(Input::get('serializer')); - $includes = $transformer->getDefaultIncludes(); - $includes = $this->getRequestIncludes($includes); - - //info(print_r($includes,1)); - $updated_at = request()->has('updated_at') ? request()->input('updated_at') : 0; $updated_at = date('Y-m-d H:i:s', $updated_at); - //info($updated_at); - $query->with( [ - 'company' => function ($query) use($updated_at){$query->whereNotNull('updated_at');}, - 'company.clients' =>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.tax_rates'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.groups'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.company_gateways'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.clients.contacts'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.products'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.invoices'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.invoices.invitations.contact'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.invoices.invitations'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.invoices.documents'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.payments'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.quotes.invitations.contact'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.quotes.invitations'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.quotes.documents'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.credits.documents'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.credits.invitations.contact'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.credits.invitations'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.payment_terms'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.vendors.contacts'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.expenses'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.tasks'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.projects'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, - 'company.designs'=>function ($query) use($updated_at){$query->where('updated_at', '>=', $updated_at);}, + 'company' => function ($query) use($updated_at){ + $query->whereNotNull('updated_at'); + }, + 'company.clients'=>function ($query) use($updated_at){ + $query->where('clients.updated_at', '>=', $updated_at)->with('contacts'); + }, + 'company.tax_rates'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, + 'company.groups'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, + 'company.company_gateways'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at)->with('gateway'); + }, + 'company.products'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, + 'company.invoices'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at)->with('invitations','documents'); + }, + 'company.payments'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at)->with('paymentables'); + }, + 'company.quotes'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at)->with('invitations','documents'); + }, + 'company.credits'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at)->with('invitations','documents'); + }, + 'company.payment_terms'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, + 'company.vendors'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at)->with('contacts'); + }, + 'company.expenses'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, + 'company.tasks'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, + 'company.projects'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, + 'company.designs'=>function ($query) use($updated_at){ + $query->where('updated_at', '>=', $updated_at); + }, ] ); - $data = $this->createCollection($query, $transformer, $this->entity_type); - return $this->response($data); + if (is_a($query, "Illuminate\Database\Eloquent\Builder")) { + $limit = Input::get('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) diff --git a/app/Http/Middleware/QueryLogging.php b/app/Http/Middleware/QueryLogging.php index 0447f3b35605..97d214d595b0 100644 --- a/app/Http/Middleware/QueryLogging.php +++ b/app/Http/Middleware/QueryLogging.php @@ -50,7 +50,7 @@ class QueryLogging Log::info($request->method() . ' - ' . $request->url() . ": $count queries - " . $time); - // if($count > 100) + // if($count > 700) // Log::info($queries); } diff --git a/app/Repositories/BaseRepository.php b/app/Repositories/BaseRepository.php index eda78fa63fff..2511d8a328f5 100644 --- a/app/Repositories/BaseRepository.php +++ b/app/Repositories/BaseRepository.php @@ -220,7 +220,6 @@ class BaseRepository $tmp_data = $data; /* We need to unset some variable as we sometimes unguard the model */ - if (isset($tmp_data['invitations'])) { unset($tmp_data['invitations']); } diff --git a/app/Services/Invoice/CreateInvitations.php b/app/Services/Invoice/CreateInvitations.php index a9b56bb74901..f9b3f4a3a28e 100644 --- a/app/Services/Invoice/CreateInvitations.php +++ b/app/Services/Invoice/CreateInvitations.php @@ -31,6 +31,7 @@ class CreateInvitations extends AbstractService $invitation = InvoiceInvitation::whereCompanyId($this->invoice->company_id) ->whereClientContactId($contact->id) ->whereInvoiceId($this->invoice->id) + ->withTrashed() ->first(); if (!$invitation && $contact->send_email) { diff --git a/config/ninja.php b/config/ninja.php index 11c7d379abba..5b714b0c050e 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -10,7 +10,7 @@ return [ 'app_name' => env('APP_NAME'), 'app_env' => env('APP_ENV', 'selfhosted'), 'require_https' => env('REQUIRE_HTTPS', true), - 'app_url' => env('APP_URL', ''), + 'app_url' => rtrim(env('APP_URL', ''), '/') . '/', 'app_domain' => env('APP_DOMAIN', ''), 'app_version' => '5.0.12', 'minimum_client_version' => '5.0.12', diff --git a/resources/views/index/index.blade.php b/resources/views/index/index.blade.php index 51742aeb3360..e4cd473f4043 100644 --- a/resources/views/index/index.blade.php +++ b/resources/views/index/index.blade.php @@ -75,7 +75,7 @@