
    ni\              
       b   S SK JrJrJr  S SKJr  S SKJr  S SKJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJrJrJr  \" S	S
/S9r\R/                  S5      \" \	5      4S\4S jj5       r\R3                  S5      \" \	5      \" \5      4S\S\S\4S jj5       r\R3                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R/                  S5      \" \	5      \" \5      4S\S\S\4S jj5       r\R=                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\RA                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r \R3                  S5      \" \
5      \" \5      4S\S\4S jj5       r!\R/                  S5      \" \	5      \" \5      4S\S\4S jj5       r"g )!    )	APIRouterDependsstatus)JSONResponse)Session)get_current_active_userget_current_superadmin_user)InspectionApiClient)RegionClass)get_db)
RegionListStoreRegionUpdateRegion	UserLoginz/regionsRegions)prefixtagsz/endpoint/listsession_userc                 l   [        5       nUR                  5       (       d  [        [        R                  SSSS.S9$ UR                  5       n[        UR                  S5      (       a  [        R                  O[        R                  UR                  S5      (       a  SOSUR                  S	S
5      US.S9$ )ui   
Catálogo remoto de provincias desde Inspection API (compat: mismo payload que `fetch_provinces_list`).
  QInspection API not configured (INSPECTION_API_USERNAME / INSPECTION_API_PASSWORD)Nr   messagedatastatus_codecontentok     r   OK)	r
   is_configuredr   r   HTTP_503_SERVICE_UNAVAILABLEfetch_regions_listgetHTTP_200_OKHTTP_502_BAD_GATEWAY)r   clientresults      LC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\regions.pyendpoint_listr+      s    
 !"F!!;;n
 	
 &&(F*0**T*:*:F&&@[@[#ZZ--c3zz)T2
     /regiondbc                 x   U R                   c  SOU R                   n[        U5      R                  U R                  UU R                  S9n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S S.S	9$ [        [        R                  S
SUS.S	9$ )Nr   )region_namepageitems_per_pager   error  r   Errorr   r   r   zRegions retrieved successfully)r2   r   get_allr1   per_page
isinstancedictr%   r   r   HTTP_404_NOT_FOUNDr&   )r.   r   r/   
page_valuer)   s        r*   indexr=   )   s     kk)v{{J_$$&& % F &$FJJx$8G$C11!::i9
 	
 &&7
 r,   z/storec                 8   U R                  SS9n[        U5      R                  U5      n[        U[         5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      S S.S	9$ [        [        R                  S
SUS.S	9$ )NTexclude_unsetr   r4     r   zError creating regionr   r      zRegion created successfully)	r:   r   storer9   r%   r   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED)r.   r   r/   region_inputsr)   s        r*   rC   rC   J   s     KKdK3M_""=1F&$FJJx$8G$C==!::i1HI
 	
 ++4
 r,   z
/edit/{id}idc                 v   [        U5      R                  U 5      n[        U[        5      (       ao  UR                  S5      (       d  UR                  S5      S:X  aD  [	        [
        R                  SUR                  S5      =(       d    UR                  SS5      S S.S9$ [	        [
        R                  SS	US.S9$ )
Nr4   r   r5   r   Region not foundr   r   r   zRegion retrieved successfully)r   r%   r9   r:   r   r   r;   r&   rG   r   r/   r)   s       r*   editrK   g   s     _  $F&$VZZ%8%8FJJx<PT[<[11!::g.[&**YHZ2[
 	
 &&6
 r,   z/update/{id}c                 8   UR                  SS9n[        U5      R                  X5      n[        U[         5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      S S.S	9$ [        [        R                  S
SUS.S	9$ )NTr?   r   r4   rA   r   zError updating regionr   r   r   zRegion updated successfully)	r:   r   updater9   r%   r   r   rD   r&   )rG   r.   r   r/   rF   r)   s         r*   rM   rM      s     KKdK3M_##B6F&$FJJx$8G$C==!::i1HI
 	
 &&4
 r,   z/delete/{id}c                    [        U5      R                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      S S.S9$ [        [        R                  SS	US.S9$ )
Nr   r4   r5   r   rI   r   r   r   zRegion deleted successfully)	r   deleter9   r:   r%   r   r   r;   r&   rJ   s       r*   rO   rO      s     _##B'F&$FJJx$8G$C11!::i1CD
 	
 &&4
 r,   z/import_from_inspectionc                    [        5       nUR                  5       (       d  [        [        R                  SSS S.S9$ UR                  5       nUR                  S5      (       d4  [        [        R                  SUR                  S5      =(       d    SUS.S9$ [        U5      R                  U5      n[        U[        5      (       aA  UR                  S	5      S
:X  a,  [        [        R                  SUR                  SS5      S S.S9$ UR                  SS5      nUR                  SS5      nSU SU S3n[        [        R                  SUUS.S9$ )Nr   r   r   r   r   r    r   z*Error al obtener regiones desde Inspectionr   r4   rA   zError al importar regionesimportedr   skippedu%   Importación de regiones finalizada: z nuevas/actualizadas, z
 omitidas.r   )r
   r"   r   r   r#   fetch_regiones_listr%   r'   r   import_from_inspectionr9   r:   rD   r&   )r   r/   r(   remoter)   rQ   rR   msgs           r*   rT   rT      sR   
 !"F!!;;n
 	
 '')F::d33!::i0`4`
 	
 _33F;F&$FJJx$8G$C==!::i1MN
 	
 zz*a(HjjA&G1(;QRYQZZd
eC&&
 r,   z/listc                    [        U5      R                  SSS9n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      S S.S	9$ [        [        R                  S
SUS.S	9$ )Nr   )r2   r3   r   r4   r5   r   zError retrieving regionsr   r   r   z#Regions list retrieved successfully)	r   r7   r9   r:   r%   r   r   r;   r&   )r   r/   r)   s      r*   list_allrX      s    
 _$$!A$>F&$FJJx$8G$C11!::i1KL
 	
 &&<
 r,   N)#fastapir   r   r   fastapi.responsesr   sqlalchemy.ormr   app.backend.auth.auth_userr   r	   )app.backend.classes.inspection_api_clientr
    app.backend.classes.region_classr   app.backend.db.databaser   app.backend.schemasr   r   r   r   regionsr%   r+   postr=   rC   intrK   putrM   rO   rT   rX    r,   r*   <module>rf      sS   . . * " [ I 8 * P P
:YK
8 	,34K,L 	  4 	c &&=>&/ 	 @ 	h &&AB&/ 	 8 	\ &&=>&/ 	 6 	^ &&AB&/	  		 : 	 &&AB&/ 	  6 	'(%&AB&//// )/d 	W%&=>&/ r,   