
    CgEiD              
          d Z ddlmZmZ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 ddlmZ dd	lmZ dd
lmZmZmZmZ ddlmZ ddlmZ  e       Zej=                  dee          ee       ee      fdededefd       Z ejC                  de       ee       ee      fdededefd       Z"ejG                  de       ee       ee      fdedededefd       Z$ejC                  d       ee       ee      fdedee   dedefd       Z%ejM                  d       ee       ee      fdededefd       Z'y)z;
Endpoints admin pour la gestion des stocks des pharmacies
    )	APIRouterDependsHTTPExceptionstatus)Session)func)get_db)User)PharmacyStock)Product)Partner)PharmacyStockCreatePharmacyStockUpdatePharmacyStockResponsePharmacyStockWithProduct)get_current_admin)Listz/pharmacy/{partner_id})response_model
partner_idcurrent_admindbc                    K   |j                  t              j                  t        j                  | k(        j	                         }|st        t        j                  d      |j                  t        t        j                  j                  d      t        j                  j                  d      t        j                  j                  d            j                  t        t        j                  t        j                  k(        j                  t        j                   | k(        j#                         }g }|D ]B  \  }}}}	t%        j&                  |      }
||
_        ||
_        |	|
_        |j/                  |
       D |S w)z/
    Consultation du stock d'une pharmacie
       Partenaire non trouvéstatus_codedetailproduct_nameproduct_dosageproduct_form)queryr   filteridfirstr   r   HTTP_404_NOT_FOUNDr   r   namelabeldosageformjoin
product_idr   allr   from_ormr   r   r   append)r   r   r   partnerstocksresultstockr   r   r   
stock_datas              I/home/www/lebenam.kofcorporation.com/app/api/v1/endpoints/admin/stocks.pyget_pharmacy_stockr4      s5     hhw&&wzzZ'?@FFHG11+
 	
 XX>*-.>*	
 d))WZZ7f  J.	ce  F=C "9|^\-66u=
".
$2
!".
j!" Ms   E<E>/r2   c                   K   |j                  t              j                  t        j                  | j                  k(        j                         }|st        t        j                  d      |j                  t              j                  t        j                  | j                  k(        j                         }|st        t        j                  d      |j                  t              j                  t        j                  | j                  k(  t        j                  | j                  k(        j                         }|rE| j                  |_        | j                  |_        |j                          |j                  |       |S t        di | j!                         }|j#                  |       |j                          |j                  |       |S w)u;   
    Création ou mise à jour d'un stock de pharmacie
    r   r   u   Produit non trouvé )r    r   r!   r"   r   r#   r   r   r$   r   r*   r   quantity
unit_pricecommitrefreshdictadd)r2   r   r   r.   productexisting_stock	new_stocks          r3   create_or_update_stockrA   =   sl     hhw&&wzzZ5J5J'JKQQSG11+
 	

 hhw&&wzzZ5J5J'JKQQSG11(
 	
 XXm,33  J$9$99  J$9$99 eg 
 ","5"5$.$9$9!
		


>" "6JOO$56	
y
		


9s   GGz/{stock_id}stock_idc                 ~  K   |j                  t              j                  t        j                  | k(        j	                         }|st        t        j                  d      |j                  d      }|j                         D ]  \  }}t        |||        |j                          |j                  |       |S w)u*   
    Mise à jour d'un stock existant
       Stock non trouvér   T)exclude_unset)r    r   r!   r"   r#   r   r   r$   r<   itemssetattrr:   r;   )rB   r2   r   r   r1   update_datafieldvalues           r3   update_stockrK   j   s      HH]#**=+;+;x+GHNNPE11&
 	

 ///5K#))+ %uue$% IIKJJuLs   B;B=z/bulk-update/{partner_id}r/   c                 R  K   |j                  t              j                  t        j                  | k(        j	                         }|st        t        j                  d      d}d}|D ]  }|j                  t              j                  t        j                  |j                  k(        j	                         }|sT|j                  t              j                  t        j                  | k(  t        j                  |j                  k(        j	                         }	|	r(|j                  |	_        |j                  |	_        |dz  }t        | |j                  |j                  |j                        }
|j                  |
       |dz  }" |j                          d| d| dd	S w)
u8   
    Mise à jour en masse du stock d'une pharmacie
    r   r   r      )r   r*   r8   r9   Tu    stocks créés, u    stocks mis à jourr   message)r    r   r!   r"   r#   r   r   r$   r   r*   r   r   r8   r9   r=   r:   )r   r/   r   r   r.   updated_countcreated_countr2   r>   r?   r@   s              r3   bulk_update_stockrR      s     hhw&&wzzZ'?@FFHG11+
 	

 MM 
((7#**7::9N9N+NOUUW -077$$
2$$
(=(==
 %' 	
 &0&9&9N#(2(=(=N%QM%%%00#,,%00	I FF9QM14 IIK #_$5m_DWX s   F%F'c                   K   |j                  t              j                  t        j                  | k(        j	                         }|st        t        j                  d      |j                  |       |j                          dddS w)z 
    Suppression d'un stock
    rD   r   Tu   Stock supprimé avec succèsrN   )
r    r   r!   r"   r#   r   r   r$   deleter:   )rB   r   r   r1   s       r3   delete_stockrU      sz      HH]#**=+;+;x+GHNNPE11&
 	

 IIeIIK 1 s   BB	N)(__doc__fastapir   r   r   r   sqlalchemy.ormr   
sqlalchemyr   app.db.sessionr	   app.models.userr
   app.models.pharmacy_stockr   app.models.productr   app.models.partnerr   app.schemas.pharmacy_stockr   r   r   r   app.core.securityr   typingr   routergetintr4   postrA   putrK   rR   rT   rU   r7       r3   <module>rh      s   > = "  !   3 & &  0 	$T:R5ST ""34&/$$$ 	$ U$L S!67 ""34&/*#** 	* 8*X M*?@ ""34&/	#  		 A4 () ""34&/	22$%2 2 		2 *2h } ""34&/ 	 rg   