- Add API prefix route convention and custom OpenAPI transformer in Program.cs
- Change "Active" column header to "Sent" in mailing grids
- Improve schedule date sorting logic in ScheduledMailings.tsx
- Introduced `ValidateUnsubscribeLink` endpoint in `MailingsController`.
- Refactored `UnsubscribeListsController` to inherit from `BaseController`.
- Added `Url` property to `UnsubscribeList` and updated related mappings.
- Enhanced `IMailingService` and `MailingService` for unsubscribe link handling.
- Implemented validation logic in `MailingEdit.tsx` with confirmation dialogs.
- Updated `TemplateEdit.tsx` for inserting unsubscribe links in templates.
- Improved sorting functionality in `CompletedMailings` and `ScheduledMailings`.
- Added `UnsubscribeValidationResult` interface for validation results.
- Added `MailingEmailMap` back to `EntityMapperConfiguration.cs`.
- Improved error handling in `MailingRepository.cs` by adding a check for `MailingTemplate` mapping.
- Updated template retrieval logic to fetch by ID when `TemplateId` is greater than 0.
- Modified `GetAllAsync` to include an additional parameter for mapping `MailingTemplate`.
- Enhanced `MailingEdit.tsx` to pre-fill form fields with existing template data for existing mailings.
- Updated template selection logic to ensure form data reflects the current state of the selected template.
This commit introduces comprehensive functionality for managing unsubscribe lists within the application. Key changes include:
- Creation of new DTOs, services, repositories, and controllers for unsubscribe list operations.
- Updates to `MailingsController.cs` and `TestEmailListsController.cs` to include necessary using directives.
- Registration of `IUnsubscribeListService` and `IUnsubscribeListRepository` in `Program.cs`.
- Implementation of the `UnsubscribeListsController` with API endpoints for CRUD operations.
- Introduction of the `UnsubscribeList` entity and its mapping to database columns.
- Modifications to existing classes, including `Mailing` and `Target`, to reference unsubscribe lists.
- Frontend updates to TypeScript interfaces and components for displaying and selecting unsubscribe lists.
These enhancements provide a more robust email management system.
This commit removes the `AdminAuth` section from the
`appsettings.Development.json`, `appsettings.Uat.json`,
and `appsettings.json` files, eliminating the URL for
the admin authentication service. Additionally, the
`AllowedHosts` setting in `appsettings.json` has been
updated to restrict allowed hosts to specific domains
(`*.surge365.com;*.travmanity.com`). The `ConnectionStrings`
section has also been removed from the development and UAT
configuration files.
Removed custom configuration source and AdminContext creation.
Added default service registration and SendGrid HTTP client.
Updated error logging to use SurgeLoggerProvider for improved
error handling during application startup.
This commit removes the `AuthenticationController.cs` and related DTOs, indicating a shift in authentication handling. The `BaseController.cs` has been updated to remove the authorization attribute, affecting access control. Multiple controllers have been restructured to reference `Surge365.Core.Controllers`.
Significant changes in `Program.cs` enhance security and service management with new middleware and JWT configurations. The project file now includes references to `Surge365.Core`, and the `IAuthService` interface has been updated accordingly.
React components have been modified to support the new authentication flow, including token refresh handling. The `customFetch.ts` utility has been improved for better session management. Mapping classes have been introduced or updated for improved entity mapping.
Overall, these changes enhance the application's architecture, security, and data handling processes.
- Added `@bounced_email_key` output parameter in `BouncedEmailRepository.cs`.
- Updated dialog title in `BouncedEmailEdit.tsx` from "Add Bounced Email" to "Add Blocked Email".
- Refactored validation schema in `MailingEdit.tsx`, removing old code and adding new validation rules.
- Introduced `nameIsAvailable` and `getNextAvailableName` functions in `MailingEdit.tsx`.
- Integrated `setupData` context in `ActiveMailings.tsx`, `CancelledMailings.tsx`, `NewMailings.tsx`, and `ScheduledMailings.tsx` to refresh setup data during mailing operations.
Updated authentication handling in controllers, added JWT support, and improved error logging. Introduced centralized API calls with customFetch for better token management. Added Grafana's Faro SDK for monitoring and tracing. Refactored project files for improved structure and maintainability.
Updated the application to use Azure Key Vault for managing secrets, including the addition of a new `SurgeKeyVaultSecretManager` class. Modified configuration files to include `KeyVaultName` and removed sensitive `Jwt` sections for enhanced security.
Refactored `IAuthService` and `IUserRepository` to utilize DTOs instead of the `User` entity. Removed the `UserMap` class and updated the `UserRepository` to focus on DTOs for user management.
The `AuthService` class now communicates with an external API for authentication, and new classes for API requests and responses have been added. Updated project dependencies to support Azure Key Vault integration.
- Updated `TargetSample` class to include `TotalRows` property.
- Set `TotalRows` in `TargetRepository` based on database query.
- Added state management for `targetSample` and loading in `MailingEdit.tsx`.
- Modified rendering logic in `MailingEdit.tsx` to display total rows.
- Updated `TargetSampleModal` to accept `targetSample` as a prop.
- Created new `targetSample.ts` file defining the `TargetSample` interface.
- Introduced new endpoints in `MailingsController.cs` for fetching emails and templates by mailing ID.
- Updated `MailingUpdateDto` to include `MailingTemplateUpdateDto`.
- Extended `IMailingRepository` and `IMailingService` with methods for emails, templates, and targets.
- Modified `Mailing` class to include a `MailingTemplate` property; removed `SessionActivityId`.
- Implemented new methods in `MailingRepository` with adjusted SQL queries.
- Created new entity classes: `MailingEmail`, `MailingTarget`, and `MailingTemplate`.
- Added mapping configurations for new entities in Dapper maps.
- Updated `MailingEdit.tsx` and `MailingView.tsx` components for new structures and improved UI handling.
- Adjusted `Mailing` interface and created TypeScript interfaces for new entities.
- Added HTTP client configuration for SendGrid in Program.cs.
- Cleaned up appsettings files for development and production environments.
- Modified MailingService to use IHttpClientFactory for SendGrid.
- Enhanced NewMailings component with cancel functionality and confirmation dialog.
- Updated project dependencies in .csproj and created package-lock.json.
Updated Autocomplete options to use filtered lists of active targets, templates, and email domains. This change ensures that only active items are displayed in the dropdowns for selection.
Updated the `dateStr` variable in the `RecentMailingStatsChart` function to use `dayjs.utc(currentDate).format('YYYY-MM-DD')` instead of the previous method. This change ensures consistent date formatting across different time zones when aggregating statistics.
- Import additional Dayjs plugins for UTC and timezone support.
- Update start and end dates to reflect the start and end of the day.
- Fetch mailing statistics using formatted date strings in the correct timezone.
- Modify statistics aggregation to include all dates in the range.
- Change aggregation method from `reduce` to `forEach`.
- Update x-axis value formatter to use UTC date formatting.
- Updated `AuthenticationController` to handle refresh tokens and store them in the database.
- Modified `IAuthService` and `IUserRepository` to support new authentication logic using refresh tokens.
- Removed `GenerateTokens` method and added `SaveRefreshToken` method.
- Adjusted database mappings in `UserMap`.
- Enhanced `AuthService` to implement new authentication flow.
- Removed `LayoutAdminLTE.tsx`, simplifying the layout structure.
- Improved theme initialization in `App.tsx` for persistent settings.
- Cleaned up component files (`Home`, `Login`, `Targets`, `Templates`) by removing boilerplate code.
- Added `eslint.config.js` for ESLint configuration.
- Introduced `ThemeWrapper.tsx` for managing theme settings (implementation commented out).
- Added new methods for creating mailings and testing targets.
- Updated configuration files for JWT settings and connection strings.
- Introduced new DTOs for target column updates and test targets.
- Enhanced MailingStatistic with a new SentDate property.
- Created new components for handling cancelled mailings and target samples.
- Refactored authentication in Login.tsx to use fetch API.
- Updated various services and repositories to support new functionalities.
- Updated `MailingsController` with new endpoints for name availability and next available name.
- Modified existing methods to accept optional date parameters.
- Introduced `TestMailingDto` for testing mailings with email addresses.
- Updated `IMailingRepository` and `IMailingService` interfaces for new methods.
- Enhanced `MailingRepository` and `MailingService` to support new logic for testing and sending emails.
- Updated `appsettings.json` with new SendGrid settings and default unsubscribe URL.
- Modified `MailingEdit` component to fetch next available name and handle test mailings.
- Added search filters for start and end dates in `CompletedMailings` component.
- Included `react-toastify` for notifications in `package.json` and `package-lock.json`.
- Updated `App` component to include `ToastContainer` for displaying notifications.
Updated `MailingsController` to include endpoints for retrieving mailing statistics by status and ID. Modified `IMailingRepository` and `IMailingService` to support new methods for fetching statistics and canceling mailings. Introduced `MailingStatistic` class and corresponding Dapper mappings.
In the React frontend, added `ActiveMailings` and `CompletedMailings` components to display statistics, along with a `ConfirmationDialog` for canceling mailings. Updated authentication management in `AuthCheck` and `AuthContext`. Created `mailingStatistic.ts` for TypeScript interface definition.
- Updated `UpdateMailing` to convert dates from UTC to local time.
- Renamed `GetTargetSample` to `TestTargetAsync` in `TargetsController`.
- Added `ConnectionStringTemplate` to `appsettings.Development.json`.
- Introduced `TestTargetSql` in `appsettings.json` for SQL queries.
- Created a new `TargetSample` class for target sample data structure.
- Updated `ITargetRepository` and `ITargetService` interfaces for new method signatures.
- Implemented `TestTargetAsync` in `TargetRepository` for sample data retrieval.
- Enhanced `MailingEdit.tsx` with new imports and validation for date fields.
- Added `MailingView` component for displaying mailing details.
- Introduced `ScheduleMailings` component for managing scheduled mailings.
- Updated `TargetSampleViewer` to accommodate new data structure.
- Modified routing in `App.tsx` to include scheduled mailings.
- Adjusted `NewMailings` component to manage mailing updates and removals.
- Implemented `GetTargetSample` in `TargetsController` for fetching target sample data.
- Updated `ITargetRepository` and `ITargetService` with `GetSampleData` method.
- Created `TargetSample` class to structure sample data.
- Added `GetSampleData` method in `TargetRepository` with hardcoded sample data.
- Enhanced `MailingEdit.tsx` to manage target sample visibility and validation.
- Introduced `TargetSampleViewer` and `TemplateViewer` components for displaying data in dialogs.
- Made minor adjustments in `Servers.tsx` for better row handling.
- Implemented Logout and RefreshToken methods in AuthenticationController.
- Added IMailingService and IMailingRepository to Program.cs.
- Updated project structure in Surge365.MassEmailReact.API.csproj.
- Modified API host address and endpoints in Server.http.
- Introduced AuthAppCode in appsettings.json for context distinction.
- Changed GenerateTokens method to async in IAuthService.
- Initialized string properties in User.cs to avoid null values.
- Added new Mailing mapping in DapperConfiguration.cs.
- Created MailingsController for handling mailing operations.
- Developed Mailing, MailingUpdateDto, IMailingService, and IMailingRepository classes.
- Updated frontend with MailingEdit and NewMailings components.
- Enhanced authentication handling in AuthCheck.tsx and AuthContext.tsx.
- Introduced ProtectedPageWrapper for route protection based on roles.
- Added EmailList component for email input validation.
- Updated utils.ts for token and cookie management functions.
- Modified vite.config.ts for new HTTPS certificate name.
- Updated CHANGELOG.md to reflect recent changes.
- Changed namespaces for controllers to better organize API components.
- Updated base class for controllers to `BaseController` with standard routing.
- Simplified method signatures by removing `id` parameters in entity creation methods.
- Introduced new `CreateAsync` methods in service and repository layers.
- Removed dependencies on `font-awesome` and `ionicons` from package files.
- Migrated UI components to Material-UI, enhancing consistency and design.
- Refactored `ForgotPasswordModal` to use Material-UI's `Dialog`.
- Implemented `yup` validation in form components for stricter checks.
- Cleaned up unused styles in CSS files for a cleaner codebase.
- Updated interfaces to require `id` property for stricter type checks.
- Improved error handling and user feedback in the `Login` component.
- Added action buttons for adding and refreshing data in various components.
Updated EmailDomainsController to support password retrieval.
Modified repository and service interfaces to include a new
optional `returnPassword` parameter. Transitioned from Tiptap
to Monaco Editor for rich text editing. Improved UI for
EmailDomainEdit and TemplateEdit components, added password
visibility toggle in EmailDomains, and refined data grid
layout in Templates.
Created controllers for managing bounced emails, email domains, templates, test email lists, and unsubscribe URLs. Modified the ServersController for improved routing. Added DTOs and repository interfaces for new functionalities. Updated SetupDataContext for state management and adjusted frontend components for user interaction. Updated package dependencies for new features.
- Implemented CreateTarget and updated UpdateTarget methods in TargetsController.
- Introduced IServerService and IServerRepository for server operations.
- Created ServersController for handling server-related API requests.
- Added ServerUpdateDto for server updates and enhanced Target/Server classes with default values.
- Updated TargetRepository and TargetService for target creation and updates.
- Modified DapperConfiguration for server mappings.
- Updated package dependencies for form validation and state management.
- Enhanced Layout.tsx for improved responsiveness and user experience.
- Added TitleContext for managing page titles.
- Updated Servers.tsx and ServerEdit.tsx for server data handling.
- Improved error handling and loading states across components.
- Updated `AuthenticationController` to return user data instead of token.
- Added `ITargetService` and `ITargetRepository` to `Program.cs`.
- Enhanced `appsettings.json` with connection timeout and security notes.
- Modified `IAuthService` to reflect new authentication response structure.
- Implemented connection retry mechanism in `DataAccess.cs`.
- Refactored UI components to use MUI styling in `Layout.tsx`, `App.tsx`, and others.
- Created new files for target management, including `TargetsController`, `TargetUpdateDto`, and related services.
- Added `TargetEdit` modal for editing target details and `LineChartSample` for data visualization.
- Updated package dependencies in `package-lock.json` and project file.
Updated `AuthenticationController` with new methods for authentication, token refresh, and password recovery. Improved error handling and response structure.
Refactored dependency injection in `Program.cs` and added JWT settings in `appsettings.json`. Removed unused `Class1.cs` files.
Introduced new DTOs for authentication requests and updated `IAuthService` and `IUserRepository` interfaces. Enhanced `User` class and added `AuthResult` enum for standardized responses.
Expanded `DataAccess` for better database operations and updated `UserRepository` and `AuthService` to implement new authentication logic.
Front-end changes include renaming variables for consistency and updating the `ForgotPasswordModal` and `Login.tsx` components to use usernames instead of email addresses.
Updated API proxy path in `vite.config.ts` and ensured proper typing for `API_BASE_URL` in global TypeScript definitions.
- Updated project setup to use Vite for React application.
- Removed unnecessary files and simplified configurations.
- Enhanced authentication and routing in the application.
- Improved code quality with ESLint and updated styles.
- Added new components for better user experience, including a password recovery modal.
- Updated documentation for clearer setup instructions.
Revised the dependency order in the project structure.
The `Surge365.MassEmailReact.API` now depends on both
`Application` and `Infrastructure`. Removed the reference
to `Infrastructure` in `Surge365.MassEmailReact.Application.csproj`.
Updated `Surge365.MassEmailReact.Infrastructure.csproj` to
include references to both `Application` and `Domain`.
Modified `Surge365.MassEmailReact.API.csproj` to include
a reference to `Surge365.MassEmailReact.Infrastructure`.
- Updated README.md to include "Project Structure" section.
- Removed WeatherForecastController.cs and WeatherForecast.cs.
- Simplified Surge365.MassEmailReact.Server.csproj.
- Updated solution file to reflect new project references.
- Refactored jquery.ss.dbmanager-1.0.js and jquery.usahaulers.global.js.
- Modified logging functionalities in jquery.usahaulers.logging-1.0.js.
- Set up constants from environment variables in constants.js and constants.ts.
- Introduced new classes in Surge365.MassEmailReact.Application, Domain, and Infrastructure.
- Added UnitTest1.cs for basic unit testing structure.
- Enhanced Surge365.MassEmailReact.Web.esproj with new configurations.
- Expanded utility functions in ytb-massemail-.global.ts and ytb-massemail-utilities-1.0.ts.
Added detailed instructions for cloning the project and setting up the development environment, including commands for Git, Node.js installation via nvm for Windows, and verification steps for Node.js and npm versions.