AP EFT Remittance Navigation Implementation
Overview
The AP EFT Remittance dashboard implements the Navigation Architecture Pattern with specific workflows optimized for electronic funds transfer remittance processing and reporting.
Navigation Flow
MainView (Container)
├── EftRemittanceMainView (Default/Home)
│ ├── PaymentSelectionView (Select payments for remittance)
│ │ └── SupplierSelectionDialogView (Modal selection)
│ ├── ReportGenerationView (Generate remittance reports)
│ │ └── SSRSReportView (Report preview/export)
│ └── EmailManagementView (Send remittance emails)
│ └── EmailCompletionView (Email status/results)
└── SettingsDialogView (Configuration modal)
Implementation Details
MainViewModel Configuration
The MainViewModel serves as the navigation host with specific configurations for EFT remittance processing:
// MepApps.Dash.Ap.Rpt.EftRemittance/ViewModels/MainViewModel.cs
public class MainViewModel : BaseRouteableViewModel
{
private readonly BasicMepNavigationUiHostNotificator _navigationUiHostNotificator;
public MainViewModel(...)
{
_navigationUiHostNotificator.MainContentChanged += (sender, e) => SetMainContent(sender);
this.Title = "AP EFT Remittance";
}
public void SetMainContent(object content)
{
Dispatcher.CurrentDispatcher.Invoke(() =>
{
var navigatedFromContent = mainContent;
MainContent = content;
if (navigatedFromContent is INavigationTarget)
((INavigationTarget) navigatedFromContent)?.NavigatedFrom();
if (content is INavigationTarget)
((INavigationTarget) content)?.NavigatedTo();
});
}
}
Payment Selection Navigation Pattern
The dashboard implements a payment-centric navigation pattern:
// MepApps.Dash.Ap.Rpt.EftRemittance/ViewModels/PaymentSelectionViewModel.cs
public event EventHandler<EventArgs> NavigateToReportGeneration;
private async Task GenerateReport()
{
IsLoading = true;
await Task.Delay(300).ConfigureAwait(true);
NavigateToReportGeneration?.Invoke(this, new EventArgs());
}
Report Generation Flow
Navigation through the report generation workflow:
// MepApps.Dash.Ap.Rpt.EftRemittance/ViewModels/ReportGenerationViewModel.cs
private async void ReportGenerationViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "SelectedPayments":
await SelectedPaymentsChanged().ConfigureAwait(true);
break;
case "ReportFormat":
await ReportFormatChanged().ConfigureAwait(true);
break;
}
}
Navigation Guards
Payment Validation
Navigation guards ensure payment data integrity before allowing transitions:
// MepApps.Dash.Ap.Rpt.EftRemittance/ViewModels/PaymentSelectionViewModel.cs
if (SelectedPayments == null || !SelectedPayments.Any())
return;
if (!await ValidatePaymentSelection())
return;
IsLoading = true;
// Proceed with navigation
Thread Safety
All navigation operations are synchronized with the UI thread:
// MepApps.Dash.Ap.Rpt.EftRemittance/ViewModels/MainViewModel.cs
Dispatcher.CurrentDispatcher.Invoke(() =>
{
if (_logger.IsEnabled(LogLevel.Trace))
_logger.LogTrace("CHANGING MAIN CONTENT to {ContentIsNull}, {NameOfContent}",
content == null, content?.GetType().Name);
// Navigation logic here
});
Memory Management
The dashboard implements proper disposal patterns during navigation:
// MepApps.Dash.Ap.Rpt.EftRemittance/ViewModels/MainViewModel.cs
private bool disposed = false;
public void Dispose()
{
if (!disposed)
{
disposed = true;
// Cleanup logic
}
}
Error Handling
Comprehensive error handling for navigation failures:
// MepApps.Dash.Ap.Rpt.EftRemittance/ViewModels/MainViewModel.cs
catch (Exception ex)
{
_logger.LogError(ex, "Failed to initialize MainViewModel");
throw;
}
Dashboard-Specific Features
1. Payment Selection Management
- Maintains navigation state across payment selection operations
- Preserves selected suppliers and payment details during navigation
- Handles batch payment processing navigation flows
2. Report Generation Integration
- Modal dialog navigation for report format selection
- SSRS report preview navigation
- Maintains report context during generation
3. Email Management Navigation
- Displays email sending progress and results
- Provides navigation back to payment selection with state reset
- Maintains audit trail during navigation
4. Audit Tracking Flow
- Tracks all navigation events for compliance
- Records user actions during payment processing
- Maintains complete navigation history
Performance Optimizations
Loading Indicators
private async Task NavigateWithLoading()
{
IsLoading = true;
await Task.Delay(300).ConfigureAwait(true); // Smooth transition
NavigateToTarget?.Invoke(this, new EventArgs());
IsLoading = false;
}
Lazy View Loading
Views are instantiated only when first accessed to improve startup performance.
Report Caching
Generated reports are cached during navigation to avoid regeneration.
Related Documentation
- Pattern: Navigation Architecture
- AP EFT Remittance Overview
- Payment Selection
- Report Generation
- Examples
Summary
The AP EFT Remittance dashboard's navigation implementation extends the base MepDash navigation patterns with specific features for electronic payment processing and remittance reporting. The payment-centric design, combined with proper state management and error handling, ensures reliable navigation through complex payment workflows, report generation, and email distribution processes.