
    ni$                         S SK J r   S SKJrJrJrJr  S SKJr  S SKJ	r	J
r
  S\\\4   S\\\\4      4S jrS\S\\   4S	 jrS
\\\4   S\\   4S jrS
\\\4   S\\   4S jr " S S5      rg)    )datetime)AnyDictListOptional)func)ProvinceModelRegionModelinspection_bodyreturnc                     U R                  S5      (       d  / $ U R                  S5      n[        U[        5      (       a*  U Vs/ s H  n[        U[        5      (       d  M  UPM     sn$ / $ s  snf )Nokdata)get
isinstancelistdict)r   rawrs      TC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\province_class.py_extract_inspection_rowsr   	   s]    t$$	


f
%C#t63a*Q"5366I 7s   A+ A+vc                     U b3  [        U [        5      (       a  [        U 5      R                  5       (       d  g  [        [        U 5      R                  5       5      $ ! [        [
        4 a     g f = fN)r   strstripint	TypeError
ValueError)r   s    r   _inspection_intr       sU    yZ3''A3q6<<>""z" s   !A A.-A.rowc                     S HU  nU R                  U5      nUc  M  [        U5      R                  5       (       d  M9  [        U5      R                  5       S S s  $    g )N)nombreprovince	provincianameglosa   )r   r   r   )r!   kr   s      r   _province_name_from_rowr*      sI    AGGAJ=SV\\^^q6<<>$3'' B     c                 X    S H$  n[        U R                  U5      5      nUc  M"  Us  $    g )N)	region_id	id_regionidRegionregionIdcodigo_region)r    r   )r!   r)   ns      r   _region_id_from_rowr3   #   s.    PCGGAJ'=H Q r+   c                   l    \ rS rSrS rSS jrSS jrS rS rS\	\
\4   S	\	\
\4   4S
 jrS rS rSrg)ProvinceClass+   c                     Xl         g r   db)selfr9   s     r   __init__ProvinceClass.__init__,   s    r+   Nc                    U R                   R                  [        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  5      R                  [        [        R
                  [        R                  :H  5      nU(       aU  UR                  5       (       a@  UR                  [        R                  R                  SUR                  5        S35      5      nUb"  UR                  [        R
                  U:H  5      nUR                  [        R                  5      $ )N%)r9   queryr	   idr$   r-   
added_dateupdated_dater
   region	outerjoinr   filterlikeorder_by)r:   province_namer-   qs       r   _base_queryProvinceClass._base_query/   s    GGMM""##$$&&
 )K!8!8KNN!J
K 	
 ]0022//44q9L9L9N8Oq5QRSA 00I=>Azz-**++r+   c                 x    U R                  XS9nUc  SO
[        U5      nUS:  a  U=(       d    SnUS:  a  SnUR                  5       nU(       a
  X-   S-
  U-  OSn	US:X  d  U	S:X  d  Xi:  a  UU	UU/ S.$ UR                  US-
  U-  5      R	                  U5      R                  5       n
OUR                  5       n
U
 Vs/ s H  nUR                  UR                  UR                  UR                  UR                  (       a  UR                  R                  S5      OS UR                  (       a  UR                  R                  S5      OS S.PM     nnUS:  a6  U=(       d    SnUR                  5       nU(       a
  X-   S-
  U-  OSn	UU	UUUS.$ U$ s  snf ! [         a  nS[        U5      S	.s S nA$ S nAff = f)
N)rH   r-   r   
      )total_itemstotal_pagescurrent_pageitems_per_pager   %Y-%m-%d %H:%M:%Sr@   r$   r-   rC   rA   rB   errorstatusmessage)rJ   r   countoffsetlimitallr@   r$   r-   rC   rA   strftimerB   	Exceptionr   )r:   rH   r-   pagerR   r?   page_valipprO   rP   r   pserialized_dataes                 r   get_allProvinceClass.get_allA   s   4	:$$=$VE Lqc$iH!|$*a< H#kkm@C{014<!#{a'78;Q'2'2(0*- "  ||X\S$89??DHHJyy{ 
 A $$ !

!"hhPQP\P\!,,"7"78K"LbfTUTbTbANN$;$;<O$Phl   
 !|$*#kkm@C{014<#.#.$,&)+  #"1
4  	:%#a&99	:s>   A3F 6A	F ?BF=F F F 
F9!F4.F94F9c           	          U R                  5       R                  [        R                  U:H  5      R	                  5       nU(       a  SUR                  UR
                  UR                  UR                  UR                  (       a  UR                  R                  S5      OS UR                  (       a  UR                  R                  S5      OS S.0$ SS0$ ! [         a  nS[        U5      S.s S nA$ S nAff = f)Nprovince_datarS   rT   rU   z7No se encontraron datos para la provincia especificada.rV   )rJ   rE   r	   r@   firstr$   r-   rC   rA   r]   rB   r^   r   )r:   r@   
data_queryrd   s       r   r   ProvinceClass.getx   s    	:))+22=3C3Cr3IJPPRJ#(mm$.$7$7%/%9%9","3"3]g]r]rj&;&;&D&DEX&Yx|akaxax
(?(?(H(HI\(]  C&	 	 VWW 	:%#a&99	:s$   CC C 
C8 C3-C83C8c                     US   US   [         R                  " 5       [         R                  " 5       S.nUR                  S5      b  [        US   5      US'   OaU R                  R                  [        R                  " [        R                  5      5      R                  5       nUb  [        U5      OSS-   US'   [        S0 UD6nU R                  R                  U5        U R                  R                  5         U R                  R                  U5        SSUR                  S	.$ ! [         a2  nU R                  R                  5         S
[!        U5      S.s S nA$ S nAff = f)Nr$   r-   )r$   r-   rA   rB   r@   r   rN   successzProvince created successfully)rW   rX   province_idrU   rV    )r   nowr   r   r9   r?   r   maxr	   r@   scalaraddcommitrefreshr^   rollbackr   )r:   province_inputs
row_kwargsmax_idnew_rowrd   s         r   storeProvinceClass.store   s!   	:+J7,[9&lln (	J ""4(4#&t'<#=
4 txx0@0@'ABIIK393ECK1PQ#Q
4 #1j1GGGKK GGNNGGOOG$ $:&zz   	:GG%#a&99	:s   D"D% %
E!/'EE!E!r   r   c           
      p    [        U5      nSnSn/ nU GH  n[        U5      nU(       d  M  [        UR                  S5      5      nUc  UR	                  [        U5      SS.5        MT  [        U5      n	U	c  UR	                  USS.5        Mx  UR                  5       R                  5       n
U R                  R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       a  UR                  =(       d    SR                  5       R                  5       U
:H  nUR                   =(       d    S U	:H  nU(       a  U(       a  US-  nGML  X{l        Xl        ["        R$                  " 5       Ul        U R                  R)                  5         US-  nGM  U R+                  XUS.5      nUR                  S	5      S
:X  a  US-  nGM  UR	                  U[        UR                  SS5      5      S.5        GM     S
UUUS.$ ! [,         a  nS[        U5      S.s S nA$ S nAff = f)Nr   r@   zFila sin id de Inspection)r&   rX   zFila sin region_id / id_region rN   )r@   r-   r$   rW   rm   rX   Error)rW   importedskippederrorsrU   rV   )r   r*   r    r   appendr   r3   r   lowerr9   r?   r	   rE   r@   ri   r$   r-   r   rp   rB   rt   r{   r^   )r:   r   rowsr   r   r   r!   r&   inspection_idrid	name_normexistingsamesame_rresrd   s                   r   import_from_inspection$ProvinceClass.import_from_inspection   s   1	:+O<DHG+-F.s3 / > (MM3s8@["\])#.;MM4<\"]^ JJL..0	77==7>>}?O?OS`?`aggi$--3::<BBD	QD&008DS@F1 (,%),&,4LLNH)GGNN$MHjjUY!Z[778$	1MHMM4C	SZ@[<\"]^E J $$" 	   	:%#a&99	:s   HH 
H5H0*H50H5c                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       a:  U R                   R                  U5        U R                   R                  5         SSS.$ SSS.$ ! [         a2  nU R                   R                  5         S[        U5      S.s S nA$ S nAff = f)Nrm   zProvince deleted successfullyrV   rU   No data found)r9   r?   r	   rE   r@   ri   deletert   r^   rv   r   )r:   r@   r   rd   s       r   r   ProvinceClass.delete   s    		:77==/66}7G7G27MNTTVDt$ "+8WXX%/BB 	:GG%#a&99	:s$   BB B 
C'CCCc                 &    U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       d  SSS.$ UR                  5        H  u  pE[        X4U5        M     [        R                  " 5       Ul
        U R                   R                  5         U R                   R                  U5        SSS.$ ! [         a2  nU R                   R                  5         S[        U5      S.s S nA$ S nAff = f)NrU   r   rV   rm   zProvince updated successfully)r9   r?   r	   rE   r@   one_or_noneitemssetattrr   rp   rB   rt   ru   r^   rv   r   )r:   r@   rw   r   keyvaluerd   s          r   updateProvinceClass.update   s    	:ww}}]3::=;K;Kr;QR^^`H")oFF-335
u- 6 %-LLNH!GGNNGGOOH%'4STT 	:GG%#a&99	:s%   AC A8C 
D'DDDr8   )NN)NNr   rM   )__name__
__module____qualname____firstlineno__r;   rJ   re   r   r{   r   r   r   r   r   r   __static_attributes__ro   r+   r   r5   r5   +   sK    ,$5:n:*::2:d38n 2:cSVh 2:h
::r+   r5   N)r   typingr   r   r   r   
sqlalchemyr   app.backend.db.modelsr	   r
   r   r   r   r    r*   r3   r5   ro   r+   r   <module>r      s     , ,  <d38n d3PS8nAU s x} c3h HSM T#s(^  P: P:r+   