using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web.Mvc; namespace EnVisage.Models.ValidationAttributes.Scenarios { public class ProjectedRevenueValidatorAttribute : ValidationAttribute, IClientValidatable { public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ErrorMessage = ErrorMessage, ValidationType = "projectedrevenue" }; var modelMetadata = ModelMetadataProviders.Current.GetMetadataForProperties(context.Controller.ViewData.Model, context.Controller.ViewData.Model.GetType()); rule.ValidationParameters["hasactuals"] = Convert.ToInt32(modelMetadata.FirstOrDefault(x => x.PropertyName == "HasActuals").Model); rule.ValidationParameters["isrevenuegenerating"] = Convert.ToInt32(modelMetadata.FirstOrDefault(x => x.PropertyName == "IsRevenueGenerating").Model); rule.ValidationParameters["actualstotal"] = Convert.ToDecimal(modelMetadata.FirstOrDefault(x => x.PropertyName == "ActualsTotal").Model); rule.ValidationParameters["uselmmarginproperty"] = "UseLMMargin"; rule.ValidationParameters["grossmarginproperty"] = "GrossMargin"; rule.ValidationParameters["lmmarginproperty"] = "LMMargin"; yield return rule; } } }