< Summary

Class:SVETA.Api.Validation.DigitValidateAttribute
Assembly:SVETA.Api
File(s):/opt/dev/sveta_api_build/SVETA.Api/Validation/DigitValidateAttribute.cs
Covered lines:0
Uncovered lines:14
Coverable lines:14
Total lines:46
Line coverage:0% (0 of 14)
Covered branches:0
Total branches:10
Branch coverage:0% (0 of 10)

Metrics

MethodLine coverage Branch coverage
.ctor()0%100%
get_CanBeZero()0%100%
get_CanBeNegative()0%100%
IsValid(...)0%0%

File(s)

/opt/dev/sveta_api_build/SVETA.Api/Validation/DigitValidateAttribute.cs

#LineLine coverage
 1using System;
 2using System.Text.RegularExpressions;
 3using System.Collections.Generic;
 4using System.Linq;
 5using System.Threading.Tasks;
 6using System.ComponentModel.DataAnnotations;
 7using System.Reflection;
 8
 9namespace SVETA.Api.Validation
 10{
 11    /// <summary>
 12    /// Атрибут валидации числовых значений. Дополнительные опции указываются через свойства
 13    /// </summary>
 14    public class DigitValidateAttribute : ValidationAttribute
 15    {
 16
 017        public DigitValidateAttribute()
 018        {
 19
 020        }
 21        /// <summary>
 22        /// Может ли значение быть 0. По умолчанию true
 23        /// </summary>
 024        public bool CanBeZero { get; set; } = true;
 25        /// <summary>
 26        /// Может ли значение быть отрицательным. По умолчанию false
 27        /// </summary>
 028        public bool CanBeNegative { get; set; } = false;
 29
 30        protected override ValidationResult IsValid(Object value, ValidationContext validationContext)
 031        {
 32            decimal _value;
 033            if (!Decimal.TryParse(value.ToString(), out _value)) //переводим любые числа в decimal
 034                return new ValidationResult($"Поле '{validationContext.DisplayName}' должно содержать число");
 35            /*if (!Regex.IsMatch(value.ToString(), "^[-]?[0-9]*[.]?[0-9]+$"))
 36                return new ValidationResult($"Поле '{validationContext.DisplayName}' должно содержать число");
 37            var propType = validationContext.ObjectType.GetProperties().FirstOrDefault(x => x.Name == validationContext.
 38            var _value = Convert.ChangeType(value, propType);*/
 039            if (!CanBeZero && _value == 0)
 040                return new ValidationResult($"Поле '{validationContext.DisplayName}' не может быть нулевым");
 041            if (!CanBeNegative && _value < 0)
 042                return new ValidationResult($"Поле '{validationContext.DisplayName}' не может быть отрицательным");
 043            return ValidationResult.Success;
 044        }
 45    }
 46}