
    is              
       H   d dl mZmZmZ d dlmZ d dl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mZmZmZ  ed	d
g      Zej/                  d       ee	      fdefd       Zej3                  d       ee	       ee      fdededefd       Zej3                  d       ee
       ee      fdededefd       Zej/                  d       ee	       ee      fdededefd       Zej=                  d       ee
       ee      fdedededefd       ZejA                  d       ee
       ee      fdededefd       Z ej3                  d       ee
       ee      fdedefd       Z!ej/                  d       ee	       ee      fdedefd       Z"y )!    )	APIRouterDependsstatus)JSONResponse)Session)get_current_active_userget_current_superadmin_user)CommuneClass)InspectionApiClient)get_db)CommuneListStoreCommuneUpdateCommune	UserLoginz	/communesCommunes)prefixtagsz/endpoint/listsession_userc                 Z   t               }|j                         st        t        j                  dddd      S |j                         }t        |j                  d      rt        j                  nt        j                  |j                  d      rdnd|j                  d	d
      |d      S )u1   Catálogo remoto de comunas desde Inspection API.  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_communes_listgetHTTP_200_OKHTTP_502_BAD_GATEWAY)r   clientresults      D/var/www/pie360backend.cl/public_html/app/backend/routes/communes.pyendpoint_listr+      s     !"F!;;n
 	
 '')F*0**T*:F&&@[@[#ZZ-c3zz)T2
     /communedbc                    | j                   dn| j                   }t        |      j                  | j                  | j                  || j
                        }t        |t              rC|j                  d      dk(  r/t        t        j                  d|j                  dd      d d	      S t        t        j                  d
d|d	      S )Nr   )commune_name	region_idpageitems_per_pager   error  r   Errorr   r   r   zCommunes retrieved successfully)r3   r
   get_allr1   r2   per_page
isinstancedictr%   r   r   HTTP_404_NOT_FOUNDr&   )r.   r   r/   
page_valuer)   s        r*   indexr>   '   s     ll*J"%%))##''	 & F &$FJJx$8G$C11!::i9
 	
 &&8
 r,   z/storec                 >   | j                  d      }t        |      j                  |      }t        |t               rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      d d	      S t        t        j                  d
d|d	      S )NTexclude_unsetr   r5     r   zError creating communer   r      zCommune created successfully)	r;   r
   storer:   r%   r   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED)r.   r   r/   commune_inputsr)   s        r*   rD   rD   I   s     \\\5N"##N3F&$FJJx$8G$C==!::i1IJ
 	
 ++5
 r,   z
/edit/{id}idc                 b   t        |      j                  |       }t        |t              rg|j                  d      s|j                  d      dk(  rBt	        t
        j                  d|j                  d      xs |j                  dd      d d      S t	        t
        j                  dd	|d      S )
Nr5   r   r6   r   Commune not foundr   r   r   zCommune retrieved successfully)r
   r%   r:   r;   r   r   r<   r&   rH   r   r/   r)   s       r*   editrL   f   s     "!!"%F&$VZZ%8FJJx<PT[<[11!::g.\&**YH[2\
 	
 &&7
 r,   z/update/{id}c                 @   |j                  d      }t        |      j                  | |      }t        |t               rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      d d	      S t        t        j                  d
d|d	      S )NTr@   r   r5   rB   r   zError updating communer   r   r   zCommune updated successfully)	r;   r
   updater:   r%   r   r   rE   r&   )rH   r.   r   r/   rG   r)   s         r*   rN   rN      s     \\\5N"$$R8F&$FJJx$8G$C==!::i1IJ
 	
 &&5
 r,   z/delete/{id}c                    t        |      j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      d d      S t        t        j                  dd	|d      S )
Nr   r5   r6   r   rJ   r   r   r   zCommune deleted successfully)	r
   deleter:   r;   r%   r   r   r<   r&   rK   s       r*   rP   rP      s     "$$R(F&$FJJx$8G$C11!::i1DE
 	
 &&5
 r,   z/import_from_inspectionc                    t               }|j                         st        t        j                  ddd d      S |j                         }|j                  d      s2t        t        j                  d|j                  d      xs d|d      S t        |      j                  |      }t        |t              rC|j                  d	      d
k(  r/t        t        j                  d|j                  dd      d d      S |j                  dd      }|j                  dd      }d| d| d}t        t        j                  d||d      S )Nr   r   r   r   r   r    r   z)Error al obtener comunas desde Inspectionr   r5   rB   zError al importar comunasimportedr   skippedu$   Importación de comunas finalizada: z nuevas/actualizadas, z
 omitidas.r   )r   r"   r   r   r#   r$   r%   r'   r
   import_from_inspectionr:   r;   rE   r&   )r   r/   r(   remoter)   rR   rS   msgs           r*   rT   rT      sJ   
 !"F!;;n
 	
 '')F::d33!::i0_4_
 	
 "44V<F&$FJJx$8G$C==!::i1LM
 	
 zz*a(HjjA&G0
:PQXPYYc
dC&&
 r,   z/listc                    t        |      j                  dd      }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      d d	      S t        t        j                  d
d|d	      S )Nr   )r3   r4   r   r5   r6   r   zError retrieving communesr   r   r   z$Communes list retrieved successfully)	r
   r8   r:   r;   r%   r   r   r<   r&   )r   r/   r)   s      r*   list_allrX      s    
 "%%1Q%?F&$FJJx$8G$C11!::i1LM
 	
 &&=
 r,   N)#fastapir   r   r   fastapi.responsesr   sqlalchemy.ormr   app.backend.auth.auth_userr   r	   !app.backend.classes.commune_classr
   )app.backend.classes.inspection_api_clientr   app.backend.db.databaser   app.backend.schemasr   r   r   r   communesr%   r+   postr>   rD   intrL   putrN   rP   rT   rX    r,   r*   <module>rf      sS   . . * " [ : I * S SKzl; 
,34K,L 	   0 
s &&=>&/ 	 B 
x &&AB&/ 	 8 
l &&=>&/ 	 6 
n &&AB&/	  		 : 
  &&AB&/ 	 !6 
()%&AB&//// */d 
g%&=>&/ r,   