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
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@inherits LayoutComponentBase

<!DOCTYPE html>
<html lang="en" class="h-full">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="/" />
<link rel="stylesheet" href="css/app.css" />
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body class="h-full bg-gray-50">
@Body

<!-- Error UI -->
<div id="blazor-error-ui" class="fixed bottom-0 right-0 left-0 bg-red-600 text-white p-4 shadow-lg" data-nosnippet style="display: none;">
<div class="container mx-auto flex items-center justify-between">
<div class="flex items-center space-x-2">
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z" clip-rule="evenodd"></path>
</svg>
<span>An unhandled error has occurred.</span>
</div>
<div class="flex items-center space-x-4">
<a href="." class="underline hover:no-underline">Reload</a>
<button class="dismiss text-white hover:text-gray-200">✕</button>
</div>
</div>
</div>
</body>
</html>
143 changes: 143 additions & 0 deletions EstateManagementUI.BlazorServer/Components/Pages/EntryScreen.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
@page "/entry"
@using Microsoft.AspNetCore.Components.Authorization
@layout Components.Layout.EntryLayout

<PageTitle>Welcome - Estate Management</PageTitle>

<div class="min-h-screen bg-gray-50 flex flex-col">
<!-- Main Content -->
<div class="flex-1 flex items-center justify-center px-4 py-12">
<div class="max-w-7xl w-full">
<!-- Three Column Layout -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<!-- Estate Management Card -->
<div class="bg-white rounded-lg shadow-lg p-8 flex flex-col">
<h2 class="text-2xl font-bold text-gray-900 mb-6">Estate Management</h2>

<!-- Icon -->
<div class="flex justify-center mb-6">
<svg class="w-24 h-24 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"></path>
</svg>
</div>

<!-- Features -->
<div class="space-y-3 mb-8 flex-1">
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Manage estate details</span>
</div>
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Manage estate users</span>
</div>
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Operator Management</span>
</div>
</div>

<!-- Button -->
<a href="/estate-info" class="bg-blue-600 hover:bg-blue-700 text-white font-medium px-6 py-3 rounded transition-colors duration-150 text-center text-lg shadow-sm">
View More
</a>
</div>

<!-- Merchant Management Card -->
<div class="bg-white rounded-lg shadow-lg p-8 flex flex-col">
<h2 class="text-2xl font-bold text-gray-900 mb-6">Merchant Management</h2>

<!-- Icon -->
<div class="flex justify-center mb-6">
<svg class="w-24 h-24 text-green-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z"></path>
</svg>
</div>

<!-- Features -->
<div class="space-y-3 mb-8 flex-1">
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Manage Merchant Details</span>
</div>
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Balance Management</span>
</div>
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Fee Management</span>
</div>
</div>

<!-- Button -->
<a href="/merchant-info" class="bg-green-600 hover:bg-green-700 text-white font-medium px-6 py-3 rounded transition-colors duration-150 text-center text-lg">
View More
</a>
</div>

<!-- File Processing Card -->
<div class="bg-white rounded-lg shadow-lg p-8 flex flex-col">
<h2 class="text-2xl font-bold text-gray-900 mb-6">File Processing</h2>

<!-- Icon -->
<div class="flex justify-center mb-6">
<svg class="w-24 h-24 text-yellow-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>
</svg>
</div>

<!-- Features -->
<div class="space-y-3 mb-8 flex-1">
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Transaction Files</span>
</div>
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Settlement Processing</span>
</div>
<div class="flex items-start">
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
</svg>
<span class="text-gray-700">Bulk Processing</span>
</div>
</div>

<!-- Button -->
<a href="/file-info" class="bg-teal-600 hover:bg-teal-700 text-white font-medium px-6 py-3 rounded transition-colors duration-150 text-center text-lg">
View More
</a>
</div>
</div>

<!-- Sign In Section -->
<div class="mt-12 text-center">
<p class="text-gray-600 mb-4">Sign in to access all features</p>
<a href="/login" class="inline-flex items-center px-8 py-3 bg-blue-600 hover:bg-blue-700 text-white font-semibold rounded-lg shadow-md transition-colors duration-150">
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"></path>
</svg>
Sign In
</a>
</div>
</div>
</div>
</div>
60 changes: 60 additions & 0 deletions EstateManagementUI.BlazorServer/Components/Pages/EstateInfo.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
@page "/estate-info"
@layout Components.Layout.EntryLayout

<PageTitle>Estate Management - Estate Management</PageTitle>

<div class="min-h-screen bg-gray-50 flex flex-col">
<div class="flex-1 flex items-center justify-center px-4 py-12">
<div class="max-w-4xl w-full">
<div class="bg-white rounded-lg shadow-lg p-8">
<!-- Header -->
<div class="text-center mb-8">
<div class="flex justify-center mb-6">
<svg class="w-24 h-24 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"></path>
</svg>
</div>
<h1 class="text-3xl font-bold text-gray-900 mb-4">Estate Management</h1>
<p class="text-lg text-gray-600">Comprehensive estate management and configuration</p>
</div>

<!-- Features Section -->
<div class="space-y-6 mb-8">
<div class="border-l-4 border-blue-500 pl-4">
<h3 class="text-xl font-semibold text-gray-900 mb-2">Manage Estate Details</h3>
<p class="text-gray-600">Configure and update estate information, settings, and preferences. Control all aspects of your estate configuration from a centralized dashboard.</p>
</div>

<div class="border-l-4 border-blue-500 pl-4">
<h3 class="text-xl font-semibold text-gray-900 mb-2">Manage Estate Users</h3>
<p class="text-gray-600">Add, remove, and manage user access to your estate. Assign roles and permissions to control what each user can view and modify.</p>
</div>

<div class="border-l-4 border-blue-500 pl-4">
<h3 class="text-xl font-semibold text-gray-900 mb-2">Operator Management</h3>
<p class="text-gray-600">Configure and manage operators within your estate. Set up operator-specific settings and monitor their activities.</p>
</div>
</div>

<!-- CTA Section -->
<div class="bg-gray-50 rounded-lg p-6 text-center">
<p class="text-gray-700 mb-4">Sign in to access full estate management features</p>
<div class="flex justify-center space-x-4">
<a href="/login" class="inline-flex items-center px-6 py-3 bg-blue-600 hover:bg-blue-700 text-white font-semibold rounded-lg shadow-md transition-colors duration-150">
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"></path>
</svg>
Sign In
</a>
<a href="/entry" class="inline-flex items-center px-6 py-3 bg-gray-200 hover:bg-gray-300 text-gray-700 font-semibold rounded-lg transition-colors duration-150">
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
</svg>
Back
</a>
</div>
</div>
</div>
</div>
</div>
</div>
60 changes: 60 additions & 0 deletions EstateManagementUI.BlazorServer/Components/Pages/FileInfo.razor
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
@page "/file-info"
@layout Components.Layout.EntryLayout

<PageTitle>File Processing - Estate Management</PageTitle>

<div class="min-h-screen bg-gray-50 flex flex-col">
<div class="flex-1 flex items-center justify-center px-4 py-12">
<div class="max-w-4xl w-full">
<div class="bg-white rounded-lg shadow-lg p-8">
<!-- Header -->
<div class="text-center mb-8">
<div class="flex justify-center mb-6">
<svg class="w-24 h-24 text-yellow-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>
</svg>
</div>
<h1 class="text-3xl font-bold text-gray-900 mb-4">File Processing</h1>
<p class="text-lg text-gray-600">Automated file processing and settlement management</p>
</div>

<!-- Features Section -->
<div class="space-y-6 mb-8">
<div class="border-l-4 border-yellow-500 pl-4">
<h3 class="text-xl font-semibold text-gray-900 mb-2">Transaction Files</h3>
<p class="text-gray-600">Process and manage transaction data files. Upload, validate, and import transaction records with automated error handling and reporting.</p>
</div>

<div class="border-l-4 border-yellow-500 pl-4">
<h3 class="text-xl font-semibold text-gray-900 mb-2">Settlement Processing</h3>
<p class="text-gray-600">Automate settlement file generation and processing. Generate settlement reports and manage the complete settlement workflow.</p>
</div>

<div class="border-l-4 border-yellow-500 pl-4">
<h3 class="text-xl font-semibold text-gray-900 mb-2">Bulk Processing</h3>
<p class="text-gray-600">Handle large-scale file operations efficiently. Process multiple files simultaneously with batch processing capabilities.</p>
</div>
</div>

<!-- CTA Section -->
<div class="bg-gray-50 rounded-lg p-6 text-center">
<p class="text-gray-700 mb-4">Sign in to access full file processing features</p>
<div class="flex justify-center space-x-4">
<a href="/login" class="inline-flex items-center px-6 py-3 bg-teal-600 hover:bg-teal-700 text-white font-semibold rounded-lg shadow-md transition-colors duration-150">
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"></path>
</svg>
Sign In
</a>
<a href="/entry" class="inline-flex items-center px-6 py-3 bg-gray-200 hover:bg-gray-300 text-gray-700 font-semibold rounded-lg transition-colors duration-150">
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
</svg>
Back
</a>
</div>
</div>
</div>
</div>
</div>
</div>
13 changes: 13 additions & 0 deletions EstateManagementUI.BlazorServer/Components/Pages/Home.razor
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
@page "/"
@using Microsoft.AspNetCore.Components.Authorization
@inject IMediator Mediator
@inject AuthenticationStateProvider AuthenticationStateProvider
@inject NavigationManager NavigationManager

<PageTitle>Dashboard - Estate Management</PageTitle>

Expand Down Expand Up @@ -250,6 +253,16 @@
@code {
protected override async Task OnInitializedAsync()
{
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;

// Redirect unauthenticated users to entry screen
if (!user.Identity?.IsAuthenticated ?? true)
{
NavigationManager.NavigateTo("/entry", replace: true);
return;
}

await base.OnInitializedAsync();
}
}
Loading
Loading