InfluxOW/laravel_ddd_ecommerce

View on GitHub
app/Domains/Feedback/Actions/StoreFeedbackAction.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Domains\Feedback\Actions;

use App\Domains\Feedback\Http\Requests\FeedbackRequest;
use App\Domains\Feedback\Models\Feedback;
use App\Domains\Users\Models\User;

final class StoreFeedbackAction
{
    public function execute(FeedbackRequest $request): void
    {
        /** @var ?User $user */
        $user = $request->user();

        $feedback = Feedback::query()->make($request->validated());
        $feedback->user()->associate($user);
        if (isset($user)) {
            $feedback->username = $user->name;
            $feedback->email = $user->email;
            $feedback->phone = $user->phone;
        }
        $feedback->is_reviewed = false;
        $feedback->ip = $request->getIp();
        $feedback->save();
    }
}