
    i                     d   d dl m Z  d dlmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZ  eddg          Z ed          Z G d de          Z  G d de          Z!de"defdZ#dee"ef         dee"ef         fdZ$ e	e          fdedee"ef         fdZ%e&                    dej'                   ed           e
d           ed           ed           e	e%          fd e"d!ed"ee"         d#e(fd$            Z)e*                    d%ej+                  d/d&ee(         fd'            Z,e*                    d(ej+                  d)e"fd*            Z-e.                    d+ej+                   ed           e
d           ed           ed           e	e%          fd)e"d ee"         d!ee         d"ee"         d#ee(         f
d,            Z/e0                    d-ej+                   e	e%          fd)e"fd.            Z1dS )0    )datetime)AnyDictOptional)ObjectId)	APIRouterDependsFileFormHTTPException
UploadFilestatus)HTTPAuthorizationCredentials
HTTPBearer)	BaseModel)get_col)Banner)
verify_jwt)delete_image_from_cloudinaryextract_public_id_from_urlupload_image_to_cloudinaryz/bannersbanners)prefixtagsF)
auto_errorc                   B    e Zd ZU eed<   dZee         ed<   dZeed<   dS )BannerCreatetitleN	smallTextTisActive)	__name__
__module____qualname__str__annotations__r   r   r    bool     $D:\Nbitz\app\routers\bannerRouter.pyr   r      s?         JJJ#Ix}###Hdr(   r   c                   x    e Zd ZU 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S )BannerUpdateNr   imager   r    )r!   r"   r#   r   r   r$   r%   r,   r   r    r&   r'   r(   r)   r+   r+      sb         E8C=E8C=#Ix}####Hhtn#####r(   r+   id_strreturnc                 ~    	 t          |           S # t          $ r!}t          t          j        d          |d }~ww xY w)NzInvalid identifierstatus_codedetail)r   	Exceptionr   r   HTTP_400_BAD_REQUEST)r-   excs     r)   _ensure_object_idr6   $   sS    k k k k(CL`aaagjjks    
<7<docc           	          t          | d                   | d         | d         |                     d          |                     dd          |                     d          |                     d          d	S )
N_idr   r,   r   r    T	createdAt	updatedAt)idr   r,   r   r    r:   r;   )r$   get)r7   s    r)   _serialize_bannerr>   +   sj    #e*ooWWWW[))GGJ--WW[))WW[))  r(   credentialsc                    | st          t          j        d          t          | j                  \  }}|r|st          t          j        d          |                    d          dk    rt          t          j        d          t          d          }|                    dt          |d	                   i          }|st          t          j        d
          |S )NzNot authenticatedr0   zInvalid tokenroleadminzAdmin access requiredadminsr9   subzAdmin not found)
r   r   HTTP_401_UNAUTHORIZEDr   r?   r=   HTTP_403_FORBIDDENr   find_oner6   )r?   okpayloadrC   rB   s        r)   _require_adminrJ   7   s     b(DM`aaaa[455KB ^W ^(D_]]]]{{6g%%(AJabbbbXFOOU$5gen$E$EFGGE `(DM^____Lr(   z/create)r1   .NTr   r,   r   r    c                    K   t          d          }t          |d          }t          j                    }| |||||d}|                    |          }	|	j        |d<   t          |          S )Nr   folder)r   r,   r   r    r:   r;   r9   )r   r   r   utcnow
insert_oneinserted_idr>   )
r   r,   r   r    _adminr   	image_urlnowrI   ress
             r)   create_bannerrU   F   s       i  G +5CCCI
/

C G 

W
%
%C_GENW%%%r(   z/get/all	is_activec                 p    t          d          }i }| | |d<   d |                    |          D             S )Nr   r    c                 ,    g | ]}t          |          S r'   )r>   ).0r7   s     r)   
<listcomp>z list_banners.<locals>.<listcomp>g   s!    BBBsc""BBBr(   )r   find)rV   r   querys      r)   list_bannersr]   a   sD    i  GE%jBBgll5.A.ABBBBr(   z/getbyid/{banner_id}	banner_idc                     t          d          }t          |           }|                    d|i          }|st          t          j        d          t          |          S )Nr   r9   Banner not foundr0   )r   r6   rG   r   r   HTTP_404_NOT_FOUNDr>   )r^   r   oidr7   s       r)   
get_bannerrc   j   sa    i  G
I
&
&C


E3<
(
(C ^(AJ\]]]]S!!!r(   z/update/{banner_id}c                 X  K   t          d          }t          |           }|                    d|i          }|st          t          j        d          i }	|||	d<   |||	d<   |||	d<   |K|                    d          }
|
r t          |
          }|rt          |           t          |d	          |	d<   |	st          t          j
        d
          t          j                    |	d<   |                    d|id|	i           |                    d|i          }t          |          S )Nr   r9   r`   r0   r   r   r    r,   rL   zNo fields to updater;   z$set)r   r6   rG   r   r   ra   r=   r   r   r   r4   r   rN   
update_oner>   )r^   r   r,   r   r    rQ   r   rb   r7   rI   old_image_url	public_idupdated_docs                r)   update_bannerri   t   s_      i  G
I
&
&C


E3<
(
(C ^(AJ\]]]] G (&
(( 	82=AAI 8,Y777 6eINNN c(CLabbbb#?,,GKs|fg%6777""E3<00K[)))r(   z/delete/{banner_id}c                 J   t          d          }t          |           }|                    d|i          }|st          t          j        d          |                    d          }|r t          |          }|rt          |           |	                    d|i           ddiS )Nr   r9   r`   r0   r,   messagezBanner deleted successfully)
r   r6   rG   r   r   ra   r=   r   r   
delete_one)r^   rQ   r   rb   r7   rR   rg   s          r)   delete_bannerrm      s    i  G
I
&
&C


E3<
(
(C ^(AJ\]]]]   I 4.y99	 	4(333s|$$$455r(   )N)2r   typingr   r   r   bsonr   fastapir   r	   r
   r   r   r   r   fastapi.securityr   r   pydanticr   	app.db.dbr   app.models.bannerr   app.utility.securityr   app.utility.cloudinary_utilsr   r   r   routerauth_schemer   r+   r$   r6   r>   rJ   postHTTP_201_CREATEDr&   rU   r=   HTTP_200_OKr]   rc   putri   deleterm   r'   r(   r)   <module>r~      s]         & & & & & & & & & &       U U U U U U U U U U U U U U U U U U E E E E E E E E             $ $ $ $ $ $ + + + + + +          
*I;	7	7	7jE***    9   $ $ $ $ $9 $ $ $kc kh k k k k	4S> 	d38n 	 	 	 	 @Gw{?S?S   < X\]`be]eXf     YF$;<<cS		#tDzzT$ZZ7>""& &&& }& 	& & & =<&4 JF$677C CHTN C C C 87C "0BCC"# " " " DC" !v/ABB  4::"&$t**#tDzz#tDzz7>""'* '*'*C='* J'* }	'*
 tn'* '* '* CB'*T $&2DEE)0)@)@ 6 6S 6 6 6 FE6 6 6r(   