82ac7df0ec
- IDataSourceAdapter mit 3 Implementierungen (HANA, SAP_GATEWAY, MANUAL_EXCEL) und DataSourceAdapterResolver ersetzen das if/else auf ConnectionKind. - SiteExportService von 338 auf 187 Zeilen reduziert: Pipeline Resolve -> Fetch -> Transform -> Excel -> Central -> SharePoint. - Page-Services auf Scoped (per Blazor-Circuit); Orchestrator bleibt Singleton fuer geteilten Export-Status.
25 lines
851 B
C#
25 lines
851 B
C#
using TrafagSalesExporter.Models;
|
|
|
|
namespace TrafagSalesExporter.Services.DataSources;
|
|
|
|
internal static class DataSourceCredentials
|
|
{
|
|
public static (string Username, string Password) Resolve(Site site, SourceSystemDefinition sourceDefinition)
|
|
=> (FirstNonEmpty(site.UsernameOverride, sourceDefinition.CentralUsername),
|
|
FirstNonEmpty(site.PasswordOverride, sourceDefinition.CentralPassword));
|
|
|
|
public static string ResolveSapServiceUrl(Site site, SourceSystemDefinition sourceDefinition)
|
|
=> FirstNonEmpty(site.SapServiceUrl, sourceDefinition.CentralServiceUrl);
|
|
|
|
public static string FirstNonEmpty(params string[] values)
|
|
{
|
|
foreach (var value in values)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(value))
|
|
return value.Trim();
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
}
|