using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

namespace ValidationInCode
{
    [HasSelfValidation]
    public class Zamowienie
    {
        [StringLengthValidator(6, 6, MessageTemplate = "Number musi mieć 6 znaków")]
        [RegexValidator("[A-Z]{3}[0-9]{3}", MessageTemplate = "Numer musi mieć 3 litery i 3 cyfry")]
        public string Numer { get; set; }

        [StringLengthValidator(3, 100, MessageTemplate = "Podaj odbiorcę")]
        public string Odbiorca { get; set; }

        [StringLengthValidator(3, 100, MessageTemplate = "Podaj adres dostawy")]
        public string AdresDostawy { get; set; }

        public DateTime DataZlozenia { get; set; }

        public DateTime DataWyslania { get; set; }

        public DateTime DataDostarczenia { get; set; }

        [SelfValidation]
        public void DataZlozeniaValidation(ValidationResults results)
        {
            if (DataZlozenia > DataWyslania)
                results.AddResult(new ValidationResult("Data złożenia nie może być późniejsza niż data wysłania.", this, "DataZlozeniaSelfValidation", string.Empty, null));
        }
        [SelfValidation]
        public void DataWyslaniaValidation(ValidationResults results)
        {
            if (DataWyslania > DataDostarczenia)
                results.AddResult(new ValidationResult("Data wysłania nie może być późniejsza niż data dostarczenia.", this, "DataWyslaniaSelfValidation", string.Empty, null));
        }
    }

}
