using AyaNova.Biz;
using Newtonsoft.Json;
namespace AyaNova.PickList
{
    //This class defines a field used for pick list templating querying processing editing and returning
    public class AyaPickListFieldDefinition
    {
        //CLIENT / SERVER Unique identifier used at BOTH client and server
        //also the sql displaycolumnname if identical
        public string FieldKey { get; set; }
        //CLIENT Use only for display
        public string TKey { get; set; }
        // Used for casting query
        public UiFieldDataType ColumnDataType { get; set; }
        public bool IsRowId { get; set; }//both indicates is row ID but also that it's required as the only required field.  Not technically necessary maybe but to prevent foot shooting.
        public bool IsActiveColumn { get; set; }      
        [JsonIgnore]
        public string SqlIdColumnName { get; set; }
        [JsonIgnore]
        public string SqlValueColumnName { get; set; }

        public AyaPickListFieldDefinition()
        {
            //most common defaults   
            IsRowId = false;
            IsActiveColumn = false;
        }

        //Get column to query for display name or use FieldName if there is no difference
        public string GetSqlValueColumnName()
        {
            if (string.IsNullOrEmpty(SqlValueColumnName))
            {
                return FieldKey.ToLowerInvariant();
            }
            else
            {
                return SqlValueColumnName;
            }
        }
    }
}