from typing import Optional
from pydantic.main import BaseModel
from pydantic.types import Json
from pydantic import Field
from src.core.utils.enums import SettingsInputFieldTypes
from src.apps.base.schemas.common import BaseSchema
from .merchant_common import MerchantSchema


# Shared properties
class MerchantAcceptancesBase(BaseSchema):
    agreement_accept: Optional[str] = Field(description="Merchange Agreement Accept")
    banking_policy_accept: Optional[str] = Field(
        description="Merchant banking Policy Accept"
    )
    merchant_signing: Optional[str] = Field(
        description="Digital Signing of the Merchant"
    )


class MerchantAcceptancesSchema(MerchantAcceptancesBase):
    id: int = Field(description="Id of MerchantAcceptance resource")
    agreement_accept: Optional[str] = Field(description="Merchange Agreement Accept")
    banking_policy_accept: Optional[str] = Field(
        description="Merchant banking Policy Accept"
    )
    merchant_signing: Optional[str] = Field(
        description="Digital Signing of the Merchant"
    )
    merchant: Optional[MerchantSchema] = Field(
        description="Merchant of this MerchantAcceptances resource"
    )


class MerchantAcceptancesCreateRequestSchema(MerchantAcceptancesBase):
    pass


class MerchantAcceptancesUpdateRequestSchema(BaseSchema):
    id: int = Field(description="Id of MerchantAcceptances resource")
    merchant_signing: Optional[str] = Field(
        description="Digitak Signing of the Merchant"
    )
