<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

use Illuminate\Support\Facades\URL;

use App\Models\Livestream;
use App\Models\User;
use App\Models\Location;

class LivestreamRegistration extends Model
{
    use HasFactory;

    public function saveLivestreamRegistration(Livestream $livestream, User $user)
    {
        $livestream_registration = new LivestreamRegistration();

        $livestream_registration->user_id = $user->id;
        $livestream_registration->livestream_id = $livestream->id;
        $livestream_registration->location_id = (new Location())->saveLocation()->id;
        $livestream_registration->url = URL::signedRoute('livestreams.user', ['id' => $livestream->id, 'user_id' => $user->id]);
        $livestream_registration->unregister_url = URL::signedRoute('livestreams.unregister', ['id' => $livestream->id, 'user_id' => $user->id]);
        $livestream_registration->save();

        $livestream->createPermission('view', $user);

        return $livestream_registration;
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function livestream()
    {
        return $this->belongsTo(Livestream::class);
    }

    public function location()
    {
        return $this->belongsTo(Location::class);
    }
}
