view SilverlightValidation/SilverlightValidation.PL/Validators/UserModelValidator.cs @ 102:db05a55e3536

INPC tests added
author stevenhollidge <stevenhollidge@hotmail.com>
date Sun, 06 May 2012 12:13:29 +0100
parents 188f8b366e87
children
line wrap: on
line source

using System;
using FluentValidation;
using SilverlightValidation.Interfaces;

namespace SilverlightValidation.Validators
{
    public class UserModelValidator : AbstractValidator<IUserModel>
    {
        private UserModelValidator()
        {
            RuleFor(x => x.Username)
                .Length(3, 8)
                .WithMessage("Must be between 3-8 characters.");

            RuleFor(x => x.Password)
                .Matches(@"^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$")
                .WithMessage("Must contain lower, upper and numeric chars.");

            RuleFor(x => x.Email)
                .EmailAddress()
                .WithMessage("A valid email address is required.");

            RuleFor(x => x.DateOfBirth)
                .Must(BeAValidDateOfBirth)
                .WithMessage("Must be within 100 years of today.");
        }

        private bool BeAValidDateOfBirth(DateTime? dateOfBirth)
        {
            if (dateOfBirth == null) return false;
            if (dateOfBirth.Value > DateTime.Today || dateOfBirth < DateTime.Today.AddYears(-100))
                return false;
            return true;
        }

        public static UserModelValidator Create()
        {
            return new UserModelValidator();
        }
    }
}