Hodnotenia po návšteve
Termíny sa dajú hodnotiť cez reviews-for-laravel. review() vráti builder hodnotenia a vytvorené hodnotenie sa označí ako overené, ak sa autor termínu naozaj zúčastnil:
$review = $appointment->review($attendee)
->rating(5)
->title('Quick and thorough')
->content('Clear explanation and no waiting.')
->create();
$review->verified; // true: a participant of a completed appointment
$appointment->averageRating(); // ?float
$appointment->ratingSummary(); // RatingSummary DTO: average, count, distribution, …
$appointment->approvedReviewsCount(); // int- Predvolene je hodnotenie overené, ak je jeho autor účastníkom dokončeného termínu. Ktokoľvek iný dostane neoverené hodnotenie.
- Pri zapnutom reviews.require_verified_attendance review() pre neovereného autora namiesto toho vyhodí CannotReviewAppointmentException.
- averageRating(), ratingSummary() a approvedReviewsCount() rátajú len schválené hodnotenia. Pri predvolenej moderácii reviews-for-laravel nové hodnotenie čaká na schválenie — nastavte reviews.auto_approve, ak sa majú rátať hneď.
Modely autorov
Modely, ktoré píšu hodnotenia, používajú trait CanReview z balíka reviews:
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Appointments\Concerns\HasAppointments;
use RoundlyConsulting\Reviews\Concerns\CanReview;
class User extends Authenticatable
{
use CanReview;
use HasAppointments;
}Vlastný resolver účasti
O overení rozhoduje VerifiedAttendanceResolver naviazaný z konfigurácie. Ak chcete vlastné pravidlo, implementujte toto rozhranie s jedinou metódou:
namespace App\Reviews;
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Appointments\Enums\ParticipantRole;
use RoundlyConsulting\Appointments\Enums\Status;
use RoundlyConsulting\Appointments\Models\Appointment;
use RoundlyConsulting\Appointments\Reviews\VerifiedAttendanceResolver;
// Only attendees — not organisers — count as verified reviewers.
final class AttendeesOnlyResolver implements VerifiedAttendanceResolver
{
public function verified(Model $author, Model $appointment): bool
{
return $appointment instanceof Appointment
&& $appointment->status === Status::Completed
&& $appointment->participants()
->whereMorphedTo('participant', $author)
->where('role', ParticipantRole::Attendee->value)
->exists();
}
}// config/appointments.php
'reviews' => [
'verified_attendance_resolver' => App\Reviews\AttendeesOnlyResolver::class,
'require_verified_attendance' => true, // review() throws for unverified authors
],Ak chcete overovanie vypnúť, nastavte reviews.verified_attendance_resolver na NullVerifiedAttendanceResolver::class — každé hodnotenie zostane neoverené. Ak kľúč vynecháte alebo necháte prázdny, zostane overujúci predvolený DatabaseVerifiedAttendanceResolver.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.