using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Linq;

namespace Kreta.Web.Configuration
{
    public class UploadFileValidationConfiguration : ConfigurationSection, IUploadFileValidationConfiguration
    {
        [ConfigurationProperty(nameof(ImportMaxAllowedFileSizeInBytes), IsRequired = true)]
        public int ImportMaxAllowedFileSizeInBytes => (int)this[nameof(ImportMaxAllowedFileSizeInBytes)];

        [ConfigurationProperty(nameof(ImportAllowedFileExtensions), IsRequired = true)]
        [TypeConverter(typeof(CommaDelimitedStringCollectionConverter))]
        public IEnumerable<string> ImportAllowedFileExtensions => ((CommaDelimitedStringCollection)this[nameof(ImportAllowedFileExtensions)]).OfType<string>();

        [ConfigurationProperty(nameof(AscImportAllowedFileExtensions), IsRequired = true)]
        [TypeConverter(typeof(CommaDelimitedStringCollectionConverter))]
        public IEnumerable<string> AscImportAllowedFileExtensions => ((CommaDelimitedStringCollection)this[nameof(AscImportAllowedFileExtensions)]).OfType<string>();
    }
}