Skip to content

Commit edaa42a

Browse files
Merge pull request #448 from TransactionProcessing/copilot/add-entry-screen-ui
Add entry screen with placeholder pages for unauthenticated users
2 parents 79fe178 + ce49264 commit edaa42a

7 files changed

Lines changed: 379 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
@inherits LayoutComponentBase
2+
3+
<!DOCTYPE html>
4+
<html lang="en" class="h-full">
5+
<head>
6+
<meta charset="utf-8" />
7+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
8+
<base href="/" />
9+
<link rel="stylesheet" href="css/app.css" />
10+
<link rel="icon" type="image/png" href="favicon.png" />
11+
</head>
12+
<body class="h-full bg-gray-50">
13+
@Body
14+
15+
<!-- Error UI -->
16+
<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;">
17+
<div class="container mx-auto flex items-center justify-between">
18+
<div class="flex items-center space-x-2">
19+
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 20 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>
21+
</svg>
22+
<span>An unhandled error has occurred.</span>
23+
</div>
24+
<div class="flex items-center space-x-4">
25+
<a href="." class="underline hover:no-underline">Reload</a>
26+
<button class="dismiss text-white hover:text-gray-200">✕</button>
27+
</div>
28+
</div>
29+
</div>
30+
</body>
31+
</html>
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
@page "/entry"
2+
@using Microsoft.AspNetCore.Components.Authorization
3+
@layout Components.Layout.EntryLayout
4+
5+
<PageTitle>Welcome - Estate Management</PageTitle>
6+
7+
<div class="min-h-screen bg-gray-50 flex flex-col">
8+
<!-- Main Content -->
9+
<div class="flex-1 flex items-center justify-center px-4 py-12">
10+
<div class="max-w-7xl w-full">
11+
<!-- Three Column Layout -->
12+
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
13+
<!-- Estate Management Card -->
14+
<div class="bg-white rounded-lg shadow-lg p-8 flex flex-col">
15+
<h2 class="text-2xl font-bold text-gray-900 mb-6">Estate Management</h2>
16+
17+
<!-- Icon -->
18+
<div class="flex justify-center mb-6">
19+
<svg class="w-24 h-24 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
20+
<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>
21+
</svg>
22+
</div>
23+
24+
<!-- Features -->
25+
<div class="space-y-3 mb-8 flex-1">
26+
<div class="flex items-start">
27+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
28+
<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>
29+
</svg>
30+
<span class="text-gray-700">Manage estate details</span>
31+
</div>
32+
<div class="flex items-start">
33+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
34+
<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>
35+
</svg>
36+
<span class="text-gray-700">Manage estate users</span>
37+
</div>
38+
<div class="flex items-start">
39+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
40+
<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>
41+
</svg>
42+
<span class="text-gray-700">Operator Management</span>
43+
</div>
44+
</div>
45+
46+
<!-- Button -->
47+
<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">
48+
View More
49+
</a>
50+
</div>
51+
52+
<!-- Merchant Management Card -->
53+
<div class="bg-white rounded-lg shadow-lg p-8 flex flex-col">
54+
<h2 class="text-2xl font-bold text-gray-900 mb-6">Merchant Management</h2>
55+
56+
<!-- Icon -->
57+
<div class="flex justify-center mb-6">
58+
<svg class="w-24 h-24 text-green-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
59+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z"></path>
60+
</svg>
61+
</div>
62+
63+
<!-- Features -->
64+
<div class="space-y-3 mb-8 flex-1">
65+
<div class="flex items-start">
66+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
67+
<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>
68+
</svg>
69+
<span class="text-gray-700">Manage Merchant Details</span>
70+
</div>
71+
<div class="flex items-start">
72+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
73+
<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>
74+
</svg>
75+
<span class="text-gray-700">Balance Management</span>
76+
</div>
77+
<div class="flex items-start">
78+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
79+
<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>
80+
</svg>
81+
<span class="text-gray-700">Fee Management</span>
82+
</div>
83+
</div>
84+
85+
<!-- Button -->
86+
<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">
87+
View More
88+
</a>
89+
</div>
90+
91+
<!-- File Processing Card -->
92+
<div class="bg-white rounded-lg shadow-lg p-8 flex flex-col">
93+
<h2 class="text-2xl font-bold text-gray-900 mb-6">File Processing</h2>
94+
95+
<!-- Icon -->
96+
<div class="flex justify-center mb-6">
97+
<svg class="w-24 h-24 text-yellow-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
98+
<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>
99+
</svg>
100+
</div>
101+
102+
<!-- Features -->
103+
<div class="space-y-3 mb-8 flex-1">
104+
<div class="flex items-start">
105+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
106+
<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>
107+
</svg>
108+
<span class="text-gray-700">Transaction Files</span>
109+
</div>
110+
<div class="flex items-start">
111+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
112+
<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>
113+
</svg>
114+
<span class="text-gray-700">Settlement Processing</span>
115+
</div>
116+
<div class="flex items-start">
117+
<svg class="w-5 h-5 text-green-500 mt-0.5 mr-3 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20">
118+
<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>
119+
</svg>
120+
<span class="text-gray-700">Bulk Processing</span>
121+
</div>
122+
</div>
123+
124+
<!-- Button -->
125+
<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">
126+
View More
127+
</a>
128+
</div>
129+
</div>
130+
131+
<!-- Sign In Section -->
132+
<div class="mt-12 text-center">
133+
<p class="text-gray-600 mb-4">Sign in to access all features</p>
134+
<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">
135+
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
136+
<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>
137+
</svg>
138+
Sign In
139+
</a>
140+
</div>
141+
</div>
142+
</div>
143+
</div>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
@page "/estate-info"
2+
@layout Components.Layout.EntryLayout
3+
4+
<PageTitle>Estate Management - Estate Management</PageTitle>
5+
6+
<div class="min-h-screen bg-gray-50 flex flex-col">
7+
<div class="flex-1 flex items-center justify-center px-4 py-12">
8+
<div class="max-w-4xl w-full">
9+
<div class="bg-white rounded-lg shadow-lg p-8">
10+
<!-- Header -->
11+
<div class="text-center mb-8">
12+
<div class="flex justify-center mb-6">
13+
<svg class="w-24 h-24 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
14+
<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>
15+
</svg>
16+
</div>
17+
<h1 class="text-3xl font-bold text-gray-900 mb-4">Estate Management</h1>
18+
<p class="text-lg text-gray-600">Comprehensive estate management and configuration</p>
19+
</div>
20+
21+
<!-- Features Section -->
22+
<div class="space-y-6 mb-8">
23+
<div class="border-l-4 border-blue-500 pl-4">
24+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Manage Estate Details</h3>
25+
<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>
26+
</div>
27+
28+
<div class="border-l-4 border-blue-500 pl-4">
29+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Manage Estate Users</h3>
30+
<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>
31+
</div>
32+
33+
<div class="border-l-4 border-blue-500 pl-4">
34+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Operator Management</h3>
35+
<p class="text-gray-600">Configure and manage operators within your estate. Set up operator-specific settings and monitor their activities.</p>
36+
</div>
37+
</div>
38+
39+
<!-- CTA Section -->
40+
<div class="bg-gray-50 rounded-lg p-6 text-center">
41+
<p class="text-gray-700 mb-4">Sign in to access full estate management features</p>
42+
<div class="flex justify-center space-x-4">
43+
<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">
44+
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
45+
<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>
46+
</svg>
47+
Sign In
48+
</a>
49+
<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">
50+
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
51+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
52+
</svg>
53+
Back
54+
</a>
55+
</div>
56+
</div>
57+
</div>
58+
</div>
59+
</div>
60+
</div>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
@page "/file-info"
2+
@layout Components.Layout.EntryLayout
3+
4+
<PageTitle>File Processing - Estate Management</PageTitle>
5+
6+
<div class="min-h-screen bg-gray-50 flex flex-col">
7+
<div class="flex-1 flex items-center justify-center px-4 py-12">
8+
<div class="max-w-4xl w-full">
9+
<div class="bg-white rounded-lg shadow-lg p-8">
10+
<!-- Header -->
11+
<div class="text-center mb-8">
12+
<div class="flex justify-center mb-6">
13+
<svg class="w-24 h-24 text-yellow-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
14+
<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>
15+
</svg>
16+
</div>
17+
<h1 class="text-3xl font-bold text-gray-900 mb-4">File Processing</h1>
18+
<p class="text-lg text-gray-600">Automated file processing and settlement management</p>
19+
</div>
20+
21+
<!-- Features Section -->
22+
<div class="space-y-6 mb-8">
23+
<div class="border-l-4 border-yellow-500 pl-4">
24+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Transaction Files</h3>
25+
<p class="text-gray-600">Process and manage transaction data files. Upload, validate, and import transaction records with automated error handling and reporting.</p>
26+
</div>
27+
28+
<div class="border-l-4 border-yellow-500 pl-4">
29+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Settlement Processing</h3>
30+
<p class="text-gray-600">Automate settlement file generation and processing. Generate settlement reports and manage the complete settlement workflow.</p>
31+
</div>
32+
33+
<div class="border-l-4 border-yellow-500 pl-4">
34+
<h3 class="text-xl font-semibold text-gray-900 mb-2">Bulk Processing</h3>
35+
<p class="text-gray-600">Handle large-scale file operations efficiently. Process multiple files simultaneously with batch processing capabilities.</p>
36+
</div>
37+
</div>
38+
39+
<!-- CTA Section -->
40+
<div class="bg-gray-50 rounded-lg p-6 text-center">
41+
<p class="text-gray-700 mb-4">Sign in to access full file processing features</p>
42+
<div class="flex justify-center space-x-4">
43+
<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">
44+
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
45+
<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>
46+
</svg>
47+
Sign In
48+
</a>
49+
<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">
50+
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
51+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
52+
</svg>
53+
Back
54+
</a>
55+
</div>
56+
</div>
57+
</div>
58+
</div>
59+
</div>
60+
</div>

EstateManagementUI.BlazorServer/Components/Pages/Home.razor

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@page "/"
2+
@using Microsoft.AspNetCore.Components.Authorization
23
@inject IMediator Mediator
4+
@inject AuthenticationStateProvider AuthenticationStateProvider
5+
@inject NavigationManager NavigationManager
36

47
<PageTitle>Dashboard - Estate Management</PageTitle>
58

@@ -250,6 +253,16 @@
250253
@code {
251254
protected override async Task OnInitializedAsync()
252255
{
256+
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
257+
var user = authState.User;
258+
259+
// Redirect unauthenticated users to entry screen
260+
if (!user.Identity?.IsAuthenticated ?? true)
261+
{
262+
NavigationManager.NavigateTo("/entry", replace: true);
263+
return;
264+
}
265+
253266
await base.OnInitializedAsync();
254267
}
255268
}

0 commit comments

Comments
 (0)