from enum import Enum
import re

image_extensions = ('jpg', 'jpeg', 'png', 'JPG', 'JPEG', 'PNG')
pdf_extensions = ('pdf', 'PDF')
allowed_file_extensions = image_extensions + pdf_extensions
# allowed_file_extensions = image_extensions
allowed_p_type = [12]
LIST_BOX_MESSAGE = 'list_box'
NAME_MESSAGE = 'name'
VN_AND_SPACE_REGEX = r"[AĂÂÁẮẤÀẰẦẢẲẨÃẴẪẠẶẬĐEÊÉẾÈỀẺỂẼỄẸỆIÍÌỈĨỊOÔƠÓỐỚÒỒỜỎỔỞÕỖỠỌỘỢUƯÚỨÙỪỦỬŨỮỤỰYÝỲỶỸỴAĂÂÁẮẤÀẰẦẢẲẨÃẴẪẠẶẬĐEÊÉẾÈỀẺỂẼỄẸỆIÍÌỈĨỊOÔƠÓỐỚÒỒỜỎỔỞÕỖỠỌỘỢUƯÚỨÙỪỦỬŨỮỤỰYÝỲỶỸỴAĂÂÁẮẤÀẰẦẢẲẨÃẴẪẠẶẬĐEÊÉẾÈỀẺỂẼỄẸỆIÍÌỈĨỊOÔƠÓỐỚÒỒỜỎỔỞÕỖỠỌỘỢUƯÚỨÙỪỦỬŨỮỤỰYÝỲỶỸỴAĂÂÁẮẤÀẰẦẢẲẨÃẴẪẠẶẬĐEÊÉẾÈỀẺỂẼỄẸỆIÍÌỈĨỊOÔƠÓỐỚÒỒỜỎỔỞÕỖỠỌỘỢUƯÚỨÙỪỦỬŨỮỤỰYÝỲỶỸỴAĂÂÁẮẤÀẰẦẢẲẨÃẴẪẠẶẬĐEÊÉẾÈỀẺỂẼỄẸỆIÍÌỈĨỊOÔƠÓỐỚÒỒỜỎỔỞÕỖỠỌỘỢUƯÚỨÙỪỦỬŨỮỤỰYÝỲỶỸỴAĂÂÁẮẤÀẰẦẢẲẨÃẴẪẠẶẬĐEÊÉẾÈỀẺỂẼỄẸỆIÍÌỈĨỊOÔƠÓỐỚÒỒỜỎỔỞÕỖỠỌỘỢUƯÚỨÙỪỦỬŨỮỤỰYÝỲỶỸỴA-Z0-9 ]+"
IMAGE_NAME = "image_croped.jpg"
TEMPLATE_ID = 'template_id'
pattern = re.compile(VN_AND_SPACE_REGEX)
REQUEST_ID = 'requestId'
FOLDER_TYPE = 'folderType'
MAX_NUMBER_OF_TEMPLATE_DATA_BOX = 20
MAX_NUMBER_OF_TEMPLATE_ANCHOR_BOX = 3
NUMBER_OF_ITEM_IN_A_BOX = 4  # 4 coordinates
ESCAPE_VALUE = 'W5@X8#'
USER_MESSAGE = 'user'
PLAN_MESSAGE = 'plan'


class FolderFileType(Enum):
    TEMPLATES = 'templates'
    REQUESTS = 'requests'


class FileCategory(Enum):
    CROP = 'Crop'
    Origin = 'Origin'
    BREAK = 'Break'


class EntityStatus(Enum):
    ACTIVE = 1
    INACTIVE = 0


class TEMPLATE_BOX_TYPE(Enum):
    ANCHOR = 1
    DATA = 2


class ProcessType(Enum):
    TEMPLATE_MATCHING = 2
    ID_CARD = 3
    DRIVER_LICENSE = 4
    INVOICE = 5
    OCR_WITH_BOX = 6
    AP_INVOICE = 7
    FI_INVOICE = 10
    MANULIFE_INVOICE = 11
    SBT_INVOICE = 12

class PlanCode(Enum):
    TRIAL = 'TRIAL'
    BASIC = 'BASIC'
    ADVANCED = 'ADVANCED'

standard_ocr_list = (ProcessType.INVOICE.value, ProcessType.ID_CARD.value, 
                     ProcessType.DRIVER_LICENSE.value, ProcessType.OCR_WITH_BOX.value, ProcessType.FI_INVOICE.value, ProcessType.MANULIFE_INVOICE.value, ProcessType.SBT_INVOICE.value)