using DevExpress.Blazor;

namespace DbFirst.BlazorWebApp.Models.Grid
{
    public class BandLayout
    {
        public List<BandDefinition> Bands { get; set; } = [];
        public List<string> ColumnOrder { get; set; } = [];
        public Dictionary<string, string?> ColumnWidths { get; set; } = new(StringComparer.OrdinalIgnoreCase);
        public GridPersistentLayout? GridLayout { get; set; }
        public SizeMode SizeMode { get; set; } = SizeMode.Medium;
    }

    public class BandDefinition
    {
        public string Id { get; set; } = string.Empty;
        public string Caption { get; set; } = string.Empty;
        public List<string> Columns { get; set; } = [];
    }

    public class BandOption
    {
        public string Id { get; set; } = string.Empty;
        public string Caption { get; set; } = string.Empty;
    }

    public class ColumnDefinition
    {
        public string FieldName { get; init; } = string.Empty;
        public string Caption { get; init; } = string.Empty;
        public string? Width { get; set; }
        public string? DisplayFormat { get; init; }
        public bool ReadOnly { get; init; }
        public ColumnFilterType FilterType { get; init; }
    }

    public enum ColumnFilterType
    {
        Text,
        Bool,
        Date
    }
}