From 5c36e1e17e3ce195fe890270861c44b1cc3ff480 Mon Sep 17 00:00:00 2001 From: gaurav-vaghela Date: Fri, 29 May 2026 21:04:10 +0530 Subject: [PATCH 1/2] suspended label changes --- app/app/Enums/WorkspaceSuspensionStatus.php | 63 +++++++++++++++++++ app/app/Helpers/WorkspaceSuspensionHelper.php | 39 +++++++++--- .../views/admin/workspace/index.blade.php | 2 +- 3 files changed, 93 insertions(+), 11 deletions(-) create mode 100644 app/app/Enums/WorkspaceSuspensionStatus.php diff --git a/app/app/Enums/WorkspaceSuspensionStatus.php b/app/app/Enums/WorkspaceSuspensionStatus.php new file mode 100644 index 000000000..6486494d8 --- /dev/null +++ b/app/app/Enums/WorkspaceSuspensionStatus.php @@ -0,0 +1,63 @@ +where('status', true); + $suspensions = WorkspaceSuspension::where('workspace_id', $workspaceId) + ->orderBy('suspended_at', 'desc') + ->get(); - return $query->orderBy('suspended_at', 'desc')->first(); + foreach ($suspensions as $suspension) { + if (WorkspaceSuspensionStatus::isActive($suspension->status)) { + return $suspension; + } + } + + return null; } public static function getGracePeriodExtension($workspaceId) @@ -73,19 +81,30 @@ public static function saveGracePeriodExtension(Workspace $workspace, $value) $workspace->save(); } + if ($extension !== null && !$workspace->active) { + $workspace->active = true; + $workspace->save(); + } + if (!Schema::hasTable('workspace_suspensions')) { return $workspace; } - $suspension = self::getActiveSuspension($workspace->id); - if (!$suspension) { + $suspensions = WorkspaceSuspension::where('workspace_id', $workspace->id)->get(); + + if ($suspensions->isEmpty()) { return $workspace; } - $suspension->grace_period_extension = $extension; - $suspension->save(); + foreach ($suspensions as $suspension) { + $suspension->grace_period_extension = $extension; + if ($extension !== null) { + $suspension->status = WorkspaceSuspensionStatus::NOT_SUSPENDED; + } + $suspension->save(); + } - return $suspension; + return $suspensions->first(); } public static function suspendWorkspace(Workspace $workspace, $invoice = null, $daysPastDue = null, $threshold = null) @@ -101,7 +120,7 @@ public static function suspendWorkspace(Workspace $workspace, $invoice = null, $ $suspension->workspace_id = $workspace->id; $suspension->suspended_at = new DateTime(); $suspension->reason = 'payment_past_due'; - $suspension->status = true; + $suspension->status = WorkspaceSuspensionStatus::REAL_SUSPENSION; $isNewSuspension = true; } @@ -111,7 +130,7 @@ public static function suspendWorkspace(Workspace $workspace, $invoice = null, $ if (!$suspension->reason) { $suspension->reason = 'payment_past_due'; } - $suspension->status = true; + $suspension->status = WorkspaceSuspensionStatus::REAL_SUSPENSION; $suspension->save(); diff --git a/app/resources/views/admin/workspace/index.blade.php b/app/resources/views/admin/workspace/index.blade.php index 701db8e5d..9a06ca05b 100755 --- a/app/resources/views/admin/workspace/index.blade.php +++ b/app/resources/views/admin/workspace/index.blade.php @@ -20,7 +20,7 @@ {!! trans("admin/workspaces.name") !!} - {!! trans("admin/workspaces.active") !!} + Account Status Grace Period {!! trans("admin/admin.created_at") !!} {!! trans("admin/admin.action") !!} From d837920476ea0db191c44f467316c63b8e57e0c0 Mon Sep 17 00:00:00 2001 From: gaurav-vaghela Date: Fri, 29 May 2026 21:07:05 +0530 Subject: [PATCH 2/2] Datatable label changed --- .../Controllers/Admin/WorkspaceController.php | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/app/app/Http/Controllers/Admin/WorkspaceController.php b/app/app/Http/Controllers/Admin/WorkspaceController.php index 8196346ea..ff7449b70 100755 --- a/app/app/Http/Controllers/Admin/WorkspaceController.php +++ b/app/app/Http/Controllers/Admin/WorkspaceController.php @@ -11,6 +11,7 @@ use App\PlanUsagePeriod; use App\UserInvoice; use App\Http\Requests\Admin\WorkspaceRequest; +use App\Enums\WorkspaceSuspensionStatus; use App\Helpers\MainHelper; use App\Helpers\WorkspaceHelper; use App\Helpers\BillingDataHelper; @@ -49,7 +50,8 @@ public function create() { $gracePeriodExtension = null; $activeSuspension = null; - return view('admin.workspace.create_edit', compact('gracePeriodExtension', 'activeSuspension')); + $isWorkspaceSuspended = false; + return view('admin.workspace.create_edit', compact('gracePeriodExtension', 'activeSuspension', 'isWorkspaceSuspended')); } /** @@ -62,7 +64,9 @@ public function store(WorkspaceRequest $request) $workspace = new Workspace($request->except('grace_period_extension')); $workspace->save(); - WorkspaceSuspensionHelper::saveGracePeriodExtension($workspace, $request->input('grace_period_extension')); + if ($request->exists('grace_period_extension')) { + WorkspaceSuspensionHelper::saveGracePeriodExtension($workspace, $request->input('grace_period_extension')); + } header("X-Goto-URL: /admin/workspace/" . $workspace->id . "/edit"); } @@ -86,7 +90,8 @@ public function edit(Workspace $workspace) $planHistory = PlanUsagePeriod::where("workspace_id", $workspace->id)->get(); $gracePeriodExtension = WorkspaceSuspensionHelper::getGracePeriodExtension($workspace->id); $activeSuspension = WorkspaceSuspensionHelper::getActiveSuspension($workspace->id); - return view('admin.workspace.create_edit', compact('workspace', 'users', 'billingHistory', 'billingInfo', 'usageTriggers', 'routingACLs', 'planHistory', 'invoices', 'gracePeriodExtension', 'activeSuspension')); + $isWorkspaceSuspended = !empty($activeSuspension); + return view('admin.workspace.create_edit', compact('workspace', 'users', 'billingHistory', 'billingInfo', 'usageTriggers', 'routingACLs', 'planHistory', 'invoices', 'gracePeriodExtension', 'activeSuspension', 'isWorkspaceSuspended')); } /** @@ -98,7 +103,9 @@ public function edit(Workspace $workspace) public function update(WorkspaceRequest $request, Workspace $workspace) { $workspace->update($request->except('grace_period_extension')); - WorkspaceSuspensionHelper::saveGracePeriodExtension($workspace, $request->input('grace_period_extension')); + if ($request->exists('grace_period_extension')) { + WorkspaceSuspensionHelper::saveGracePeriodExtension($workspace, $request->input('grace_period_extension')); + } header("X-Goto-URL: /admin/workspace/" . $workspace->id . "/edit"); } @@ -133,15 +140,16 @@ public function destroy(Workspace $workspace) public function data() { $globalGracePeriod = WorkspaceSuspensionHelper::getGlobalGracePeriod(); + $realSuspensionStatus = WorkspaceSuspensionStatus::REAL_SUSPENSION; $activeSuspensionSelect = Schema::hasTable('workspace_suspensions') - ? DB::raw('(select count(*) from workspace_suspensions ws_status where ws_status.workspace_id = workspaces.id and ws_status.status = 1) as active_suspension') + ? DB::raw("(select count(*) from workspace_suspensions ws_status where ws_status.workspace_id = workspaces.id and ws_status.status in ('" . $realSuspensionStatus . "', '1')) as active_suspension") : DB::raw('0 as active_suspension'); $gracePeriodSources = array(); if (Schema::hasColumn('workspaces', 'grace_period_extension')) { $gracePeriodSources[] = 'workspaces.grace_period_extension'; } if (Schema::hasTable('workspace_suspensions')) { - $gracePeriodSources[] = '(select ws.grace_period_extension from workspace_suspensions ws where ws.workspace_id = workspaces.id and ws.status = 1 and ws.grace_period_extension is not null order by ws.suspended_at desc limit 1)'; + $gracePeriodSources[] = "(select ws.grace_period_extension from workspace_suspensions ws where ws.workspace_id = workspaces.id and ws.status in ('" . $realSuspensionStatus . "', '1') and ws.grace_period_extension is not null order by ws.suspended_at desc limit 1)"; } $gracePeriodSources[] = (int) $globalGracePeriod; $gracePeriodSelect = DB::raw('COALESCE(' . implode(', ', $gracePeriodSources) . ') as grace_period'); @@ -156,7 +164,7 @@ public function data() )); return Datatables::of($workspaces) - ->edit_column('active', '@if ($active_suspension > 0) Suspended @elseif ($active=="1") @else @endif') + ->edit_column('active', '@if ($active=="1") Active @elseif ($active_suspension > 0) Suspended @else Inactive @endif') ->edit_column('grace_period', '{{ $grace_period }} days') ->add_column('actions', ' {{ trans("admin/modal.edit") }} {{ trans("admin/modal.support_tickets") }}