Files
Ai/TrafagSalesExporter/Services/TransformationStrategies.cs
T
2026-04-13 14:37:21 +02:00

59 lines
2.0 KiB
C#

namespace TrafagSalesExporter.Services;
public sealed class CopyTransformationStrategy : ITransformationStrategy
{
public string TransformationType => "Copy";
public object? Transform(object? sourceValue, string? argument) => sourceValue;
}
public sealed class UppercaseTransformationStrategy : ITransformationStrategy
{
public string TransformationType => "Uppercase";
public object? Transform(object? sourceValue, string? argument) => sourceValue?.ToString()?.ToUpperInvariant();
}
public sealed class LowercaseTransformationStrategy : ITransformationStrategy
{
public string TransformationType => "Lowercase";
public object? Transform(object? sourceValue, string? argument) => sourceValue?.ToString()?.ToLowerInvariant();
}
public sealed class PrefixTransformationStrategy : ITransformationStrategy
{
public string TransformationType => "Prefix";
public object? Transform(object? sourceValue, string? argument) => $"{argument}{sourceValue}";
}
public sealed class SuffixTransformationStrategy : ITransformationStrategy
{
public string TransformationType => "Suffix";
public object? Transform(object? sourceValue, string? argument) => $"{sourceValue}{argument}";
}
public sealed class ReplaceTransformationStrategy : ITransformationStrategy
{
public string TransformationType => "Replace";
public object? Transform(object? sourceValue, string? argument)
{
var input = sourceValue?.ToString();
if (string.IsNullOrEmpty(input))
return string.Empty;
if (string.IsNullOrWhiteSpace(argument))
return input;
var parts = argument.Split("=>", 2, StringSplitOptions.TrimEntries);
if (parts.Length != 2)
return input;
return input.Replace(parts[0], parts[1], StringComparison.OrdinalIgnoreCase);
}
}
public sealed class ConstantTransformationStrategy : ITransformationStrategy
{
public string TransformationType => "Constant";
public object? Transform(object? sourceValue, string? argument) => argument;
}