Anatolii Grynchuk
61ccf9c777
feat: add test channel feature in admin UI
...
- POST /admin/channels/{id}/test — direct SMTP send via MailKit
- Test button shown only on existing channels (not create)
- Bootstrap modal with recipient email input and spinner
- Inline success/error result inside the modal
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:57:36 +03:00
Anatolii Grynchuk
936d41c2f1
feat: improved admin UI styles and layout
...
- Max-width 860px on editor card
- Two-column row for ServiceName/Key/Language fields
- Gradient card header, proper shadow, grey footer
- Footer buttons right-aligned
- Smaller uppercase table headers, better typography
- Overhauled admin.css with CSS variables and cleaner rules
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:51:58 +03:00
Anatolii Grynchuk
c90b07386d
feat: polished admin UI styles + email channels admin CRUD
...
- Extract inline styles to wwwroot/css/admin.css
- Bootstrap Icons for nav and buttons
- Styled page headers, table, empty state, readonly fields
- Email Channels admin: list, create, edit, delete
- GetAllEmailChannelsQuery + handler
- AdminChannelsController with full CRUD
- form id + form= attribute pattern for EditorLayout footer buttons
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:43:59 +03:00
Anatolii Grynchuk
855d0862f9
fix: save button not submitting — form id + form= attribute on submit button; migrator connection string in dev compose
...
- _EditorLayout renders FormActions section outside <form> in the DOM
- Added id='templateForm' to form, form='templateForm' to submit button (HTML5 form association)
- Added migrator env override in docker-compose.Development.yml so connection string is not read from \
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:35:01 +03:00
Anatolii Grynchuk
d23717d123
fix: move api port mapping to dev override, fix Web Dockerfile project name
...
- Base compose has no ports (env overrides define them)
- Dev override maps api to 5200:8080
- Web Dockerfile updated to reference .Web project name
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:27:51 +03:00
Anatolii Grynchuk
40b4071eb5
fix: add Microsoft.EntityFrameworkCore.Design to Web project for dotnet-ef migrations
...
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:20:23 +03:00
Anatolii Grynchuk
8a54b6de7a
feat: redirect root / to /admin/templates
...
Ref: IT-634
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:13:19 +03:00
Anatolii Grynchuk
7adce77063
fix: ensure Microsoft.Hosting.Lifetime logs at Information in Development
...
Allows 'Now listening on: http://...' URLs to appear in console output
Ref: IT-634
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:10:57 +03:00
Anatolii Grynchuk
238b798a28
fix: create wwwroot folder and fix dev connection string port
...
- wwwroot was missing, causing UseStaticFiles warning on startup
- appsettings.Development.json now overrides port to 5433 (Docker dev mapping)
Ref: IT-634
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:09:11 +03:00
Anatolii Grynchuk
2a0a5f737d
feat: add MVC Razor admin UI for email templates
...
- GetAllEmailTemplatesQuery + handler (new GetAll use case)
- IEmailTemplateRepository.GetAllAsync + EF implementation
- AdminTemplatesController: Index, Create, Edit, Save, Delete
- EmailTemplateEditViewModel with IsNew/PageTitle helpers
- Views/_ViewStart, _ViewImports, Shared/_Layout (Bootstrap 5)
- Shared/_EditorLayout (chained layout for all edit screens)
- Views/AdminTemplates/Index (table with edit/delete actions)
- Views/AdminTemplates/Edit (card form, readonly composite key on edit)
- Program.cs: AddControllersWithViews, UseStaticFiles, MapDefaultControllerRoute
Ref: IT-634
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 02:06:08 +03:00
Anatolii Grynchuk
cec8f42ece
refactor: move REST API controllers into Controllers/Api subfolder
...
- Prepares Controllers/ for both Api/ and Admin/ groupings
- Namespaces updated accordingly
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 01:58:14 +03:00
Anatolii Grynchuk
ab44ad117c
refactor: rename Api project to Web
...
- HrynCo.NotificationService.Api -> HrynCo.NotificationService.Web
- HrynCo.NotificationService.Api.IntegrationTests -> HrynCo.NotificationService.Web.IntegrationTests
- Updated slnx, docker-compose, project references, and namespaces
- Project serves both REST API and admin UI
Ref: IT-628
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-02 01:55:57 +03:00