73 lines
2.4 KiB
C#
73 lines
2.4 KiB
C#
using BankSampahApp.Models;
|
|
|
|
namespace BankSampahApp.Services;
|
|
|
|
/// <summary>
|
|
/// Interface untuk common validation logic
|
|
/// </summary>
|
|
public interface IValidationService
|
|
{
|
|
/// <summary>
|
|
/// Validates statistics model
|
|
/// </summary>
|
|
/// <param name="statistics">Statistics to validate</param>
|
|
/// <returns>Validation result</returns>
|
|
ValidationResult ValidateStatistics(StatisticsModel statistics);
|
|
|
|
/// <summary>
|
|
/// Validates feature model
|
|
/// </summary>
|
|
/// <param name="feature">Feature to validate</param>
|
|
/// <returns>Validation result</returns>
|
|
ValidationResult ValidateFeature(FeatureModel feature);
|
|
|
|
/// <summary>
|
|
/// Validates date range
|
|
/// </summary>
|
|
/// <param name="startDate">Start date</param>
|
|
/// <param name="endDate">End date</param>
|
|
/// <returns>Validation result</returns>
|
|
ValidationResult ValidateDateRange(DateTime startDate, DateTime endDate);
|
|
|
|
/// <summary>
|
|
/// Validates required string fields
|
|
/// </summary>
|
|
/// <param name="value">String value to validate</param>
|
|
/// <param name="fieldName">Name of the field</param>
|
|
/// <param name="maxLength">Maximum length allowed</param>
|
|
/// <returns>Validation result</returns>
|
|
ValidationResult ValidateRequiredString(string? value, string fieldName, int maxLength = int.MaxValue);
|
|
|
|
/// <summary>
|
|
/// Validates numeric range
|
|
/// </summary>
|
|
/// <param name="value">Numeric value to validate</param>
|
|
/// <param name="fieldName">Name of the field</param>
|
|
/// <param name="minValue">Minimum allowed value</param>
|
|
/// <param name="maxValue">Maximum allowed value</param>
|
|
/// <returns>Validation result</returns>
|
|
ValidationResult ValidateNumericRange(decimal value, string fieldName, decimal minValue = 0, decimal maxValue = decimal.MaxValue);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Result of validation operation
|
|
/// </summary>
|
|
public class ValidationResult
|
|
{
|
|
public bool IsValid { get; set; }
|
|
public List<string> Errors { get; set; } = new();
|
|
|
|
public static ValidationResult Success() => new() { IsValid = true };
|
|
|
|
public static ValidationResult Failure(string error) => new()
|
|
{
|
|
IsValid = false,
|
|
Errors = new List<string> { error }
|
|
};
|
|
|
|
public static ValidationResult Failure(IEnumerable<string> errors) => new()
|
|
{
|
|
IsValid = false,
|
|
Errors = errors.ToList()
|
|
};
|
|
} |