Skip to main content

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.

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;
}
}

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.

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.