using EnVisage.Code; using System; using System.Collections.Generic; using System.Web.Mvc; namespace EnVisage.Models.ValidationAttributes.Scenarios { public class ScenarioEndDateValidatorAttribute : ValidationAttributeBase, IClientValidatable { public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ErrorMessage = ErrorMessage, ValidationType = "scenarioenddate" }; var hasActuals = ((bool?)GetPropertyValue("HasActuals", metadata, context) ?? false); var deadline = (DateTime?)GetPropertyValue("ProjectDeadline", metadata, context); var actualsenddate = (long?)GetPropertyValue("ActualsEndDate", metadata, context); rule.ValidationParameters["hasactuals"] = Convert.ToInt32(hasActuals); rule.ValidationParameters["projectdeadline"] = deadline.HasValue ? Utils.ConvertToUnixDate(deadline.Value) : 0; rule.ValidationParameters["actualsenddate"] = actualsenddate > 0 ? Constants.UnixEpochDate.AddMilliseconds(actualsenddate.Value).AddDays(7).Subtract(Constants.UnixEpochDate).TotalMilliseconds : 0; yield return rule; } } }