using System;
using System.ComponentModel.DataAnnotations;
using System.IO;
using Nitrox.Launcher.Models.Design;
namespace Nitrox.Launcher.Models.Validators;
///
/// Checks that value is a usable .
///
public sealed class BackupAttribute : TypedValidationAttribute
{
protected override ValidationResult IsValid(BackupItem value, ValidationContext context)
{
if (value == null)
{
return new ValidationResult($"{context.DisplayName} must not be null.");
}
if (value.BackupFileName == null || value.BackupFileName.AsSpan().Trim().IsEmpty)
{
return new ValidationResult($"{context.DisplayName} must have a backup path assigned");
}
if (!File.Exists(value.BackupFileName))
{
return new ValidationResult($"{context.DisplayName} must point to a valid file.");
}
return ValidationResult.Success;
}
}