From 57cb843aabd6ec876036d9575038e125dcf724a3 Mon Sep 17 00:00:00 2001 From: Raul Perusquia Date: Sat, 7 Oct 2023 11:35:09 +0800 Subject: [PATCH] user in snapshots --- .../Helpers/Snapshot/UI/IndexSnapshots.php | 1 + .../Portfolio/Banner/PublishBanner.php | 19 ++++++++---- .../Resources/Portfolio/SnapshotResource.php | 29 +++++++++++++------ app/Models/Helpers/Snapshot.php | 5 ++++ 4 files changed, 39 insertions(+), 15 deletions(-) diff --git a/app/Actions/Helpers/Snapshot/UI/IndexSnapshots.php b/app/Actions/Helpers/Snapshot/UI/IndexSnapshots.php index 548031f54..beb47dd25 100644 --- a/app/Actions/Helpers/Snapshot/UI/IndexSnapshots.php +++ b/app/Actions/Helpers/Snapshot/UI/IndexSnapshots.php @@ -74,6 +74,7 @@ public function tableStructure(Banner|Webpage $parent, ?array $modelOperations = $table->column(key: 'state', label: ['fal', 'fa-yin-yang']) + ->column(key: 'publisher', label: __('publisher'), sortable: true) ->column(key: 'published_at', label: __('date published'), sortable: true) ->column(key: 'published_until', label: __('published until')) ->column(key: 'comment', label: __('comment')) diff --git a/app/Actions/Portfolio/Banner/PublishBanner.php b/app/Actions/Portfolio/Banner/PublishBanner.php index 3cb474fce..633dc34dd 100644 --- a/app/Actions/Portfolio/Banner/PublishBanner.php +++ b/app/Actions/Portfolio/Banner/PublishBanner.php @@ -42,8 +42,8 @@ public function handle(Banner $banner, array $modelData): Banner ]); } - $layout = Arr::pull($modelData, 'layout'); - list($layout, $slides) = ParseBannerLayout::run($layout); + $layout = Arr::pull($modelData, 'layout'); + list($layout, $slides) = ParseBannerLayout::run($layout); /** @var Snapshot $snapshot */ $snapshot = StoreBannerSnapshot::run( @@ -53,7 +53,10 @@ public function handle(Banner $banner, array $modelData): Banner 'published_at' => now(), 'layout' => $layout, 'first_commit' => $firstCommit, - 'comment' => Arr::get($modelData, 'comment') + 'comment' => Arr::get($modelData, 'comment'), + 'user_id' => Arr::get($modelData, 'user_id'), + 'user_type' => Arr::get($modelData, 'user_type'), + ], $slides @@ -98,8 +101,10 @@ public function authorize(ActionRequest $request): bool public function rules(): array { return [ - 'layout' => ['required', 'array:delay,common,components'], - 'comment' => ['sometimes', 'required', 'string', 'max:1024'] + 'layout' => ['required', 'array:delay,common,components'], + 'comment' => ['sometimes', 'required', 'string', 'max:1024'], + 'user_id' => ['sometimes'], + 'user_type' => ['sometimes', 'string'], ]; } @@ -107,7 +112,9 @@ public function prepareForValidation(ActionRequest $request): void { $request->merge( [ - 'layout' => $request->only(['delay', 'common', 'components']), + 'layout' => $request->only(['delay', 'common', 'components']), + 'user_id' => $request->get('customerUser')->id, + 'user_type' => 'CustomerUser' ] ); } diff --git a/app/Http/Resources/Portfolio/SnapshotResource.php b/app/Http/Resources/Portfolio/SnapshotResource.php index 589aae69f..8b4cafdeb 100644 --- a/app/Http/Resources/Portfolio/SnapshotResource.php +++ b/app/Http/Resources/Portfolio/SnapshotResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources\Portfolio; use App\Enums\Portfolio\Snapshot\SnapshotStateEnum; +use App\Models\Auth\CustomerUser; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; @@ -19,21 +20,31 @@ public function toArray(Request $request): array $snapshot = $this; - $comment=$snapshot->comment; + $comment = $snapshot->comment; - if($snapshot->first_commit) { - $comment=__('First commit'); + if ($snapshot->first_commit) { + $comment = __('First commit'); } + $publisher = ''; + $publisher_avatar = null; + if ($snapshot->user_id) { + /** @var CustomerUser $customerUser */ + $customerUser = $snapshot->user; + $publisher = $customerUser->user->contact_name; + $publisher_avatar = $customerUser->user->avatarImageSources(48, 48); + } return [ - 'slug' => $snapshot->slug, - 'published_at' => $snapshot->published_at, - 'published_until' => $snapshot->published_until, - 'layout' => $snapshot->layout, - 'state' => match ($snapshot->state) { + 'slug' => $snapshot->slug, + 'published_at' => $snapshot->published_at, + 'published_until' => $snapshot->published_until, + 'layout' => $snapshot->layout, + 'publisher' => $publisher, + 'publisher_avatar' => $publisher_avatar, + 'state' => match ($snapshot->state) { SnapshotStateEnum::LIVE => [ 'tooltip' => __('live'), 'icon' => 'fal fa-broadcast-tower', @@ -49,7 +60,7 @@ public function toArray(Request $request): array 'icon' => 'fal fa-ghost' ] }, - 'comment' => $comment, + 'comment' => $comment, ]; } } diff --git a/app/Models/Helpers/Snapshot.php b/app/Models/Helpers/Snapshot.php index b10ca8ec5..f5d8c0bba 100644 --- a/app/Models/Helpers/Snapshot.php +++ b/app/Models/Helpers/Snapshot.php @@ -46,6 +46,7 @@ * @property-read Model|\Eloquent $parent * @property-read \Illuminate\Database\Eloquent\Collection $slides * @property-read int|null $slides_count + * @property-read Model|\Eloquent $user * @method static Builder|Snapshot newModelQuery() * @method static Builder|Snapshot newQuery() * @method static Builder|Snapshot query() @@ -116,6 +117,10 @@ public function parent(): MorphTo return $this->morphTo(); } + public function user(): MorphTo + { + return $this->morphTo(); + } public function slides(): HasMany {