Skip to content

Commit 0425f2a

Browse files
author
CIS Guru
committed
Phase 2.5 Email & SMS Integration
1 parent df883a0 commit 0425f2a

153 files changed

Lines changed: 74597 additions & 175 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Aquiis.SimpleStart/Features/Administration/Application/Pages/ManageDatabase.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
<div class="container-fluid">
2222
<div class="row mb-4">
2323
<div class="col">
24-
<h2><i class="bi bi-database-fill-gear"></i> Database Backup & Recovery</h2>
24+
<h1>
25+
<i class="bi bi-database-fill-gear"></i> Database Backup & Recovery</h1>
2526
<p class="text-muted">Manage database backups and recover from corruption</p>
2627
</div>
2728
<div class="col-auto">

Aquiis.SimpleStart/Features/Administration/Dashboard.razor

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@
9898
<button class="btn btn-info" @onclick="GoToDatabaseSettings">Manage Database</button>
9999
<button class="btn btn-success" @onclick="GoToCalendarSettings">Calendar Settings</button>
100100
<button class="btn btn-warning" @onclick="GoToUserManagement">User Management</button>
101+
<button class="btn btn-warning" @onclick="GoToEmailSettings">Email Notification Settings</button>
102+
<button class="btn btn-warning" @onclick="GoToSMSSettings">SMS Notification Settings</button>
101103
</div>
102104
</ChildContent>
103105
<NotAuthorized>
@@ -144,6 +146,18 @@
144146

145147
}
146148

149+
private void GoToEmailSettings()
150+
{
151+
// Logic to navigate to the email notification settings page
152+
NavigationManager.NavigateTo("/administration/settings/email");
153+
}
154+
155+
private void GoToSMSSettings()
156+
{
157+
// Logic to navigate to the SMS notification settings page
158+
NavigationManager.NavigateTo("/administration/settings/sms");
159+
}
160+
147161
private void GoToLateFeeSettings()
148162
{
149163
// Logic to view the daily system status report

Aquiis.SimpleStart/Features/Administration/Settings/Pages/CalendarSettings.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
<div class="d-flex justify-content-between align-items-center mb-4">
2121
<div>
22-
<h1><i class="bi bi-calendar-check"></i> Calendar Settings</h1>
22+
<h1><i class="bi bi-calendar-check-fill"></i> Calendar Settings</h1>
2323
@if (!string.IsNullOrEmpty(organizationName))
2424
{
2525
<p class="text-muted mb-1">

Aquiis.SimpleStart/Features/Administration/Settings/Pages/EmailSettings.razor

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@page "/settings/email"
1+
@page "/administration/settings/email"
22
@using Aquiis.SimpleStart.Application.Services
33
@using Aquiis.SimpleStart.Infrastructure.Services
44
@using SocketIOClient.Messages
@@ -8,20 +8,26 @@
88
@inject ToastService ToastService
99
@inject IJSRuntime JSRuntime
1010

11+
@inject NavigationManager Navigation
12+
1113
@inject UserContextService _userContext
1214

15+
@rendermode InteractiveServer
16+
1317
<PageTitle>Email Settings - Aquiis</PageTitle>
1418

15-
<div class="container-fluid py-4">
16-
<div class="row">
17-
<div class="col-12">
18-
<h2>
19-
<i class="bi bi-envelope-gear"></i> Email Configuration
20-
</h2>
19+
<div class="d-flex justify-content-between align-items-center mb-4">
20+
<div>
21+
<h1>
22+
<i class="bi bi-inbox-fill"></i> Email Configuration
23+
</h1>
2124
<p class="text-muted">
2225
Configure SendGrid integration for automated email notifications
2326
</p>
2427
</div>
28+
<button class="btn btn-secondary" @onclick="BackToDashboard">
29+
<i class="bi bi-arrow-left"></i> Back to Dashboard
30+
</button>
2531
</div>
2632

2733
@if (settings == null)
@@ -230,7 +236,6 @@
230236
</div>
231237
</div>
232238
}
233-
</div>
234239

235240
@* Configuration Modal *@
236241
@if (showConfigModal)
@@ -416,6 +421,11 @@
416421
};
417422
}
418423

424+
private void BackToDashboard()
425+
{
426+
Navigation.NavigateTo("/administration/dashboard");
427+
}
428+
419429
public class ConfigurationModel
420430
{
421431
[Required(ErrorMessage = "SendGrid API key is required")]

Aquiis.SimpleStart/Features/Administration/Settings/Pages/LateFeeSettings.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
<div class="d-flex justify-content-between align-items-center mb-4">
2222
<div>
23-
<h1><i class="bi bi-gear"></i> Late Fee Settings</h1>
23+
<h1><i class="bi bi-gear-fill"></i> Late Fee Settings</h1>
2424
@if (!string.IsNullOrEmpty(organizationName))
2525
{
2626
<p class="text-muted mb-0">

Aquiis.SimpleStart/Features/Administration/Settings/Pages/OrganizationSettings.razor

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<PageTitle>Organization Settings</PageTitle>
2121

2222
<div class="container-fluid">
23-
<div class="row mb-4">
23+
@* <div class="row mb-4">
2424
<div class="col-12">
2525
<nav aria-label="breadcrumb">
2626
<ol class="breadcrumb">
@@ -30,13 +30,13 @@
3030
</ol>
3131
</nav>
3232
</div>
33-
</div>
33+
</div> *@
3434

3535
<div class="row mb-4">
3636
<div class="col-12">
3737
<div class="d-flex justify-content-between align-items-center">
3838
<div>
39-
<h2><i class="bi bi-building me-2"></i>Organization Settings</h2>
39+
<h1><i class="bi bi-building me-2"></i>Organization Settings</h1>
4040
@if (!string.IsNullOrEmpty(organizationName))
4141
{
4242
<p class="text-muted mb-0">
@@ -54,6 +54,9 @@
5454
<i class="bi bi-building me-2"></i>Manage Organizations
5555
</a>
5656
}
57+
<button class="btn btn-secondary" @onclick="BackToDashboard">
58+
<i class="bi bi-arrow-left"></i> Back to Dashboard
59+
</button>
5760
</div>
5861
</div>
5962
</div>
@@ -498,9 +501,13 @@
498501
}
499502
}
500503

504+
private void BackToDashboard(){
505+
Navigation.NavigateTo("/administration/dashboard");
506+
}
507+
501508
private void Cancel()
502509
{
503-
Navigation.NavigateTo("/administration");
510+
Navigation.NavigateTo("/administration/dashboard");
504511
}
505512

506513
private string GetRoleBadgeClass()

Aquiis.SimpleStart/Features/Administration/Settings/Pages/SMSSettings.razor

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@page "/settings/sms"
1+
@page "/administration/settings/sms"
22
@using Aquiis.SimpleStart.Application.Services
33
@using Aquiis.SimpleStart.Infrastructure.Services
44
@using SocketIOClient.Messages
@@ -11,17 +11,23 @@
1111

1212
@inject UserContextService _userContext
1313

14+
@inject NavigationManager Navigation
15+
16+
@rendermode InteractiveServer
17+
1418
<PageTitle>SMS Settings - Aquiis</PageTitle>
15-
<div class="container-fluid py-4">
16-
<div class="row">
17-
<div class="col-12">
18-
<h2>
19-
<i class="bi bi-phone-vibrate"></i> SMS Configuration
20-
</h2>
19+
<div class="d-flex justify-content-between align-items-center mb-4">
20+
<div>
21+
<h1>
22+
<i class="bi bi-phone-vibrate-fill"></i> SMS Configuration
23+
</h1>
2124
<p class="text-muted">
2225
Configure Twilio integration for automated SMS notifications
2326
</p>
2427
</div>
28+
<button class="btn btn-secondary" @onclick="BackToDashboard">
29+
<i class="bi bi-arrow-left"></i> Back to Dashboard
30+
</button>
2531
</div>
2632

2733
@if (settings == null)
@@ -194,7 +200,6 @@
194200
</div>
195201
</div>
196202
}
197-
</div>
198203

199204
@* Configuration Modal *@
200205
@if (showConfigModal)
@@ -380,6 +385,11 @@
380385
};
381386
}
382387

388+
private void BackToDashboard()
389+
{
390+
Navigation.NavigateTo("/administration/dashboard");
391+
}
392+
383393
public class ConfigurationModel
384394
{
385395
[Required(ErrorMessage = "Twilio Account SID is required")]

Aquiis.SimpleStart/Infrastructure/Data/ApplicationDbContext.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,39 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
587587
.OnDelete(DeleteBehavior.Cascade);
588588
});
589589

590+
// Configure OrganizationEmailSettings entity
591+
modelBuilder.Entity<OrganizationEmailSettings>(entity =>
592+
{
593+
entity.HasKey(e => e.Id);
594+
595+
entity.HasIndex(e => e.OrganizationId).IsUnique();
596+
597+
// Organization relationship - one settings record per organization
598+
entity.HasOne(es => es.Organization)
599+
.WithMany()
600+
.HasForeignKey(es => es.OrganizationId)
601+
.OnDelete(DeleteBehavior.Cascade);
602+
603+
});
604+
605+
// Configure OrganizationSMSSettings entity
606+
modelBuilder.Entity<OrganizationSMSSettings>(entity =>
607+
{
608+
entity.HasKey(e => e.Id);
609+
610+
entity.HasIndex(e => e.OrganizationId).IsUnique();
611+
612+
// Organization relationship - one settings record per organization
613+
entity.HasOne(ss => ss.Organization)
614+
.WithMany()
615+
.HasForeignKey(ss => ss.OrganizationId)
616+
.OnDelete(DeleteBehavior.Cascade);
617+
618+
// Precision for financial fields
619+
entity.Property(e => e.AccountBalance).HasPrecision(18, 2);
620+
entity.Property(e => e.CostPerSMS).HasPrecision(18, 4);
621+
});
622+
590623
// Seed System Checklist Templates
591624
SeedChecklistTemplates(modelBuilder);
592625
}

0 commit comments

Comments
 (0)