@page "/transformations" @using Microsoft.EntityFrameworkCore @using System.Reflection @using TrafagSalesExporter.Data @using TrafagSalesExporter.Models @inject IDbContextFactory DbFactory @inject ISnackbar Snackbar Transformationen Transformer Ansicht Definiere pro Quellsystem (SAP, BI1, SAGE) Feld-Remapping und Transformationen. Regel hinzufügen Alle speichern Aktiv System Source Target Typ Argument Sort Aktionen @foreach (var system in _systems) { @system } @foreach (var field in _recordFields) { @field } @foreach (var field in _recordFields) { @field } @foreach (var type in _types) { @type } @code { private readonly string[] _systems = ["SAP", "BI1", "SAGE"]; private readonly string[] _types = ["Copy", "Uppercase", "Lowercase", "Prefix", "Suffix", "Replace", "Constant"]; private readonly string[] _recordFields = typeof(SalesRecord) .GetProperties(BindingFlags.Public | BindingFlags.Instance) .Select(p => p.Name) .OrderBy(n => n) .ToArray(); private List _rules = new(); protected override async Task OnInitializedAsync() { await LoadAsync(); } private async Task LoadAsync() { using var db = await DbFactory.CreateDbContextAsync(); _rules = await db.FieldTransformationRules.OrderBy(r => r.SortOrder).ThenBy(r => r.Id).ToListAsync(); } private void AddRule() { var nextSort = _rules.Count == 0 ? 10 : _rules.Max(r => r.SortOrder) + 10; _rules.Add(new FieldTransformationRule { SourceSystem = "SAP", SourceField = nameof(SalesRecord.Material), TargetField = nameof(SalesRecord.Material), TransformationType = "Copy", SortOrder = nextSort, IsActive = true }); } private void RemoveRule(FieldTransformationRule rule) { _rules.Remove(rule); } private async Task SaveAllAsync() { using var db = await DbFactory.CreateDbContextAsync(); db.FieldTransformationRules.RemoveRange(db.FieldTransformationRules); await db.SaveChangesAsync(); db.FieldTransformationRules.AddRange(_rules); await db.SaveChangesAsync(); Snackbar.Add("Transformationsregeln gespeichert.", Severity.Success); await LoadAsync(); } }