Added member and invitation endpoints

This commit is contained in:
Constantin Graf
2024-04-10 17:45:53 +02:00
parent 234fa06324
commit b67961cb07
48 changed files with 1186 additions and 106 deletions

View File

@@ -4,7 +4,10 @@ declare(strict_types=1);
namespace App\Models;
use Database\Factories\MembershipFactory;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Laravel\Jetstream\Membership as JetstreamMembership;
/**
@@ -17,9 +20,12 @@ use Laravel\Jetstream\Membership as JetstreamMembership;
* @property string $updated_at
* @property-read Organization $organization
* @property-read User $user
*
* @method static MembershipFactory factory()
*/
class Membership extends JetstreamMembership
{
use HasFactory;
use HasUuids;
/**
@@ -28,4 +34,20 @@ class Membership extends JetstreamMembership
* @var string
*/
protected $table = 'organization_user';
/**
* @return BelongsTo<User, Membership>
*/
public function user(): BelongsTo
{
return $this->belongsTo(User::class, 'user_id');
}
/**
* @return BelongsTo<Organization, Membership>
*/
public function organization(): BelongsTo
{
return $this->belongsTo(Organization::class, 'organization_id');
}
}

View File

@@ -22,6 +22,7 @@ use Laravel\Jetstream\Team as JetstreamTeam;
* @property bool $personal_team
* @property string $currency
* @property int|null $billable_rate
* @property string $user_id
* @property User $owner
* @property Collection<User> $users
* @property Collection<string, User> $realUsers
@@ -101,6 +102,7 @@ class Organization extends JetstreamTeam
{
return $this->belongsToMany(Jetstream::userModel(), Jetstream::membershipModel())
->withPivot([
'id',
'role',
'billable_rate',
])

View File

@@ -12,6 +12,9 @@ use Laravel\Jetstream\TeamInvitation as JetstreamTeamInvitation;
/**
* @property string $id
* @property string $email
* @property string $role
* @property string $organization_id
* @property-read Organization $organization
*/
class OrganizationInvitation extends JetstreamTeamInvitation
{

View File

@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace App\Models;
use Database\Factories\ProjectMemberFactory;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@@ -18,6 +19,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
* @property-read Project $project
* @property-read User $user
*
* @method static Builder<ProjectMember> whereBelongsToOrganization(Organization $organization)
* @method static ProjectMemberFactory factory()
*/
class ProjectMember extends Model
@@ -49,4 +51,14 @@ class ProjectMember extends Model
{
return $this->belongsTo(User::class, 'user_id');
}
/**
* @param Builder<ProjectMember> $builder
*/
public function scopeWhereBelongsToOrganization(Builder $builder, Organization $organization): void
{
$builder->whereHas('project', static function (Builder $query) use ($organization): void {
$query->whereBelongsTo($organization, 'organization');
});
}
}

View File

@@ -114,6 +114,7 @@ class User extends Authenticatable
{
return $this->belongsToMany(Organization::class, Membership::class)
->withPivot([
'id',
'role',
'billable_rate',
])