NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Appointments for Laravel

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 kryptomien

Odoslaní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.