
    Ci0              	          d dl mZmZmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ  e       Z eee	d      Zded	ed
efdZded
efdZej)                  d      ddedefd       Zej)                  d      dedefd       Zej/                  d ee       e ed            g      dedefd       Zej3                  d ee       e ed            g      defd       Zy)    )	APIRouterHTTPExceptionRequestDepends)ProductDatabaseModel)	MONGO_URIDB_NAME)requires_permission)verify_turnstileproducts)db_uridb_namecollection_namerequestvaluereturnc                     t        |xs d      j                         }|sy|j                  d      r|S |j                  d      }| j                   d| S )N http/zuploads/upload_img/)strstrip
startswithlstripbase_url)r   r   raws      E/var/www/pod-logistic/pod-api/controller/public/product_controller.py_format_upload_urlr      sV    
ekr

 
 
"C
~~f

**S/C23%88    update_datac                 V   t        |       }d|v r|d= |j                  dd      xs d|d<   |j                  dg       xs g |d<   |j                  dg       xs g |d<   |j                  dg       xs g |d<   |j                  dg       xs g |d<   |j                  dg       xs g |d<   |S )	Niddescriptionr   colorsstylesvariantsshippingRates	sizeGuide)dictget)r    
normalizeds     r   _normalize_update_payloadr,      s    k"Jzt *}b A GRJ}%>>(B7=2Jx%>>(B7=2Jx'^^J;ArJz",..""E"KJ(nn["=CJ{r   z	/productsN
categoryIdc                 t  K   	 i }|r||d<   t         j                  j                  |      }g }|D ]  }|j                  dg       }t	        |      dkD  r|d   nd}|rt        | |      nd}|j                  dd      |j                  dd      |j                  dd      j                         |j                  dd      t        |j                  dd            |j                  dd      |j                  d	d
      |d}	|j                  |	        d|dS # t        $ r}
dt        |
      dcY d }
~
S d }
~
ww xY ww)NcategoryNameimagesr   r   	productIdtitlepricebadge
badgeColor#3b82f6)r"   r2   r-   r/   r3   r4   r5   imageFerrordataTr9   message)db_model
collectionfindr*   lenr   lowerfloatappend	Exceptionr   )r   r-   queryproducts_cursorresult_listpr0   img_name	image_urlitemes              r   get_public_productsrM   ,   s;    2$.E.!"--2259  	%AUU8R(F$'K!OvayHAI*7H=rI eeK,w+eeNB7==? !nb 9quuWa01w+eeL)<"	D t$!	%& 
 	
  2#a&112s5   D8DD D8	D5D0*D5+D80D55D8z/products/{product_id}
product_idc                   K   	 t         j                  j                  d|i      }|st        dd      |j	                  dg       }g }|D ]!  }|j                  |rt        | |      nd       # |D cg c]  }|s|	 }}|sdg}|j	                  dg       xs g }g }|D ]@  }|j                  |j	                  d	d      t        | |j	                  d
d            d       B |j	                  dd      |j	                  dd      |j	                  dd      j                         |j	                  dd      t        |j	                  dd            |j	                  dd      |j	                  dd      |j	                  dd      ||j	                  dg       |j	                  ddddd      d}	|j	                  d      r|j	                  d      |	d<   |r||	d<   |j	                  d      r|j	                  d      |	d<   |j	                  d      r|j	                  d      |	d<   |j	                  d      r|j	                  d      |	d<   d|	d S c c}w # t        $ r}
|
d }
~
wt        $ r}d!t        |      d"cY d }~S d }~ww xY ww)#Nr1     zProduct not foundstatus_codedetailr0   r   zhttps://via.placeholder.com/500r%   name	thumbnail)rT   rU   r2   r/   r3   r   r#   r4   r5   r6   sizesdesignTemplatei  i  i,  )widthheightdpi)r"   r2   r-   r/   r3   r#   r4   r5   r0   rV   rW   r$   r&   r'   r(   Fr8   Tr;   )r=   r>   find_oner   r*   rC   r   rA   rB   rD   r   )r   rN   rH   
raw_imagesformatted_imagesimg
raw_stylesformatted_stylesstylerK   herL   s               r   get_product_detailrc   P   s    @2((+z)BCC8KLLUU8R(
 	UC##$6w$DQST	U ,<CCsCCC ABUU8R(.B
 	E##		&"-/;PR9ST% 	 %%R(UU7B'%%399;EE."5155!,-553UU7B'%%i8&UU7B'ee$47 
$ 55?UU8_DN-DN55 uuZ0D55!$%EE/$:D!55 !k 2D 
 	
] Dd   2#a&112sZ   JA.I 2I:I>GI 
JI 	I?II?'I:4I?5J:I??Jproduct_management)dependenciesc                   K   	 |j                          d {   }t        j                  j                  d| i      }|st	        dd      t        |      }t        j                  j                  d| id|i      }|j                  dk(  rddd	S dd
d	S 7 |# t        $ r}|d }~wt        $ r}ddt        |       d	cY d }~S d }~ww xY ww)Nr1   rP   u2   Không tìm thấy sản phẩm để cập nhậtrQ   z$setr   Tu5   Dữ liệu không có thay đổi so với bản cũsuccessr<   u'   Cập nhật sản phẩm thành công!Fu   Lỗi hệ thống: )
jsonr=   r>   r[   r   r,   
update_onemodified_countrD   r   )rN   r   r    existing_productnormalized_update_dataresultrb   rL   s           r   update_productro      s     
N#LLN*#..77j8QRC8lmm!:;!G$$//*%+,

   A%#0ghh @
 	
! +(   N /CCF8-LMMNs]   CB BA6B CB CB 	CB!!C-C=C>CCCc                   K   	 t         j                  j                  d| i      }|j                  dk(  rt	        dd      dd|  dd	S # t        $ r}|d }~wt
        $ r}d
dt        |       d	cY d }~S d }~ww xY ww)Nr1   r   rP   uC   Sản phẩm không tồn tại hoặc đã bị xóa trước đórQ   Tu$   Đã xóa vĩnh viễn sản phẩm !rg   Fu   Lỗi khi xóa: )r=   r>   
delete_onedeleted_countr   rD   r   )rN   rn   rb   rL   s       r   delete_productrt      s     
J$$//j0IJ1$C8}~~ =j\K
 	
   J /?Ax-HIIJsA   A?AA
 	A?
	A<AA<!A71A<2A?7A<<A?)N)fastapir   r   r   r   model.productr   MongoDBConnectionr   r	   utils.auth_helperr
   utils.turnstile_helperr   routerr=   r   r   r)   r,   r*   rM   rc   putro   deletert    r   r   <module>r~      sU   > > . 0 1 3		9 	9 	9 	94 D   K 2w  2C  2  2F $%A2g A23 A2 &A2H *+W5HI]5^-_`  NS N7 N	N8 *+W5HI]5^-_`  JS J	Jr   