from enum import Enum


class ApprovalStatus(str, Enum):
    APPROVAL_NOT_REQUIRED = "APPROVAL_NOT_REQUIRED"
    EVIDENCE_NEEDED = "EVIDENCE_NEEDED"
    EVIDENCE_PENDING_APPROVAL = "EVIDENCE_PENDING_APPROVAL"
    EVIDENCE_APPROVED = "EVIDENCE_APPROVED"


class MembersMemberConsumptionEvidenceSubmissionStatusChoices(str, Enum):
    EVIDENCE_NEEDED = "EVIDENCE_NEEDED"
    EVIDENCE_PENDING_APPROVAL = "EVIDENCE_PENDING_APPROVAL"
    EVIDENCE_APPROVED = "EVIDENCE_APPROVED"


class GenerationGenerationFarmGenerationTypeChoices(str, Enum):
    WIND = "WIND"
    SOL = "SOL"


class GenerationGenerationFarmOperationalStatusChoices(str, Enum):
    NA = "NA"
    PRELIMINARY = "PRELIMINARY"
    PLANNING = "PLANNING"
    CONTRACTED = "CONTRACTED"
    UNDER_CONSTRUCTION = "UNDER_CONSTRUCTION"
    OPERATIONAL = "OPERATIONAL"
    SUSPENDED = "SUSPENDED"
    DECOMMISSIONED = "DECOMMISSIONED"
    CLOSED = "CLOSED"


class GenerationDataTitle(str, Enum):
    TODAY = "TODAY"
    NEXT_4_DAYS = "NEXT_4_DAYS"
    NEXT_14_DAYS = "NEXT_14_DAYS"
    LAST_7_DAYS = "LAST_7_DAYS"
    LAST_30_DAYS = "LAST_30_DAYS"


class Period(str, Enum):
    Day = "Day"
    Week = "Week"
    Month = "Month"
    Year = "Year"


class CoopCoopStatusChoices(str, Enum):
    RESERVATIONS_OPEN = "RESERVATIONS_OPEN"
    RESERVATIONS_CLOSED = "RESERVATIONS_CLOSED"
    OWNERSHIP_OPEN_RESERVED_MEMBERS_ONLY = "OWNERSHIP_OPEN_RESERVED_MEMBERS_ONLY"
    OWNERSHIP_OPEN = "OWNERSHIP_OPEN"
    FULL = "FULL"
    BACKFILL = "BACKFILL"
    CLOSED = "CLOSED"


class AccountType(str, Enum):
    HOUSEHOLD = "HOUSEHOLD"
    SMALL_BUSINESS = "SMALL_BUSINESS"
    MEDIUM_BUSINESS = "MEDIUM_BUSINESS"
    LARGE_BUSINESS = "LARGE_BUSINESS"


class BusinessSector(str, Enum):
    ACCOUNTING = "ACCOUNTING"
    ADMINISTRATION_AND_OFFICE_SUPPORT = "ADMINISTRATION_AND_OFFICE_SUPPORT"
    ADVERTISING_AND_ARTS_AND_MEDIA = "ADVERTISING_AND_ARTS_AND_MEDIA"
    BANKING_AND_FINANCIAL_SERVICES = "BANKING_AND_FINANCIAL_SERVICES"
    CALL_CENTRE_AND_CUSTOMER_SERVICE = "CALL_CENTRE_AND_CUSTOMER_SERVICE"
    COMMUNITY_SERVICES_AND_DEVELOPMENT = "COMMUNITY_SERVICES_AND_DEVELOPMENT"
    CONSTRUCTION = "CONSTRUCTION"
    CONSULTING_AND_STRATEGY = "CONSULTING_AND_STRATEGY"
    DESIGN_AND_ARCHITECTURE = "DESIGN_AND_ARCHITECTURE"
    EDUCATION_AND_TRAINING = "EDUCATION_AND_TRAINING"
    ENGINEERING = "ENGINEERING"
    FARMING_AND_ANIMALS_AND_CONSERVATION = "FARMING_AND_ANIMALS_AND_CONSERVATION"
    GOVERNMENT_AND_DEFENCE = "GOVERNMENT_AND_DEFENCE"
    HEALTHCARE_AND_MEDICAL = "HEALTHCARE_AND_MEDICAL"
    HOSPITALITY_AND_TOURISM = "HOSPITALITY_AND_TOURISM"
    HUMAN_RESOURCES_AND_RECRUITMENT = "HUMAN_RESOURCES_AND_RECRUITMENT"
    INFORMATION_AND_COMMUNICATION_TECHNOLOGY = (
        "INFORMATION_AND_COMMUNICATION_TECHNOLOGY"
    )
    INSURANCE_AND_SUPERANNUATION = "INSURANCE_AND_SUPERANNUATION"
    LEGAL = "LEGAL"
    MANUFACTURING_AND_TRANSPORT_AND_LOGISTICS = (
        "MANUFACTURING_AND_TRANSPORT_AND_LOGISTICS"
    )
    MARKETING_AND_COMMUNICATIONS = "MARKETING_AND_COMMUNICATIONS"
    MINING_AND_RESOURCES_AND_ENERGY = "MINING_AND_RESOURCES_AND_ENERGY"
    REAL_ESTATE_AND_PROPERTY = "REAL_ESTATE_AND_PROPERTY"
    RETAIL_AND_CONSUMER_PRODUCTS = "RETAIL_AND_CONSUMER_PRODUCTS"
    SALES = "SALES"
    SCIENCE_AND_TECHNOLOGY = "SCIENCE_AND_TECHNOLOGY"
    SPORT_AND_RECREATION = "SPORT_AND_RECREATION"
    TRADES_AND_SERVICES = "TRADES_AND_SERVICES"
    OTHER = "OTHER"


class BusinessType(str, Enum):
    SOLE_TRADER = "SOLE_TRADER"
    PARTNERSHIP = "PARTNERSHIP"
    LIMITED_LIABILITY_PARTNERSHIP = "LIMITED_LIABILITY_PARTNERSHIP"
    LIMITED_COMPANY = "LIMITED_COMPANY"
    SOCIAL_ENTERPRISE = "SOCIAL_ENTERPRISE"
    CHARITY = "CHARITY"
    PUBLIC_SECTOR = "PUBLIC_SECTOR"
    OTHER = "OTHER"


class PaymentsPaymentCategoryChoices(str, Enum):
    JOINING_FEE = "JOINING_FEE"
    GIFT_VOUCHER = "GIFT_VOUCHER"
    ORDER = "ORDER"


class InvoiceType(str, Enum):
    RESERVATION_RECEIPT = "RESERVATION_RECEIPT"
    WATTAGE_AMOUNT = "WATTAGE_AMOUNT"
    ARRANGEMENT_FEE = "ARRANGEMENT_FEE"
    GIFT_VOUCHER = "GIFT_VOUCHER"
    INVOICE = "INVOICE"


class PaymentType(str, Enum):
    RESERVATION_FEE = "RESERVATION_FEE"
    GIFT_VOUCHER = "GIFT_VOUCHER"
    MONTHLY_INSTALMENT = "MONTHLY_INSTALMENT"
    INITIAL_INSTALMENT = "INITIAL_INSTALMENT"
    ONE_TIME_PAYMENT = "ONE_TIME_PAYMENT"
    PAYMENT = "PAYMENT"


class PaymentStatus(str, Enum):
    PAID = "PAID"
    FAILED = "FAILED"
    REFUNDED = "REFUNDED"
    UPCOMING = "UPCOMING"
    OVERDUE = "OVERDUE"


class CrmUserMemoChannelChoices(str, Enum):
    DIRECT_EMAIL = "DIRECT_EMAIL"
    INFO = "INFO"
    HELP = "HELP"
    CONTACT_US = "CONTACT_US"
    EMPLOYER = "EMPLOYER"
    BUSINESS = "BUSINESS"
    OTHER = "OTHER"


class GetMemberOctopusConsumptionDataTitle(str, Enum):
    LAST_7_DAYS = "LAST_7_DAYS"
    LAST_30_DAYS = "LAST_30_DAYS"


class SurveyQuestionChoiceTypeChoices(str, Enum):
    MULTIPLE_CHOICE = "MULTIPLE_CHOICE"
    YES_NO = "YES_NO"
    RADIO = "RADIO"
    TEXT = "TEXT"
    NUMBER = "NUMBER"


class StripePaymentType(str, Enum):
    CARD = "CARD"


class CardBrandType(str, Enum):
    OTHER = "OTHER"
    VISA = "VISA"
    MASTERCARD = "MASTERCARD"
