Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 71 additions & 4 deletions EstateManagementUI.BlazorServer/Common/Helpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,16 @@ public static string GetFailedSalesVarianceDisplay(TransactionModels.TodaysSales
return $"{sign}{percentageChange:F1}%";
}

public static string GetTabClass(string activeTab, string tab)
{
return activeTab == tab
? "border-blue-600 text-blue-600 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm"
: "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm";
}
}

public static class NavigationManagerExtensions
{
public static void NavigateToErrorPage(this NavigationManager navigationManager)
{
navigationManager.NavigateTo("/error", replace: true);
Expand All @@ -161,11 +171,68 @@ public static void NavigateToEntryPage(this NavigationManager navigationManager)
navigationManager.NavigateTo("/entry", replace: true);
}

public static string GetTabClass(string activeTab, string tab)
public static void NavigateToContract(this NavigationManager navigationManager, Guid contractId) {
navigationManager.NavigateTo($"/contracts/{contractId}");
}

public static void NavigateToEditContract(this NavigationManager navigationManager, Guid contractId)
{
return activeTab == tab
? "border-blue-600 text-blue-600 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm"
: "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300 whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm";
navigationManager.NavigateTo($"/contracts/{contractId}/edit");
}

public static void NavigateToContractList(this NavigationManager navigationManager)
{
navigationManager.NavigateTo($"/contracts");
}

public static void NavigateToNewContract(this NavigationManager navigationManager)
{
navigationManager.NavigateTo($"/contracts/new");
}

public static void NavigateToMerchantList(this NavigationManager navigationManager)
{
navigationManager.NavigateTo($"/merchants");
}

public static void NavigateToMerchant(this NavigationManager navigationManager, Guid merchantId)
{
navigationManager.NavigateTo($"/merchants/{merchantId}");
}

public static void NavigateToEditMerchant(this NavigationManager navigationManager, Guid merchantId)
{
navigationManager.NavigateTo($"/merchants/{merchantId}/edit");
}

public static void NavigateToMakeMerchantDeposit(this NavigationManager navigationManager, Guid merchantId)
{
navigationManager.NavigateTo($"/merchants/{merchantId}/deposit");
}

public static void NavigateToNewMerchant(this NavigationManager navigationManager)
{
navigationManager.NavigateTo($"/merchants/new");
}

public static void NavigateToOperatorList(this NavigationManager navigationManager)
{
navigationManager.NavigateTo($"/operators");
}

public static void NavigateToNewOperator(this NavigationManager navigationManager)
{
navigationManager.NavigateTo($"/operators/new");
}

public static void NavigateToOperator(this NavigationManager navigationManager, Guid operatorId)
{
navigationManager.NavigateTo($"/operators/{operatorId}");
}

public static void NavigateToEditOperator(this NavigationManager navigationManager, Guid operatorId)
{
navigationManager.NavigateTo($"/operators/{operatorId}/edit");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Shared.Results;
using SimpleResults;
using System.ComponentModel.DataAnnotations;
using EstateManagementUI.BlazorServer.Common;

namespace EstateManagementUI.BlazorServer.Components.Pages.Contracts;

Expand Down Expand Up @@ -191,13 +192,7 @@ private async Task RemoveFee(Guid productId, Guid feeId)
StateHasChanged();
}

private void BackToView()
{
NavigationManager.NavigateTo($"/contracts/{ContractId}");
}
private void BackToView() => this.NavigationManager.NavigateToContract(ContractId);

private void BackToList()
{
NavigationManager.NavigateTo("/contracts");
}
private void BackToList() => this.NavigationManager.NavigateToContractList();
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
@page "/contracts"
@using EstateManagementUI.BlazorServer.Common
@using EstateManagementUI.BlazorServer.Factories
@rendermode InteractiveServer
@inherits AuthorizedComponentBase
Expand All @@ -16,7 +17,7 @@
<div class="flex items-center justify-between">
<h1 class="text-2xl font-bold text-gray-900">Contract Management</h1>
<RequirePermission Section="@PermissionSection.Contract" Function="@PermissionFunction.Create" @key="@($"create-contract-{PermissionKeyProvider.GetKey()}")">
<button id="newContractButton" class="btn btn-primary" @onclick='() => NavigationManager.NavigateTo("/contracts/new")'>
<button id="newContractButton" class="btn btn-primary" @onclick='() => NavigationManager.NavigateToNewContract()'>
<svg class="w-5 h-5 inline-block mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path>
</svg>
Expand Down Expand Up @@ -56,15 +57,15 @@
</span>
</div>
<div class="flex items-center justify-end space-x-2 pt-4 border-t">
<button class="btn btn-secondary btn-sm" @onclick='() => NavigationManager.NavigateTo($"/contracts/{contract.ContractId}")' title="View">
<button class="btn btn-secondary btn-sm" @onclick='() => NavigationManager.NavigateToContract(contract.ContractId)' title="View">
<svg class="w-4 h-4 inline-block mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
</svg>
View
</button>
<RequirePermission Section="@PermissionSection.Contract" Function="@PermissionFunction.Edit" @key="@($"edit-{contract.ContractId}-{PermissionKeyProvider.GetKey()}")">
<button class="btn btn-primary btn-sm" @onclick='() => NavigationManager.NavigateTo($"/contracts/{contract.ContractId}/edit")' title="Edit">
<button class="btn btn-primary btn-sm" @onclick='() => NavigationManager.NavigateToEditContract(contract.ContractId)' title="Edit">
<svg class="w-4 h-4 inline-block mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path>
</svg>
Expand All @@ -84,7 +85,7 @@
</svg>
<p class="text-gray-600 mb-4">No contracts found.</p>
<RequirePermission Section="PermissionSection.Contract" Function="PermissionFunction.Create">
<button class="btn btn-primary" @onclick='() => NavigationManager.NavigateTo("/contracts/new")'>Add Your First Contract</button>
<button class="btn btn-primary" @onclick='() => NavigationManager.NavigateToNewContract()'>Add Your First Contract</button>
</RequirePermission>
</div>
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using EstateManagementUI.BlazorServer.Models;
using EstateManagementUI.BlazorServer.Common;
using EstateManagementUI.BlazorServer.Models;
using EstateManagementUI.BlazorServer.Permissions;
using EstateManagementUI.BusinessLogic.Requests;
using Shared.Results;
Expand Down Expand Up @@ -60,7 +61,7 @@ private async Task HandleSubmit() {
await this.WaitOnUIRefresh();

// Navigate to contracts list with success
NavigationManager.NavigateTo("/contracts");
NavigationManager.NavigateToContractList();
}
else {
this.errorMessage = "Failed to create contract";
Expand All @@ -69,9 +70,6 @@ private async Task HandleSubmit() {
isSaving = false;
}

private void Cancel()
{
NavigationManager.NavigateTo("/contracts");
}
private void Cancel() => NavigationManager.NavigateToContractList();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using EstateManagementUI.BlazorServer.Factories;
using EstateManagementUI.BlazorServer.Common;
using EstateManagementUI.BlazorServer.Factories;
using EstateManagementUI.BlazorServer.Models;
using EstateManagementUI.BlazorServer.Permissions;
using EstateManagementUI.BusinessLogic.Requests;
Expand Down Expand Up @@ -45,9 +46,6 @@ private async Task<Result> LoadContract()
return Result.Success();
}

private void BackToList()
{
NavigationManager.NavigateTo("/contracts");
}
private void BackToList() => NavigationManager.NavigateToContractList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
@using EstateManagementUI.BlazorServer.UIServices
@inherits AuthorizedComponentBase
@rendermode InteractiveServer
@inject NavigationManager NavigationManager
@inject IEstateUIService EstateUiService

<PageTitle>Estate Management</PageTitle>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Shared.Results;
using SimpleResults;
using System.ComponentModel.DataAnnotations;
using EstateManagementUI.BlazorServer.Common;

namespace EstateManagementUI.BlazorServer.Components.Pages.Merchants
{
Expand Down Expand Up @@ -63,7 +64,7 @@ private async Task HandleSubmit() {
await this.WaitOnUIRefresh();

// Navigate to contracts list with success
NavigationManager.NavigateTo("/merchants");
NavigationManager.NavigateToMerchantList();
}
else {
this.errorMessage = "Failed to make deposit";
Expand All @@ -72,9 +73,6 @@ private async Task HandleSubmit() {
isSaving = false;
}

private void Cancel()
{
NavigationManager.NavigateTo("/merchants");
}
private void Cancel() => NavigationManager.NavigateToMerchantList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ private async Task SaveAllChanges() {
await this.WaitOnUIRefresh();

// Navigate to contracts list with success
NavigationManager.NavigateTo("/merchants");
NavigationManager.NavigateToMerchantList();
}
else {
this.errorMessage = "Failed to update merchant";
Expand Down Expand Up @@ -420,7 +420,5 @@ private async Task SwapDeviceConfirm(string originalDevice) {
StateHasChanged();
}

private void BackToList() {
NavigationManager.NavigateTo("/merchants");
}
private void BackToList() => NavigationManager.NavigateToMerchantList();
}
Original file line number Diff line number Diff line change
Expand Up @@ -159,24 +159,12 @@ private void LastPage()
}
}

private void ViewMerchant(Guid merchantId)
{
NavigationManager.NavigateTo($"/merchants/{merchantId}");
}
private void ViewMerchant(Guid merchantId) => NavigationManager.NavigateToMerchant(merchantId);

private void EditMerchant(Guid merchantId)
{
NavigationManager.NavigateTo($"/merchants/{merchantId}/edit");
}
private void EditMerchant(Guid merchantId) => NavigationManager.NavigateToEditMerchant(merchantId);

private void MakeDeposit(Guid merchantId)
{
NavigationManager.NavigateTo($"/merchants/{merchantId}/deposit");
}
private void MakeDeposit(Guid merchantId) => this.NavigationManager.NavigateToMakeMerchantDeposit(merchantId);

private void NavigateToNewMerchant()
{
NavigationManager.NavigateTo("/merchants/new");
}
private void NavigateToNewMerchant() => NavigationManager.NavigateToNewMerchant();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using EstateManagementUI.BlazorServer.Permissions;
using EstateManagementUI.BusinessLogic.Requests;
using System.ComponentModel.DataAnnotations;
using EstateManagementUI.BlazorServer.Common;
using EstateManagementUI.BlazorServer.Models;
using SimpleResults;

Expand Down Expand Up @@ -46,7 +47,7 @@ private async Task HandleSubmit() {
await this.WaitOnUIRefresh();

// Navigate to contracts list with success
NavigationManager.NavigateTo("/merchants");
NavigationManager.NavigateToMerchantList();
}
else {
this.errorMessage = "Failed to create merchant";
Expand All @@ -55,9 +56,6 @@ private async Task HandleSubmit() {
isSaving = false;
}

private void Cancel()
{
NavigationManager.NavigateTo("/merchants");
}
private void Cancel() => NavigationManager.NavigateToMerchantList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,6 @@ private string GetTabClass(string tab)
: baseClass + "border-transparent text-gray-600 hover:text-gray-800 hover:border-gray-300";
}

private void BackToList()
{
NavigationManager.NavigateTo("/merchants");
}
private void BackToList() => NavigationManager.NavigateToMerchantList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Shared.Results;
using SimpleResults;
using System.ComponentModel.DataAnnotations;
using EstateManagementUI.BlazorServer.Common;

namespace EstateManagementUI.BlazorServer.Components.Pages.Operators
{
Expand Down Expand Up @@ -85,7 +86,7 @@ private async Task HandleSubmit()
// Small delay so user sees confirmation (adjust duration as needed)
await this.WaitOnUIRefresh();

NavigationManager.NavigateTo("/operators");
NavigationManager.NavigateToOperatorList();
}
else
{
Expand All @@ -95,9 +96,6 @@ private async Task HandleSubmit()
isSaving = false;
}

private void BackToList()
{
NavigationManager.NavigateTo("/operators");
}
private void BackToList() => NavigationManager.NavigateToOperatorList();
}
}
Loading
Loading