namespace Sockeye.Biz
{

    /// <summary>
    /// All Sockeye types and their attributes indicating what features that type will support (tagging, attachments etc)
    /// </summary>
    public enum SockType : int
    {
        //COREBIZOBJECT attribute must be set on objects that are:
        //Attachable objects can have attachments, 
        //wikiable objects can have a wiki
        //reviewable objects can have a review which is basically the same as a Reminder but with an object attached (was follow up schedmarker in v7)
        //PIckList-able (has picklist template)
        //Pretty much everything that represents some kind of real world object is wikiable or attachable as long as it has an ID and a type
        //exceptions would be utility type objects like dataListFilter, dataListColumn, formcustom etc that are not

        //NOTE: NEW CORE OBJECTS - All areas of server AND CLIENT code that require adding any new core objects have been tagged with the following comment:
        //CoreBizObject add here
        //Search for that IN SERVER AND CLIENT CODE and you will see all areas that need coding for the new object

        //***IMPORTANT: Also need to add translations for any new biz objects added that don't match exactly the name here in the key
        //because enumlist gets it that way, i.e. "Global" would be the expected key

        NoType = 0,
        Global = 1,
        FormUserOptions = 2,
        [CoreBizObject, ReportableBizObject]
        User = 3,
        ServerState = 4,
        LogFile = 6,
        PickListTemplate = 7,
        [CoreBizObject, ReportableBizObject, ImportableBizObject]
        Customer = 8,
        ServerJob = 9,

        ServerMetrics = 12,
        Translation = 13,
        UserOptions = 14,
        [CoreBizObject, ReportableBizObject, ImportableBizObject]
        HeadOffice = 15,
        FileAttachment = 17,
        DataListSavedFilter = 18,
        FormCustom = 19,
        [CoreBizObject, ReportableBizObject, ImportableBizObject]
        Vendor = 33,
        GlobalOps = 47,//really only used for rights, not an object type of any kind
        BizMetrics = 48,//deprecate?  Not used for anything as of nov 2020
        Backup = 49,
        Notification = 50,
        NotifySubscription = 51,
        [CoreBizObject, ReportableBizObject]
        Reminder = 52,

        OpsNotificationSettings = 56,
        Report = 57,
        DashboardView = 58,
        [CoreBizObject, ReportableBizObject]
        CustomerNote = 59,
        [CoreBizObject, ReportableBizObject]
        Memo = 60,
        [CoreBizObject, ReportableBizObject]
        Review = 61,
        DataListColumnView = 68,
        CustomerNotifySubscription = 84,//proxy subs for customers
        Integration = 92,//3rd party or add-on integration data store
        //------------ SOCKEYE NEW TYPES NOT IN AYANOVA ---------
        [CoreBizObject, ReportableBizObject]
        License = 93,
        [CoreBizObject, ReportableBizObject]
        TrialLicenseRequest = 94,
        [CoreBizObject, ReportableBizObject]
        SubscriptionServer = 95,
        [CoreBizObject, ReportableBizObject]
        Purchase = 96,
        [CoreBizObject, ReportableBizObject]
        Product = 97,
        [CoreBizObject, ReportableBizObject]
        GZCase = 98,
        [CoreBizObject, ReportableBizObject]
        VendorNotification = 99




        //NOTE: New objects added here need to also be added to the following classes:
        //Sockeye.Biz.BizObjectExistsInDatabase
        //Sockeye.Biz.BizObjectFactory
        //Sockeye.Biz.BizRoles
        //Sockeye.Biz.BizObjectNameFetcherDIRECT
        //and in the CLIENT in socktype.js
        //and their model needs to have the ICoreBizObjectModel interface

        //and need TRANSLATION KEYS because any type could show in the event log at the client end

        //AND QBI mirrors this too

    }


}//eons 

