EnVisageOnline/Main-RMO/Source/EnVisage/Models/ValidationAttributes/Scenarios/ProjectedRevenueValidatorAt...

31 lines
1.5 KiB
C#

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<ModelClientValidationRule> 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;
}
}
}