from typing import Optional
from pydantic import Field
from app.utils.schemas_utils import CustomModel

class catchmentPotentialCreat(CustomModel):
    ISEC_Segment: int 
    number_of_households: int 
    percentage_of_segment: float
    # Assumptions : str
    # Sources : str
    group_id : int

class TotalPotentialResponse(CustomModel):
    # catch_id: int
    group_id: int
    potential_number_of_households: int

class GetPotentialResponse(catchmentPotentialCreat):
    catch_id: int 
    potential_number_of_households:int
    pass

class UpdatePotential(CustomModel):
    catch_id: int 
    ISEC_Segment: int | None = Field(default=None)
    number_of_households: int | None = Field(default=None)
    percentage_of_segment: float | None = Field(default=None)
    group_id : int | None = Field(default=None)

class catchmentPotentialResponse(CustomModel):
    catch_id: int
    ISEC_Segment: int 
    number_of_households: int 
    percentage_of_segment: float 
    potential_number_of_households: int
    group_id : int

class MainDataCreate(CustomModel):
    category_identifier: Optional[str] = ""
    format_type: Optional[str] = ""
    reference_retailer: Optional[str] = ""
    no_of_stores: Optional[float] = None
    description: Optional[str] = ""
    no_of_cats_l: Optional[float] = None
    no_of_cats_m: Optional[float] = None
    no_of_cats_h: Optional[float] = None
    indicative_size: Optional[float] = None
    capital_available: Optional[float] = None
    approx_investment: Optional[float] = None
    comp_intensity_l: Optional[float] = None
    comp_intensity_m: Optional[float] = None
    comp_intensity_h: Optional[float] = None
    tech_inv_h: Optional[float] = None
    tech_inv_m: Optional[float] = None
    tech_inv_l: Optional[float] = None
    spillage_h: Optional[float] = None
    spillage_l: Optional[float] = None
    services_h: Optional[float] = None
    services_m: Optional[float] = None
    services_l: Optional[float] = None    

class MainDataResponse(CustomModel):
    category_identifier: Optional[str]
    format_type: Optional[str]
    reference_retailer: Optional[str]
    no_of_stores: Optional[float] 
    description: Optional[str]
    no_of_cats_l: Optional[float]
    no_of_cats_m: Optional[float]
    no_of_cats_h: Optional[float] 
    indicative_size: Optional[float]
    capital_available: Optional[float]
    approx_investment: Optional[float] 
    comp_intensity_l: Optional[float] 
    comp_intensity_m: Optional[float]
    comp_intensity_h: Optional[float]
    tech_inv_h: Optional[float]
    tech_inv_m: Optional[float]
    tech_inv_l: Optional[float]
    spillage_h: Optional[float] 
    spillage_l: Optional[float]
    services_h: Optional[float]
    services_m: Optional[float]
    services_l: Optional[float]      