private static decimal ConvertToBytes(this decimal fileSize, FileSizeUnitName unit)
        {
            const int factor          = 1024;
            const int twoFactor       = 1024 * 1024;
            var       fileSizeInBytes = fileSize;

            if (unit == FileSizeUnitName.Kilobyte)
            {
                fileSizeInBytes = fileSizeInBytes * factor;
            }
            if (unit == FileSizeUnitName.Megabyte)
            {
                fileSizeInBytes = fileSizeInBytes * twoFactor;
            }
            if (unit == FileSizeUnitName.Gigabyte)
            {
                fileSizeInBytes = fileSizeInBytes * twoFactor * factor;
            }
            if (unit == FileSizeUnitName.Terabyte)
            {
                fileSizeInBytes = fileSizeInBytes * twoFactor * twoFactor;
            }
            if (unit == FileSizeUnitName.Petabyte)
            {
                fileSizeInBytes = fileSizeInBytes * twoFactor * twoFactor * factor;
            }
            if (unit == FileSizeUnitName.Exabyte)
            {
                fileSizeInBytes = fileSizeInBytes * twoFactor * twoFactor * twoFactor;
            }
            return(fileSizeInBytes);
        }
        public static IRuleBuilderOptions <T, long> MustNotExceedFileSize <T>
            (this IRuleBuilder <T, long> ruleBuilder, decimal fileSize, FileSizeUnitName unit, Func <T, string> fileName)
        {
            var fileSizeInBytes = fileSize.ConvertToBytes(unit);

            return(ruleBuilder.SetValidator(new MustNotExceedFileSize <T>(fileSizeInBytes, unit, fileName, null)));
        }
        public static IRuleBuilderOptions <T, Guid> MustNotExceedFileSize <T>
            (this IRuleBuilder <T, Guid> ruleBuilder, decimal fileSize, FileSizeUnitName unit, IQueryEntities entities)
        {
            var fileSizeInBytes = fileSize.ConvertToBytes(unit);

            return(ruleBuilder.SetValidator(new MustNotExceedFileSize <T>(fileSizeInBytes, unit, null, entities)));
        }
 internal MustNotExceedFileSize(decimal fileSizeInBytes, FileSizeUnitName unit, Func <T, string> fileName, IQueryEntities entities)
     : base(FailMessageFormat.Replace("{0}", "{FileName}").Replace("{1}", "{ActualSize}").Replace("{2}", "{MaxSize}"))
 {
     _fileSizeInBytes = fileSizeInBytes;
     _fileName        = fileName;
     _unit            = unit;
     _entities        = entities;
 }
Esempio n. 5
0
 public static string ToFileSize(this decimal lengthInBytes, int maxPrecision = 2, FileSizeUnitName? fileSizeUnitName = null)
 {
     if (maxPrecision < 0) throw new ArgumentOutOfRangeException("maxPrecision", "Must be greater than or equal to zero.");
     var unit = fileSizeUnitName ?? GetSmartUnitName(lengthInBytes);
     var size = lengthInBytes.ConvertBytesTo(unit);
     var precision = size.GetPrecision(maxPrecision);
     var sizeText = size.ToString(precision.GetSizeFormat());
     var unitText = unit.GetUnitText(sizeText);
     return string.Format("{0} {1}", sizeText, unitText);
 }
Esempio n. 6
0
 private static decimal ConvertBytesTo(this decimal lengthInBytes, FileSizeUnitName unitName)
 {
     switch (unitName)
     {
         case FileSizeUnitName.Byte: return lengthInBytes;
         case FileSizeUnitName.Kilobyte: return lengthInBytes / Factor;
         case FileSizeUnitName.Megabyte: return lengthInBytes / Factor / Factor;
         case FileSizeUnitName.Gigabyte: return lengthInBytes / Factor / Factor / Factor;
         case FileSizeUnitName.Terabyte: return lengthInBytes / Factor / Factor / Factor / Factor;
         case FileSizeUnitName.Petabyte: return lengthInBytes / Factor / Factor / Factor / Factor / Factor;
         default:
             return lengthInBytes / Factor / Factor / Factor / Factor / Factor / Factor;
     }
 }
Esempio n. 7
0
        private static decimal ConvertBytesTo(this decimal lengthInBytes, FileSizeUnitName unitName)
        {
            switch (unitName)
            {
            case FileSizeUnitName.Byte: return(lengthInBytes);

            case FileSizeUnitName.Kilobyte: return(lengthInBytes / Factor);

            case FileSizeUnitName.Megabyte: return(lengthInBytes / Factor / Factor);

            case FileSizeUnitName.Gigabyte: return(lengthInBytes / Factor / Factor / Factor);

            case FileSizeUnitName.Terabyte: return(lengthInBytes / Factor / Factor / Factor / Factor);

            case FileSizeUnitName.Petabyte: return(lengthInBytes / Factor / Factor / Factor / Factor / Factor);

            default:
                return(lengthInBytes / Factor / Factor / Factor / Factor / Factor / Factor);
            }
        }
Esempio n. 8
0
 public static string ToFileSize(this long lengthInBytes, int maxPrecision = 2, FileSizeUnitName? fileSizeUnitName = null)
 {
     return ((decimal) lengthInBytes).ToFileSize(maxPrecision, fileSizeUnitName);
 }
Esempio n. 9
0
 private static string GetUnitText(this FileSizeUnitName unit, string sizeText)
 {
     return(sizeText == "1" ? unit.ToString() : string.Format("{0}s", unit));
 }