1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 16:31:33 +02:00

Working on system logs

This commit is contained in:
David Bomba 2020-08-24 12:45:53 +10:00
parent 0d9df1f290
commit ffdfaefd80
8 changed files with 277 additions and 28 deletions

View File

@ -0,0 +1,105 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Filters;
use App\Models\Vendor;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
/**
* SystemLogFilters
*/
class SystemLogFilters extends QueryFilters
{
public function type_id(int $type_id) :Builder
{
return $this->builder->where('type_id', $type_id);
}
public function category_id(int $category_id) :Builder
{
return $this->builder->where('category_id', $category_id);
}
public function event_id(int $event_id) :Builder
{
return $this->builder->where('event_id', $event_id);
}
/**
* Filter based on search text
*
* @param string query filter
* @return Illuminate\Database\Query\Builder
* @deprecated
*
*/
public function filter(string $filter = '') : Builder
{
if (strlen($filter) == 0) {
return $this->builder;
}
return $this->builder;
// return $this->builder->where(function ($query) use ($filter) {
// $query->where('vendors.name', 'like', '%'.$filter.'%')
// ->orWhere('vendors.id_number', 'like', '%'.$filter.'%')
// ->orWhere('vendor_contacts.first_name', 'like', '%'.$filter.'%')
// ->orWhere('vendor_contacts.last_name', 'like', '%'.$filter.'%')
// ->orWhere('vendor_contacts.email', 'like', '%'.$filter.'%')
// ->orWhere('vendors.custom_value1', 'like', '%'.$filter.'%')
// ->orWhere('vendors.custom_value2', 'like', '%'.$filter.'%')
// ->orWhere('vendors.custom_value3', 'like', '%'.$filter.'%')
// ->orWhere('vendors.custom_value4', 'like', '%'.$filter.'%');
// });
}
/**
* Sorts the list based on $sort
*
* @param string sort formatted as column|asc
* @return Illuminate\Database\Query\Builder
*/
public function sort(string $sort) : Builder
{
$sort_col = explode("|", $sort);
return $this->builder->orderBy($sort_col[0], $sort_col[1]);
}
/**
* Returns the base query
*
* @param int company_id
* @return Illuminate\Database\Query\Builder
* @deprecated
*/
public function baseQuery(int $company_id, User $user) : Builder
{
}
/**
* Filters the query by the users company ID
*
* @param $company_id The company Id
* @return Illuminate\Database\Query\Builder
*/
public function entityFilter()
{
//return $this->builder->whereCompanyId(auth()->user()->company()->id);
return $this->builder->company();
}
}

View File

@ -23,32 +23,6 @@ use Illuminate\Support\Facades\Gate;
class VendorFilters extends QueryFilters
{
/**
* Filter by balance
*
* @param string $balance
* @return Illuminate\Database\Query\Builder
*/
public function balance(string $balance): Builder
{
$parts = $this->split($balance);
return $this->builder->where('balance', $parts->operator, $parts->value);
}
/**
* Filter between balances
*
* @param string balance
* @return Illuminate\Database\Query\Builder
*/
public function between_balance(string $balance): Builder
{
$parts = explode(":", $balance);
return $this->builder->whereBetween('balance', [$parts[0], $parts[1]]);
}
/**
* Filter based on search text
*

View File

@ -0,0 +1,95 @@
<?php
namespace App\Http\Controllers;
use App\Filters\SystemLogFilters;
use App\Models\SystemLog;
use App\Transformers\SystemLogTransformer;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\Request;
class SystemLogController extends Controller
{
use MakesHash;
protected $entity_type = SystemLog::class;
protected $entity_transformer = SystemLogTransformer::class;
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(SystemLogFilters $filters)
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

View File

@ -202,6 +202,11 @@ class Client extends BaseModel implements HasLocalePreference
return $this->belongsTo(Country::class, 'shipping_country_id', 'id');
}
public function system_logs()
{
return $this->hasMany(SystemLog::class);
}
public function timezone()
{
return Timezone::find($this->getSetting('timezone_id'));

View File

@ -391,6 +391,11 @@ class Company extends BaseModel
return $this->hasMany(CompanyToken::class);
}
public function system_logs()
{
return $this->hasMany(SystemLog::class);
}
public function tokens_hashed()
{
return $this->hasMany(CompanyToken::class);

View File

@ -17,10 +17,12 @@ use App\Models\ClientContact;
use App\Models\ClientGatewayToken;
use App\Models\CompanyLedger;
use App\Models\Document;
use App\Models\SystemLog;
use App\Transformers\ActivityTransformer;
use App\Transformers\ClientGatewayTokenTransformer;
use App\Transformers\CompanyLedgerTransformer;
use App\Transformers\DocumentTransformer;
use App\Transformers\SystemLogTransformer;
use App\Utils\Traits\MakesHash;
/**
@ -44,6 +46,7 @@ class ClientTransformer extends EntityTransformer
'gateway_tokens',
'activities',
'ledger',
'system_logs',
];
@ -91,6 +94,14 @@ class ClientTransformer extends EntityTransformer
return $this->includeCollection($client->ledger, $transformer, CompanyLedger::class);
}
public function includeSystemLogs(Client $client)
{
$transformer = new SystemLogTransformer($this->serializer);
return $this->includeCollection($client->system_logs, $transformer, SystemLog::class);
}
/**
* @param Client $client
*

View File

@ -29,8 +29,14 @@ use App\Models\PaymentTerm;
use App\Models\Product;
use App\Models\Project;
use App\Models\Quote;
use App\Models\SystemLog;
use App\Models\Task;
use App\Models\TaxRate;
use App\Models\TaxRate; public function includeSystemLogs(Company $company)
{
$transformer = new SystemLogTransformer($this->serializer);
return $this->includeCollection($company->system_logs, $transformer, SystemLog::class);
}
use App\Models\User;
use App\Models\Webhook;
use App\Transformers\CompanyLedgerTransformer;
@ -39,6 +45,7 @@ use App\Transformers\CompanyTokenTransformer;
use App\Transformers\CreditTransformer;
use App\Transformers\DocumentTransformer;
use App\Transformers\PaymentTermTransformer;
use App\Transformers\SystemLogTransformer;
use App\Transformers\TaskTransformer;
use App\Transformers\WebhookTransformer;
use App\Utils\Traits\MakesHash;
@ -88,7 +95,8 @@ class CompanyTransformer extends EntityTransformer
'ledger',
'webhooks',
'tokens',
'tokens_hashed'
'tokens_hashed',
'system_logs',
];
@ -307,4 +315,11 @@ class CompanyTransformer extends EntityTransformer
return $this->includeCollection($company->payment_terms()->get(), $transformer, PaymentTerm::class);
}
public function includeSystemLogs(Company $company)
{
$transformer = new SystemLogTransformer($this->serializer);
return $this->includeCollection($company->system_logs, $transformer, SystemLog::class);
}
}

View File

@ -0,0 +1,39 @@
<?php
namespace App\Transformers;
use App\Models\SystemLog;
use App\Utils\Traits\MakesHash;
class SystemLogTransformer extends EntityTransformer
{
use MakesHash;
protected $defaultIncludes = [];
/**
* @var array
*/
protected $availableIncludes = [];
/**
* @param Activity $system_log
*
* @return array
*/
public function transform(SystemLog $system_log)
{
return [
'id' => (string) $this->encodePrimaryKey($system_log->id),
'company_id' => (string) $this->encodePrimaryKey($system_log->company_id),
'user_id' => (string) $this->encodePrimaryKey($system_log->user_id),
'client_id' => (string) $this->encodePrimaryKey($system_log->client_id),
'event_id' => (int) $system_log->event_id,
'category_id' => (int) $system_log->category_id,
'type_id' => (int) $system_log->type_id,
'log' => (string) $system_log->log,
'updated_at' => (int)$system_log->updated_at,
'created_at' => (int)$system_log->created_at,
];
}
}