feat(push): add service-owned firebase channels and delivery

Add push contracts, provider delivery and channel diagnostics. Link email channels to services and document migration and validation.

Ref: IT-1074
This commit is contained in:
2026-10-24 12:31:35 +03:00
parent b30dba93e8
commit 1631786ce2
105 changed files with 3838 additions and 147 deletions
@@ -0,0 +1,40 @@
@using HrynCo.NotificationService.DAL.Abstract.PushChannels
@model IReadOnlyList<PushChannel>
@{ ViewData["Title"] = "Push Channels"; }
<div class="page-header">
<h2><i class="bi bi-phone"></i> Push Channels</h2>
<a href="/admin/push-channels/create" class="btn btn-primary btn-sm">Create New Channel</a>
</div>
@if (Model.Count == 0)
{
<div class="card shadow-sm table-card">
<div class="empty-state">
<i class="bi bi-phone"></i>
<p class="mt-2 mb-0">No push channels found.</p>
<a href="/admin/push-channels/create" class="btn btn-primary btn-sm mt-3">Create First Channel</a>
</div>
</div>
}
else
{
<div class="card shadow-sm table-card">
<div class="table-responsive">
<table class="table table-hover admin-data-table table-sm mb-0">
<thead><tr><th scope="col">Service</th><th scope="col">Firebase Project ID</th><th scope="col">Status</th><th scope="col">Actions</th></tr></thead>
<tbody>
@foreach (var channel in Model)
{
<tr>
<td>@channel.ServiceName</td>
<td>@channel.FirebaseProjectId</td>
<td><span class="badge @(channel.IsActive ? "bg-success" : "bg-secondary")">@(channel.IsActive ? "Active" : "Inactive")</span></td>
<td><a href="/admin/push-channels/@channel.Id" class="btn btn-sm btn-link" aria-label="Edit push channel for @channel.ServiceName">Edit</a></td>
</tr>
}
</tbody>
</table>
</div>
</div>
}