bambolee-digital / event-user-manager
Laravel 和 FilamentPhp 的用户事件管理系统
Requires
- php: ^8.1
- filament/filament: ^3.0
- laravel/framework: ^10.0|^11.0
- spatie/laravel-translatable: ^6.8
README
Event User Manager 是一个 Laravel 扩展包,用于管理用户事件,支持重复事件、附件以及与 Filament 的集成以进行管理。
安装
您可以通过 composer 安装此包
composer require bambolee-digital/event-user-manager
此包依赖于 spatie/laravel-translatable。如果您尚未安装它,可以通过运行以下命令进行安装:
composer require spatie/laravel-translatable
配置
使用以下命令发布配置文件:
php artisan vendor:publish --provider="BamboleeDigital\EventUserManager\EventUserManagerServiceProvider" --tag="config"
这将创建一个 config/event-user-manager.php
文件。您可以根据需要修改设置。
您需要在您的 Filament 配置文件中注册以下资源:
use BamboleeDigital\EventUserManager\Filament\Resources\EventResource; use BamboleeDigital\EventUserManager\Filament\Resources\EventTypeResource; use BamboleeDigital\OnboardingPackage\Filament\Resources\QuestionResource; ->resources([ EventResource::class, EventTypeResource::class, RecurrencePatternResource::class, ])
使用方法
API
该包提供了用于管理事件、笔记、附件和图片的 API 端点。主要端点包括:
事件
GET /api/events
:列出事件POST /api/events
:创建新事件GET /api/events/{id}
:获取事件详情PUT /api/events/{id}
:更新事件DELETE /api/events/{id}
:删除事件GET /api/events/past
:获取过去的事件GET /api/events/future
:获取未来的事件GET /api/events/status/{status}
:按状态获取事件
笔记
POST /api/events/{event}/notes
:向事件添加笔记PUT /api/events/{event}/notes/{note}
:更新笔记DELETE /api/events/{event}/notes/{note}
:删除笔记
附件和图片
POST /api/events/{event}/attachments
:向事件添加附件DELETE /api/events/{event}/attachments/{attachment}
:从事件中移除附件POST /api/events/{event}/images
:向事件添加图片DELETE /api/events/{event}/images/{image}
:从事件中移除图片
API 使用示例
这里是 Event User Manager API 的全面示例。这些示例使用 Guzzle HTTP 客户端,但您可以将它们修改为您的首选 HTTP 客户端。
设置
首先,设置 HTTP 客户端
use GuzzleHttp\Client; $client = new Client([ 'base_uri' => 'http://your-api-base-url/', 'headers' => [ 'Authorization' => 'Bearer YOUR_API_TOKEN', 'Accept' => 'application/json', ], ]);
事件
列出事件
$response = $client->get('api/events'); $events = json_decode($response->getBody(), true);
创建完整事件
$multipart = [ ['name' => 'name', 'contents' => 'Annual Company Retreat'], ['name' => 'description', 'contents' => 'Our yearly company-wide retreat for team building and strategy planning.'], ['name' => 'event_type_id', 'contents' => '1'], ['name' => 'start_date', 'contents' => '2024-07-15 09:00:00'], ['name' => 'end_date', 'contents' => '2024-07-17 17:00:00'], ['name' => 'status', 'contents' => 'active'], ['name' => 'recurrence_pattern_id', 'contents' => '2'], ['name' => 'frequency_type', 'contents' => 'yearly'], ['name' => 'frequency_count', 'contents' => '5'], ['name' => 'metadata[location]', 'contents' => 'Mountain Resort'], ['name' => 'metadata[expected_attendees]', 'contents' => '150'], [ 'name' => 'attachments[]', 'contents' => fopen('path/to/schedule.pdf', 'r'), 'filename' => 'retreat_schedule.pdf', ], [ 'name' => 'images[]', 'contents' => fopen('path/to/venue.jpg', 'r'), 'filename' => 'retreat_venue.jpg', ], ['name' => 'notes[0][content]', 'contents' => 'Remember to book flight tickets for overseas participants.'], [ 'name' => 'notes[0][attachments][]', 'contents' => fopen('path/to/flight_details.pdf', 'r'), 'filename' => 'flight_details.pdf', ], ]; $response = $client->post('api/events', [ 'multipart' => $multipart, ]); $eventData = json_decode($response->getBody(), true); echo "Event created with ID: " . $eventData['id'];
获取事件详情
$eventId = 1; $response = $client->get("api/events/{$eventId}"); $event = json_decode($response->getBody(), true);
更新事件
$eventId = 1; $response = $client->put("api/events/{$eventId}", [ 'json' => [ 'name' => 'Updated Event Name', 'description' => 'This is an updated description', 'start_date' => '2024-08-01 10:00:00', ], ]); $updatedEvent = json_decode($response->getBody(), true);
删除事件
$eventId = 1; $response = $client->delete("api/events/{$eventId}"); echo $response->getStatusCode() == 204 ? "Event deleted successfully" : "Failed to delete event";
获取过去的事件
$response = $client->get('api/events/past'); $pastEvents = json_decode($response->getBody(), true);
获取未来的事件
$response = $client->get('api/events/future'); $futureEvents = json_decode($response->getBody(), true);
按状态获取事件
$status = 'active'; $response = $client->get("api/events/status/{$status}"); $activeEvents = json_decode($response->getBody(), true);
笔记
向事件添加笔记
$eventId = 1; $response = $client->post("api/events/{$eventId}/notes", [ 'json' => [ 'content' => 'This is a new note for the event', ], ]); $note = json_decode($response->getBody(), true);
更新笔记
$eventId = 1; $noteId = 1; $response = $client->put("api/events/{$eventId}/notes/{$noteId}", [ 'json' => [ 'content' => 'This is an updated note content', ], ]); $updatedNote = json_decode($response->getBody(), true);
删除笔记
$eventId = 1; $noteId = 1; $response = $client->delete("api/events/{$eventId}/notes/{$noteId}"); echo $response->getStatusCode() == 204 ? "Note deleted successfully" : "Failed to delete note";
附件
向事件添加附件
$eventId = 1; $response = $client->post("api/events/{$eventId}/attachments", [ 'multipart' => [ [ 'name' => 'attachment', 'contents' => fopen('path/to/document.pdf', 'r'), 'filename' => 'important_document.pdf', ], ], ]); $attachment = json_decode($response->getBody(), true);
从事件中移除附件
$eventId = 1; $attachmentId = 1; $response = $client->delete("api/events/{$eventId}/attachments/{$attachmentId}"); echo $response->getStatusCode() == 204 ? "Attachment removed successfully" : "Failed to remove attachment";
图片
向事件添加图片
$eventId = 1; $response = $client->post("api/events/{$eventId}/images", [ 'multipart' => [ [ 'name' => 'image', 'contents' => fopen('path/to/image.jpg', 'r'), 'filename' => 'event_image.jpg', ], ], ]); $image = json_decode($response->getBody(), true);
从事件中移除图片
$eventId = 1; $imageId = 1; $response = $client->delete("api/events/{$eventId}/images/{$imageId}"); echo $response->getStatusCode() == 204 ? "Image removed successfully" : "Failed to remove image";
这些示例涵盖了 Event User Manager API 中所有主要操作。请记住,将 'http://your-api-base-url/'
替换为您的实际 API URL,并将 'YOUR_API_TOKEN'
替换为有效的认证令牌。同时,调整示例中的文件路径以匹配您的本地文件结构。
此示例演示了使用以下内容创建事件:
- 基本事件详情(名称、描述、日期、状态)
- 事件类型和重复模式
- 元数据(位置和预期参与者)
- 主要事件附件和图片
- 带有自己附件和图片的笔记
请记住,将 'http://your-api-base-url/'
替换为您的实际 API URL,并将 'YOUR_API_TOKEN'
替换为有效的认证令牌。
Filament Admin
该包包括用于管理事件、事件类型和重复模式的 Filament 资源。这些将在您的 Filament 面板中自动可用。
通知
该包包括一个可配置的通知系统。您可以通过编辑配置文件添加自定义通知渠道。
定制
您可以扩展或覆盖软件包的任何功能。请参考配置文件以获取自定义选项。
测试
composer test
变更日志
请参阅变更日志获取最近更改的详细信息。
贡献
欢迎贡献!请参阅贡献指南以获取详细信息。
安全性
如果您发现任何安全问题,请通过电子邮件your-email@example.com联系,而不是使用问题跟踪器。
致谢
许可证
事件用户管理器是开源软件,遵循MIT许可证。