
    /i                         d dl m Z  d dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZ  G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Zy)    )datetime)OptionalList)UUID)	BaseModelField
ConfigDictcomputed_fieldfield_validatorc                   j    e Zd ZU dZeed<   eed<   eed<   eed<   dZee   ed<   e	ed<    e
d	
      Zy)VendorSimplez*Simple vendor schema for nested responses.idname
brand_nameemailNwebsite_url	is_activeTfrom_attributes)__name__
__module____qualname____doc__r   __annotations__strr   r   boolr	   model_config     ;/var/www/html/marco-python-backend/app/schemas/violation.pyr   r      s6    4H
IOJ!%K#%Od3Lr   r   c                      e Zd ZU  edd      Zeed<    edd      Zeed<    edd      Z	eed<    edd      Z
eed	<   eed
<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<    ed      Zeed<   y)ViolationBase.   
min_lengthproduct_namer   gtmspscraped_priceurlviolation_dateN	vendor_idvendor_namemarketplacebarcode_numberreference_id
registered)defaultsource_type)r   r   r   r   r&   r   r   r)   floatr*   r+   r   r-   r   r   r.   r/   r0   r1   r4   r   r   r    r"   r"      s    ca0L#0sq!C! +M5+SQ'C' $Ix~$!%K#%!%K#%$(NHSM("&L(3-&\2K2r   r"   c                       e Zd Zy)ViolationCreateN)r   r   r   r   r   r    r7   r7   !   s    r   r7   c                       e Zd ZU  edd      Zee   ed<    edd      Zee	   ed<    edd      Z
ee	   ed<   dZee   ed	<   dZee   ed
<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   y)ViolationUpdateNr#   r$   r&   r   r'   r)   r*   r+   r,   r.   r/   r0   r1   )r   r   r   r   r&   r   r   r   r)   r5   r*   r+   r,   r   r.   r/   r0   r1   r   r   r    r9   r9   %   s    "'";L(3-; !,C%,%*4A%6M8E?6C#)-NHX&-!%K#%!%K#%$(NHSM("&L(3-&r   r9   c                      e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   dZ	e
e   ed	<   dZe
e   ed
<   dZe
e   ed<   dZe
e   ed<   dZe
e   ed<   eed<   dZe
e   ed<   dZe
e   ed<   dZeed<   dZe
e   ed<   dZe
e   ed<   eed<   eed<   dZe
e   ed<    ed
d      ed               Zeedefd              Z ed      Zy)ViolationResponsez1Base violation response with all required fields.r   r&   r)   r*   r+   r,   Nr-   r.   r/   r0   r1   r4   price_differencepercentage_differencer#   confirmation_countlast_confirmed_datenotification_sent_at
created_at
updated_atvendorafter)modec                     |r|S |j                   j                  d      r4|j                   j                  d      r|j                   d   j                  S |S )zQFor registered violations, get vendor_name from vendor relationship if available.rC   r-   )datagetr   )clsvinfos      r    populate_vendor_namez&ViolationResponse.populate_vendor_nameH   sE    
 H99=="tyy}}['A99X&+++r   returnc                 "    | j                   rdS dS )z2Return status based on notification_sent_at field.notifiedopen)r@   )selfs    r    statuszViolationResponse.statusT   s     "66zBFBr   Tr   )r   r   r   r   r   r   r   r5   r   r-   r   r.   r/   r0   r1   r<   r=   r>   intr?   r@   rC   r   r   classmethodrL   r
   propertyrR   r	   r   r   r   r    r;   r;   1   s)   ;H	J	H $Ix~$!%K#%!%K#%$(NHSM("&L(3-&(,huo,-18E?1.2(+2/3(8,3%)FH\")]1  2 C C  C d3Lr   r;   c                   <    e Zd ZU ee   ed<   eed<   eed<   eed<   y)ViolationListResponseitemstotalpagelimitN)r   r   r   r   r;   r   rS   r   r   r    rW   rW   ]   s    !""J
IJr   rW   N)r   typingr   r   uuidr   pydanticr   r   r	   r
   r   r   r"   r7   r9   r;   rW   r   r   r    <module>r_      s]     !  R R	49 	43I 3	m 		'i 	')4	 )4XI r   