from enum import Enum

class ModelSeriesEnum(Enum):
    USER = "USR"
    # CLIENT = "CLI"
    # CONSUMABLEPRODUCTS = "CSP"
    # PROJECT = "PRJ"
    # SERIALIZEITEM = "ITM"
    # SERIALIZEPRODUCT = "SRP"
    # SUPPLIER = "SUP"
    # WAREHOUSE = "WHL"
    # ACQUISITION = 'AQN'
    # REQUISITION = 'RQN'
    # PURCHASEREQUEST = 'PR'
    # STOCKTAKE = 'STK'
    # CHECKOUT = 'CHK'

class UserTypeEnum(Enum):
    SUPER_USER = "SU"
    OVERALL_USER_ADMIN = "OUA"
    COMPANY_USER_ADMIN = "CUA"
    DEPARTMENT_USER_ADMIN = "DUA"
    USER = "USR"


class GenerateCode(Enum):
    APP = 'APP'
    MODULE = 'MODULE'
    COMPANY = 'COMPANY'
    DEPARTMENT = 'DEPARTMENT'
    USER = 'USER'
    DELEGATION = 'DELEGATION'
    NOTIFICATION = 'NOTIF'
    TEMPLATE = 'TMP'
    TMP_APPROVER = 'TMPAPR'
    TMP_STAKE = 'TMPSTK'
    TMP_ATTACH = 'TMPATCH'
    TMP_DETAIL = 'TMPDETAIL'
    FORM = 'FRM'
    FORM_APPROVER = 'FRMAPR'
    FORM_STAKE = 'FRMSTK'
    FORM_ATTACH = 'FRMATCH'
    FORM_DETAIL = 'FRMDETAIL'
    ETL = 'ETL'

    ASSET_GROUP = 'AMSGRP'
    
'''
*********
LOG ENUMS
*********
'''


class LogEnum(Enum):
    ADD = "Add"
    UPDATE = "Update"
    DELETED = "DELETED"


class LogEntitiesEnum(Enum):
    USER = "USER"
    APPLICATION = "APPLICATION"
    COMPANY = "COMPANY"
    DEPARTMENT = "DEPARTMENT"
    MODULE = "MODULE"
    DELEGATION = "DELEGATION"
    ChangeRequestTemplateHeader = "ChangeRequestTemplateHeader"
    ChangeRequestTemplateApprovers = "ChangeRequestTemplateApprovers"
    ChangeRequestTemplateStakeHolders = "ChangeRequestTemplateStakeHolders"
    ChangeRequestTemplateAttachments = "ChangeRequestTemplateAttachments"
    ChangeRequestTemplateDetails = "ChangeRequestTemplateDetails"

    ChangeRequestFormHeader = "ChangeRequestFormHeader"
    ChangeRequestFormApprovers = "ChangeRequestFormApprovers"
    ChangeRequestFormStakeHolders = "ChangeRequestFormStakeHolders"
    ChangeRequestFormAttachments = "ChangeRequestFormAttachments"
    ChangeRequestFormDetails = "ChangeRequestFormDetails"

    # BRAND = "Brand"
    # CATEGORY = "Category"
    # CURRENCY = "Currency"
    # UNIT_MATERIAL = "Unit Material"
    # NEWS = "News"
    # PROJECT = "Project"
    # PROJECT_LOCATION = "Project Location"
    # WAREHOUSE = "Warehouse"
    # SUPPLIER = "Supplier"
    # CLIENT = "Client"
    # PRODUCT = "Product"
    # ACQUISITION_ITEM = "Acquisition Item"
    # STOCK = "Stock"
    # STOCK_ITEM = "Stock Item"
    # REQUISITION = "Requisition Header"

'''
*********
CR HISTORY ENUMS
*********
'''

class CREnum(Enum):
    ADD = "ADD"
    UPDATE = "UPDATE"
    DELETED = "DELETED"
    REROUTE = "REROUTE"
    RESUBMIT = "RESUBMIT"
    SUBMIT = "SUBMIT"
    SAVE = "SAVE"
    APPROVED = "APPROVED"
    COMPLETED = "COMPLETED"
    CANCELLED = "CANCELLED"
    ACCEPTED = "ACCEPTED"
    ACKNOWLEDGED = "ACKNOWLEDGED"
    REJECTED = "REJECTED"
    ACTION = "ACTION"
    CREATE = "CREATE"
    FILE_UPLOAD = "FILE_UPLOAD"


class CREntitiesEnum(Enum):
    CR_FRM_APPROVER = "CR_FRM_APPROVER" 
    CR_FRM_ATTACHMENT = "CR_FRM_ATTACHMENT"
    CR_FRM_DETAIL = "CR_FRM_DETAIL"
    CR_FRM_HEADER = "CR_FRM_HEADER"
    CR_FRM_STAKE = "CR_FRM_STAKE"

    CR_TMP_APPROVER = "CR_TMP_APPROVER" 
    CR_TMP_ATTACHMENT = "CR_TMP_ATTACHMENT"
    CR_TMP_DETAIL = "CR_TMP_DETAIL"
    CR_TMP_HEADER = "CR_TMP_HEADER"
    CR_TMP_STAKE = "CR_TMP_STAKE"

'''
*********
NOTIFICATION ENUMS
*********
'''

class NotifTypeEnum(Enum):
    REMINDER = "REMINDER"
    ACTIVITY = "ACTIVITY"
    TASK = "TASK"