add user search in SearchController, add start and end datetime in events table

This commit is contained in:
2025-12-09 12:28:02 +01:00
parent da20be4558
commit 8426755db3
89 changed files with 4684 additions and 11 deletions
@@ -22,6 +22,8 @@ class EventsController extends Controller
Events::create([
"name" => $request['name'],
"description" => $request['description'],
"start" => $request['start'],
"end" => $request['end'],
]);
return response()->json(['message' => 'Event created']);
@@ -45,6 +47,8 @@ class EventsController extends Controller
$event->name = $request['name'];
$event->description = $request['description'];
$event->start = $request['start'];
$event->end = $request['end'];
$event->save();
return response()->json(["message" => "Event updated"]);
@@ -96,6 +100,8 @@ class EventsController extends Controller
"id" => $event->id,
"name" => $event->name,
"description" => $event->description,
"start" => $event->start,
"end" => $event->end,
"created_at" => $event->created_at,
"updated_at" => $event->updated_at,
"tasks" => $event->tasks,
+73 -1
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Typesense\Client;
use Exception;
@@ -14,7 +15,7 @@ class SearchController extends Controller
public function __construct()
{
$this->client = new Client([
'api_key' => '',
'api_key' => 'xyz',
'nodes' => [
[
'host' => env('TYPESENSE_CONNECTION'),
@@ -80,4 +81,75 @@ class SearchController extends Controller
return response()->json(['error' => $e->getMessage()], 500);
}
}
private function createUsersCollection()
{
try {
$collections = $this->client->collections->retrieve();
if (!in_array('users', array_column($collections, 'name'))) {
$this->client->collections->create([
'name' => 'users',
'fields' => [
['name' => 'name', 'type' => 'string'],
['name' => 'lastname', 'type' => 'string'],
],
]);
}
} catch (Exception $e) {
throw new Exception("Error while creating the users collection : " . $e->getMessage());
}
}
private function indexUsers()
{
try {
$users = User::all();
foreach ($users as $user) {
$this->client->collections['users']->documents->upsert([
'id' => (string) $user->id,
'name' => $user->name,
'lastname' => $user->lastname,
]);
}
} catch (Exception $e) {
throw new Exception("Error while indexing users : " . $e->getMessage());
}
}
public function searchUsers(Request $request)
{
try {
$this->createUsersCollection();
$this->indexUsers();
$query = $request->input('query', '');
$searchResults = $this->client->collections['users']->documents->search([
'q' => $query,
'query_by' => 'name,lastname',
]);
return response()->json($searchResults);
} catch (Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
}
+2
View File
@@ -11,6 +11,8 @@ class Events extends Model
protected $fillable = [
"name",
"description",
'start',
'end',
];
public function tasks() {