changes, global search (clients, cleintCases)

This commit is contained in:
Simon Pocrnjič
2024-11-19 12:49:16 +01:00
parent c45751c1e2
commit 3ae70bf340
37 changed files with 1888 additions and 229 deletions
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\Post;
class ImportPosts extends Command
{
protected $signature = 'import:posts';
protected $description = 'Import posts into Algolia without clearing the index';
public function __construct()
{
parent::__construct();
}
public function handle()
{
$posts = Post::all();
$posts->searchable();
$this->info('Posts have been imported into Algolia.');
}
}
+2 -2
View File
@@ -24,7 +24,7 @@ public function index(ClientCase $clientCase, Request $request)
)
->where('active', 1)
->orderByDesc('created_at')
->paginate(15)
->paginate(15, ['*'], 'client-cases-page')
->withQueryString(),
'filters' => $request->only(['search'])
]);
@@ -164,7 +164,7 @@ public function show(ClientCase $clientCase)
->orderByDesc('created_at')->get(),
'activities' => $case->activities()->with(['action', 'decision'])
->orderByDesc('created_at')
->paginate(15),
->paginate(20, ['*'], 'activities'),
'contract_types' => \App\Models\ContractType::whereNull('deleted_at')->get(),
'actions' => \App\Models\Action::with('decisions')->get()
]);
+66
View File
@@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use App\Http\Requests\StorePostRequest;
use App\Http\Requests\UpdatePostRequest;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(StorePostRequest $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(Post $post)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Post $post)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(UpdatePostRequest $request, Post $post)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Post $post)
{
//
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
//
];
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdatePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
//
];
}
}
+2
View File
@@ -6,11 +6,13 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Laravel\Scout\Searchable;
class Action extends Model
{
/** @use HasFactory<\Database\Factories\ActionFactory> */
use HasFactory;
use Searchable;
public function decisions(): BelongsToMany
{
+23
View File
@@ -7,12 +7,15 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Scout\Searchable;
class Client extends Model
{
/** @use HasFactory<\Database\Factories\ClientFactory> */
use HasFactory;
use Uuid;
use Searchable;
protected $fillable = [
'person_id'
@@ -23,6 +26,26 @@ class Client extends Model
'person_id',
];
protected function makeAllSearchableUsing(Builder $query): Builder
{
return $query->with('person');
}
public function toSearchableArray(): array
{
$person = [
'full_name' => $this->person->full_name,
'addresses' => $this->person->addresses,
'phones' => $this->person->phones
];
return [
'person' => $person
];
}
public function person(): BelongsTo
{
return $this->belongsTo(\App\Models\Person\Person::class);
+17
View File
@@ -7,12 +7,15 @@
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Scout\Searchable;
class ClientCase extends Model
{
/** @use HasFactory<\Database\Factories\ClientCaseFactory> */
use HasFactory;
use Uuid;
use Searchable;
protected $fillable = [
'client_id'
@@ -24,6 +27,20 @@ class ClientCase extends Model
'person_id'
];
protected function makeAllSearchableUsing(Builder $query): Builder
{
return $query->with('person');
}
public function toSearchableArray(): array
{
return [
'person' => $this->person,
'addresses' => $this->person->addresses,
'phones' => $this->person->phones
];
}
public function client(): BelongsTo
{
return $this->belongsTo(\App\Models\Client::class);
+19
View File
@@ -8,7 +8,9 @@
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Sanctum\HasApiTokens;
use Laravel\Scout\Searchable;
class Person extends Model
{
@@ -16,6 +18,7 @@ class Person extends Model
/** @use HasFactory<\Database\Factories\Person/PersonFactory> */
use HasFactory;
use Uuid;
use Searchable;
/**
* The attributes that are mass assignable.
@@ -52,6 +55,22 @@ protected static function booted(){
});
}
protected function makeAllSearchableUsing(Builder $query): Builder
{
return $query->with(['addresses', 'phones']);
}
public function toSearchableArray(): array
{
return [
'first_name' => $this->first_name,
'last_name' => $this->last_name,
'full_name' => $this->full_name,
'addresses' => $this->addresses,
'phones' => $this->phones
];
}
public function phones(): HasMany
{
+10
View File
@@ -5,11 +5,13 @@
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Laravel\Scout\Searchable;
class PersonAddress extends Model
{
/** @use HasFactory<\Database\Factories\Person/PersonAddressFactory> */
use HasFactory;
use Searchable;
protected $fillable = [
'address',
@@ -26,6 +28,14 @@ class PersonAddress extends Model
'deleted'
];
public function toSearchableArray(): array
{
return [
'address' => $this->address,
'country' => $this->country
];
}
protected static function booted(){
static::creating(function (PersonAddress $address) {
$address->user_id = auth()->id();
+9
View File
@@ -6,11 +6,13 @@
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Laravel\Scout\Searchable;
class PersonPhone extends Model
{
/** @use HasFactory<\Database\Factories\Person/PersonPhoneFactory> */
use HasFactory;
use Searchable;
protected $fillable = [
'nu',
@@ -27,6 +29,13 @@ class PersonPhone extends Model
'deleted'
];
public function toSearchableArray(): array
{
return [
'nu' => $this->nu
];
}
protected static function booted(){
static::creating(function (PersonPhone $personPhone) {
if(!isset($personPhone->user_id)){
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Post extends Model
{
use HasFactory, Searchable;
public function toSearchableArray()
{
$array = $this->toArray();
return $array;
}
}
+66
View File
@@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\Post;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class PostPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, Post $post): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, Post $post): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, Post $post): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, Post $post): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, Post $post): bool
{
//
}
}