
    EgEi`              
          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mZmZ ddlmZ dd	lmZ dd
lmZ  e       Zej3                  de       ee       ee	      fdededefd       Zej3                  dee         dd ee       ee	      fdedededefd       Zej?                  de       ee       ee	      fdededefd       Z ej3                  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jK                  d       ee       ee	      fde!dedefd       Z&y)z.
Endpoints admin pour la gestion des produits
    )	APIRouterDependsHTTPExceptionstatus)Session)get_db)User)Product)ProductCreateProductUpdateProductResponse)get_current_admin)ProductService)Listz/stock-status/{product_name})response_modelproduct_namecurrent_admindbc                    K   t        |      }|j                  |       }|st        t        j                  d      |S w)u   
    Récupère l'état du stock global et par partenaire pour un produit donné,
    ainsi que le nombre de demandes par partenaire.
       Produit non trouvéstatus_codedetail)r   get_product_stock_statusr   r   HTTP_404_NOT_FOUND)r   r   r   product_servicestock_statuss        K/home/www/lebenam.kofcorporation.com/app/api/v1/endpoints/admin/products.pyr   r      sF      %R(O";;LIL11(
 	
 s   <>/N	is_activesearchc                 B  K   |j                  t              }| "|j                  t        j                  | k(        }|r2|j                  t        j                  j                  d| d            }|j                  t        j                        j                         }|S w)z>
    Liste de tous les produits (avec filtres optionnels)
    %)queryr
   filterr    nameilikeorder_byall)r    r!   r   r   r$   productss         r   get_productsr+   %   s      HHWEW..);<LL6(!}-
 ~~gll+//1HOs   BBproduct_datac                   K   |j                  t              j                  t        j                  | j                  k(  t        j                  | j                  k(  t        j
                  | j
                  k(        j                         }|rt        t        j                  d      t        di | j                         }|j                  |       |j                          |j                  |       |S w)u(   
    Création d'un nouveau produit
    u   Ce produit existe déjàr    )r$   r
   r%   r&   dosageformfirstr   r   HTTP_400_BAD_REQUESTdictaddcommitrefresh)r,   r   r   existing_productnew_products        r   create_productr9   <   s      xx(//))),---))) eg	  33-
 	

 0L--/0KFF;IIKJJ{s   C0C2z/{product_id}
product_idc                    K   |j                  t              j                  t        j                  | k(        j	                         }|st        t        j                  d      |S w)u   
    Détails d'un produit
    r   r   )r$   r
   r%   idr1   r   r   r   r:   r   r   products       r   get_productr?   Z   sV      hhw&&wzzZ'?@FFHG11(
 	

 Ns   A#A%c                 ~  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 produit
    r   r   T)exclude_unset)r$   r
   r%   r<   r1   r   r   r   r3   itemssetattrr5   r6   )r:   r,   r   r   r>   update_datafieldvalues           r   update_productrG   m   s      hhw&&wzzZ'?@FFHG11(
 	

 ##$#7K#))+ 'u&' IIKJJwNs   B;B=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 produit
    r   r   Tu   Produit supprimé avec succès)r   message)
r$   r
   r%   r<   r1   r   r   r   deleter5   r=   s       r   delete_productrK      sx      hhw&&wzzZ'?@FFHG11(
 	

 IIgIIK 3 s   BB	)'__doc__fastapir   r   r   r   sqlalchemy.ormr   app.db.sessionr   app.models.userr	   app.models.productr
   app.schemas.productr   r   r   app.core.securityr   app.services.product_servicer   typingr   routergetr3   strr   boolr+   postr9   intr?   putrG   rJ   rK   r.       r   <module>r^      s   > = " !   & M M / 7 	*4@ ""34&/ 	 A& C_ 56!"34&/	  		 7, S1 ""34&/ 	 2: OO< ""34&/ 	 =$ OO< ""34&/	  		 =4  ""34&/ 	  r]   