
    i#                         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	m
Z
 deeef   deeeef      fdZdedee   fd	Zd
eeef   dee   fdZd
eeef   dee   fdZ G d d      Zy)    )datetime)AnyDictListOptional)func)ProvinceModelRegionModelinspection_bodyreturnc                     | j                  d      sg S | j                  d      }t        |t              r!|D cg c]  }t        |t              s| c}S g S c c}w )Nokdata)get
isinstancelistdict)r   rawrs      K/var/www/pie360backend.cl/public_html/app/backend/classes/province_class.py_extract_inspection_rowsr   	   sS    t$	


f
%C#t6a*Q"566I 7s   AAvc                     | )t        | t              rt        |       j                         sy 	 t        t        |       j                               S # t        t
        f$ r Y y w xY wN)r   strstripint	TypeError
ValueError)r   s    r   _inspection_intr       sP    yZ3'A3q6<<>""z" s   !A A"!A"rowc                     dD ]M  }| j                  |      }|t        |      j                         s1t        |      j                         d d c S  y )N)nombreprovince	provincianameglosa   )r   r   r   )r!   kr   s      r   _province_name_from_rowr*      sK    A (GGAJ=SV\\^q6<<>$3''(     c                 R    dD ]"  }t        | j                  |            }| |c S  y )N)	region_id	id_regionidRegionregionIdcodigo_region)r    r   )r!   r)   ns      r   _region_id_from_rowr3   #   s2    P CGGAJ'=H r+   c                   ^    e Zd Zd ZddZddZd Zd Zdee	e
f   dee	e
f   fd	Zd
 Zd Zy)ProvinceClassc                     || _         y r   )db)selfr7   s     r   __init__zProvinceClass.__init__,   s	    r+   Nc                 z   | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                        j                  t        t        j
                  t        j                  k(        }|rP|j                         r@|j                  t        j                  j                  d|j                          d            }|"|j                  t        j
                  |k(        }|j                  t        j                        S )N%)r7   queryr	   idr$   r-   
added_dateupdated_dater
   region	outerjoinr   filterlikeorder_by)r8   province_namer-   qs       r   _base_queryzProvinceClass._base_query/   s    GGMM""##$$&&
 )K!8!8KNN!J
K 	
 ]002//44q9L9L9N8Oq5QRSA 00I=>Azz-**++r+   c                 4   	 | j                  ||      }|dn
t        |      }|dkD  rx|xs d}|dk  rd}|j                         }|r||z   dz
  |z  nd}	|dk(  s
|	dk(  s||	kD  r||	||g dS |j                  |dz
  |z        j	                  |      j                         }
n|j                         }
|
D cg c]  }|j                  |j                  |j                  |j                  |j                  r|j                  j                  d      nd |j                  r|j                  j                  d      nd d }}|dkD  r-|xs d}|j                         }|r||z   dz
  |z  nd}	||	|||dS |S c c}w # t        $ r}dt        |      d	cY d }~S d }~ww xY w)
N)rE   r-   r   
      )total_itemstotal_pagescurrent_pageitems_per_pager   %Y-%m-%d %H:%M:%Sr=   r$   r-   r@   r>   r?   errorstatusmessage)rG   r   countoffsetlimitallr=   r$   r-   r@   r>   strftimer?   	Exceptionr   )r8   rE   r-   pagerN   r<   page_valipprK   rL   r   pserialized_dataes                 r   get_allzProvinceClass.get_allA   s   4	:$$=I$VE Lqc$iH!|$*a< H#kkm@C{S014<!#{a'78k;Q'2'2(0*- "  ||X\S$89??DHHJyy{ 
  $$ !

!"hhPQP\P\!,,"7"78K"LbfTUTbTbANN$;$;<O$Phl
O 
 !|$*#kkm@C{S014<#.#.$,&)+  #"1
4  	:%#a&99	:s>   A)E6 ,A	E6 5BE1;3E6 /E6 1E6 6	F?FFFc           	         	 | j                         j                  t        j                  |k(        j	                         }|rd|j                  |j
                  |j                  |j                  |j                  r|j                  j                  d      nd |j                  r|j                  j                  d      nd diS ddiS # t        $ r}dt        |      dcY d }~S d }~ww xY w)Nprovince_datarO   rP   rQ   z7No se encontraron datos para la provincia especificada.rR   )rG   rB   r	   r=   firstr$   r-   r@   r>   rY   r?   rZ   r   )r8   r=   
data_queryr`   s       r   r   z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 	C(C#C(#C(c                    	 |d   |d   t        j                         t        j                         d}|j                  d      t        |d         |d<   n_| j                  j                  t        j                  t        j                              j                         }|t        |      nddz   |d<   t        di |}| j                  j                  |       | j                  j                          | j                  j                  |       dd|j                  d	S # t        $ r2}| j                  j                          d
t!        |      dcY d }~S d }~ww xY w)Nr$   r-   )r$   r-   r>   r?   r=   r   rJ   successzProvince created successfully)rS   rT   province_idrQ   rR    )r   nowr   r   r7   r<   r   maxr	   r=   scalaraddcommitrefreshrZ   rollbackr   )r8   province_inputs
row_kwargsmax_idnew_rowr`   s         r   storez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           
          	 t        |      }d}d}g }|D ]  }t        |      }|st        |j                  d            }||j	                  t        |      dd       Lt        |      }	|	|j	                  |dd       n|j                         j                         }
| j                  j                  t              j                  t        j                  |k(        j                         }|r|j                  xs dj                         j                         |
k(  }|j                   xs d |	k(  }|r	|r|dz  }(||_        |	|_        t#        j$                         |_        | j                  j)                          |dz  }p| j+                  ||	|d      }|j                  d	      d
k(  r|dz  }|j	                  |t        |j                  dd            d        d
|||dS # t,        $ r}dt        |      dcY d }~S d }~ww xY w)Nr   r=   zFila sin id de Inspection)r&   rT   zFila sin region_id / id_region rJ   )r=   r-   r$   rS   rg   rT   Error)rS   importedskippederrorsrQ   rR   )r   r*   r    r   appendr   r3   r   lowerr7   r<   r	   rB   r=   rd   r$   r-   r   rj   r?   rn   ru   rZ   )r8   r   rowsry   rz   r{   r!   r&   inspection_idrid	name_normexistingsamesame_rresr`   s                   r   import_from_inspectionz$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 (,H%),H&,4LLNH)GGNN$MHjjCUY!Z[778$	1MHMM4C	SZ@[<\"]^E"_J $$" 	   	:%#a&99	:s   G)G, ,	H5HHHc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|r:| j                   j                  |       | j                   j                          dddS dddS # t        $ r2}| j                   j                          dt        |      dcY d }~S d }~ww xY w)Nrg   zProvince deleted successfullyrR   rQ   No data found)r7   r<   r	   rB   r=   rd   deletern   rZ   rp   r   )r8   r=   r   r`   s       r   r   z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                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS |j                         D ]  \  }}t        |||        t        j                         |_
        | j                   j                          | j                   j                  |       dddS # t        $ r2}| j                   j                          dt        |      dcY d }~S d }~ww xY w)NrQ   r   rR   rg   zProvince updated successfully)r7   r<   r	   rB   r=   one_or_noneitemssetattrr   rj   r?   rn   ro   rZ   rp   r   )r8   r=   rq   r   keyvaluer`   s          r   updatezProvinceClass.update   s    	:ww}}]3::=;K;Kr;QR^^`H")oFF-335 .
U#u-. %-LLNH!GGNNGGOOH%'4STT 	:GG%#a&99	:s%   AC A7C 	D	'D>D	D	)NN)NNr   rI   )__name__
__module____qualname__r9   rG   ra   r   ru   r   r   r   r   r   r   ri   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   ri   r+   r   <module>r      s     , ,  <d38n d3PS8nAU s x} c3h HSM T#s(^  P: P:r+   