31 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
} |