Custom validation in dotnet Core

From Logic Wiki
Jump to: navigation, search


using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using VDSCore.Client.TheVDS.Shared;

namespace VDSCore.Client.TheVDS.ViewModels
{
    public class DirectDebit : IValidatableObject
    {
        [Required(ErrorMessage= "The Name of Practice Account as it appears on your bank statement field is required.")]
        public string AccountHolderOne { get; set; }

        [Required(ErrorMessage = "The Bank/building society Account Number field is required.")]
        public string  AccountNumber { get; set; }

        [Required(ErrorMessage = "The Branch Sort Code field is required.")]
        public string SortCode { get; set; }

        [Required(ErrorMessage = "The Bank/building society field is required.")]
        public string BankBuildingSociety { get; set; }

        [Required(ErrorMessage = "The Address field is required.")]
        public string Address { get; set; }

        [Required(ErrorMessage = "The Town/City field is required.")]
        public string Town { get; set; }


        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            var controlName = new List<string>();
            if (!BankDetailsCheck.IsAValidAccountNumber(SortCode, AccountNumber))
            {
                controlName.Add("AccountNumber");
                controlName.Add("SortCode");
                yield return new ValidationResult("'Sort Code' and/or 'Account Number' are not valid", controlName);
            }

        }
    }
}