Estado inicial: frontend React + backend Laravel

This commit is contained in:
Xavier Oliveira
2026-05-15 15:57:54 +01:00
commit 41c5f87d5b
216 changed files with 29916 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Video;
class Category extends Model
{
use HasFactory;
protected $table = 'categories';
protected $fillable = [
'name',
'description',
'is_active',
];
public function videos()
{
return $this->belongsToMany(Video::class, 'video_category');
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
use HasFactory;
protected $fillable = [
'name',
'description',
'is_active',
];
public function users()
{
return $this->hasMany(User::class);
}
}

View File

@@ -0,0 +1,50 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Tymon\JWTAuth\Contracts\JWTSubject;
class User extends Authenticatable implements JWTSubject
{
use HasFactory, Notifiable;
protected $fillable = [
'name',
'email',
'password',
'role_id',
'created_at',
];
protected $hidden = [
'password',
'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
public function role()
{
return $this->belongsTo(Role::class);
}
public function workshops()
{
return $this->belongsToMany(Workshop::class, 'user_workshop')->withTimestamps();
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Category;
class Video extends Model
{
use HasFactory;
protected $table = 'videos';
protected $fillable = [
'title',
'description',
'url',
'thumbnail',
'duration',
'tags',
'is_active',
];
protected $casts = [
'is_active' => 'boolean',
];
public function categories()
{
return $this->belongsToMany(Category::class, 'video_category');
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Workshop extends Model
{
protected $fillable = [
'title',
'description',
'image',
'date',
'time_start',
'time_end',
'is_active',
'status',
];
protected $casts = [
'status' => 'string',
];
public function users()
{
return $this->belongsToMany(User::class, 'user_workshop')->withTimestamps();
}
}