Team functionality (#459)
* add api enpoints for adding, removing, updating user to workspace and leaving workspace * feat: updates client site workspace settings * refactor and add domain setting ui in modal * move workspace user functionality to its own component * adds tests * fix linting * updates select input to FlatSelectInput * moves workspace user role edit to seperated component * move user adding to its own component * adds check to usure users exist before checking is admin * fix loading users * feat: invite user to team functionality * fix token coulmn * fix self host mode changes * tests for user invite * Refactor back-end * Rename variables * Improve some styling elements + refactor workspace settings * More styling * More UI polishing * More UI fixes * PHP linting * Implemented most of the logic for team-functionnality * Fix user avatar URL * WIP remove users on cancellation * Finished pricing for team functionality * Fix tests * Fix linting * Added pricing_enabled helper * Fix pricing_enabled shortcut * Debug CI * Disable pricing when testing --------- Co-authored-by: LL-Etiane <lukongleinyuyetiane@gmail.com> Co-authored-by: Lukong Etiane <83535251+LL-Etiane@users.noreply.github.com> Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
29
app/Service/BillingHelper.php
Normal file
29
app/Service/BillingHelper.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Stripe\SubscriptionItem;
|
||||
|
||||
class BillingHelper
|
||||
{
|
||||
public static function getPricing($productName = 'default')
|
||||
{
|
||||
return App::environment() == 'production' ?
|
||||
config('pricing.production.' . $productName . '.pricing') :
|
||||
config('pricing.test.' . $productName . '.pricing');
|
||||
}
|
||||
|
||||
public static function getProductId($productName = 'default')
|
||||
{
|
||||
return App::environment() == 'production' ?
|
||||
config('pricing.production.' . $productName . '.product_id') :
|
||||
config('pricing.test.' . $productName . '.product_id');
|
||||
}
|
||||
|
||||
public static function getLineItemInterval(SubscriptionItem $item)
|
||||
{
|
||||
return $item->price->recurring->interval === 'year' ? 'yearly' : 'monthly';
|
||||
;
|
||||
}
|
||||
}
|
||||
26
app/Service/UserHelper.php
Normal file
26
app/Service/UserHelper.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\Models\User;
|
||||
|
||||
class UserHelper
|
||||
{
|
||||
public function __construct(public User $user)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get to total number of active members in each of this user's workspaces
|
||||
*/
|
||||
public function getActiveMembersCount(): ?int
|
||||
{
|
||||
$count = 1;
|
||||
foreach ($this->user->workspaces as $workspace) {
|
||||
$count += $workspace->users()->where('users.id', '!=', $this->user->id)->count();
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,8 +11,13 @@ class WorkspaceHelper
|
||||
|
||||
}
|
||||
|
||||
public function getRecords($relatedRecordIds = null)
|
||||
public function getAllUsers()
|
||||
{
|
||||
return [];
|
||||
return $this->workspace->users()->withPivot('role')->get();
|
||||
}
|
||||
|
||||
public function getAllInvites()
|
||||
{
|
||||
return $this->workspace->invites()->get();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user