using System.Collections.Generic;
using AyaNova.Biz;
namespace AyaNova.DataList
{
    internal interface IAyaDataList
    {
        //Unique key to identify this list
        string ListKey { get; set; }

        //sql query from fragment with table joins et
        string SQLFrom { get; set; }

        //List of fields for this object
        List<AyaDataListFieldDefinition> FieldDefinitions { get; set; }

        //allowed roles to access the full list templated fields
        AuthorizationRoles FullListAllowedRoles { get; set; }

        //allowed roles to access mini list templated fields
        //generally this will be *any* because most forms will need to allow this for picklists such as usernames etc
        // but this is a safety valve for sensitive lists like financial reports where there is just no need for untrusted roles to see it
        AuthorizationRoles MiniListAllowedRoles { get; set; }


        //Default object type to open for rows of this list (use no object if no)
        AyaType DefaultListObjectType { get; set; }

        //Default list display template if none found in db or is invalid, this ensures the data will flow even if people fuck up the templates somehow
        string DefaultDataListDisplayTemplate { get; set; }

        Newtonsoft.Json.Linq.JArray GenerateMINIListColumnsJSON();
        Newtonsoft.Json.Linq.JArray GenerateListColumnsJSONFromTemplate(string template);

        bool ValidateTemplate(string template);


    }

}