
    h(                     X    d dl mZmZmZ d dlZd dlmZ d dlmZ d dlm	Z	  G d d      Z
y)    )CustomerModelRegionModelCommuneModelN)mysql)datetime)HTTPExceptionc                   >    e Zd Zd Zd
dZd Zd Zd Zd Zd Z	d	 Z
y)CustomerClassc                     || _         y )N)db)selfr   s     N/var/www/intrajisbackend.com/public_html/app/backend/classes/customer_class.py__init__zCustomerClass.__init__   s	        Nc                    	 g }|"|j                  t        j                  |k(          | j                  j	                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  	      j                  | j                  t        j                        }|dkD  r%|j                         }t!        |j"                  j%                  t'        j(                         ddi             ||z   dz
  |z  }t!        |       |dk  s||kD  rdddS |j+                  |dz
  |z        j-                  |      j/                         }|sdd	dS |D 	cg c]h  }	|	j
                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  d
	j }
}	|||||
dS |j/                         }|D 	cg c]h  }	|	j
                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  d
	j }
}	|
S c c}	w c c}	w # t0        $ r}t3        |      }d|dcY d }~S d }~ww xY w)Nr   literal_bindsT)dialectcompile_kwargs   errorzInvalid page numberstatusmessageNo data found)	idrutcustomer	region_id
commune_idr   phoner   address)total_itemstotal_pagescurrent_pageitems_per_pagedata)appendr   r   r   queryr   r   r   r   emailr    activityr!   filterorder_bycountprint	statementcompiler   r   offsetlimitall	Exceptionstr)r   r   pager%   filtersr(   r"   r#   r&   r   serialized_dataeerror_messages                r   get_allzCustomerClass.get_all   s   R	AG}00C78
DGGMM  !!&&''((####&&%%
 f h!! " ax#kkmeoo--emmoWfhlVm-no*^;a?NRk"!8tk1&-:OPP ||TAX$?@FF~VZZ\&-/JJ #'
#(  #++#<< ( 1 1!)!3!3"*"5"5 (%^^ ( 1 1'//
$ 
#( 
#( $/#.$(&4+  yy{ #'
#(  #++#<< ( 1 1!)!3!3"*"5"5 (%^^ ( 1 1'//
$ 
#( 
#( '&K
#(2
#(  	AFM%-@@	AsP   E%J- (:J- #J- 'A-J#	J- J- 2A-J(J- #
J- -	K6KKKc                    	 | j                   j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  
      j                  t        t        j                   t        j                  k(        j                  t        t        j                   t        j                  k(        j#                  t        j                  |k(        j%                         }|r|j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  d
}d|i}t'        j(                  |      }|S y# t*        $ r}t-        |      }d| cY d }~S d }~ww xY w)N)
r   r   r   regioncommuner   r    r)   r*   r!   customer_data3No se encontraron datos para el campo especificado.Error: r   r(   r   r   r   r=   r   r>   r   r    r)   r   r   r*   r!   	outerjoinr   r+   firstjsondumpsr4   r5   r   r   
data_queryr?   resultserialized_resultr9   r:   s           r   
get_by_rutzCustomerClass.get_by_rut`   s   #	-}'8'8+:L:LlNbNbdqdzdz  }J  }P  }P  R_  Re  Re  gt  g~  g~  @M  @X  @X  Zg  Zp  Zp  r  rG  rG  H!	+{~~AXAX/XY!	,=C[C[0[\}00C78	   &>> * 3 3!+!5!5(//)11","7"7'--'-- * 3 3)11! $]
 %)JJv$6!((L 	-FM]O,,	-   GG 	G8G3-G83G8c           
         	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                        j                  t        j                  |k(        j                         }|rv|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  d}d|i}t        j                  |      }|S y# t         $ r}t#        |      }d| cY d }~S d }~ww xY w)N)r   r   r   r   r    r)   r*   r!   r?   r@   rA   )r   r(   r   r   r   r    r)   r   r   r*   r!   r+   r   rD   rE   rF   r4   r5   )r   r   rH   r?   rI   rJ   r9   r:   s           r   getzCustomerClass.get   sQ   	-}'8'8-:P:PR_ReRegtgzgz  }J  }T  }T  Vc  Vn  Vn  p}  pF  pF  HU  H]  H]  ^}//256   &>> * 3 3!+!5!5","7"7'--'-- * 3 3)11	! $]
 %)JJv$6!((L 	-FM]O,,	-s   D7D; ;	EEEEc                    	 | j                   j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  
      j                  t        t        j                   t        j                  k(        j                  t        t        j                   t        j                  k(        j#                  t        j                  |k(        j%                         }|r|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  |j                  d
}d|i}t'        j(                  |      }|S y# t*        $ r}t-        |      }d| cY d }~S d }~ww xY w)N)
r   r   r   r   r    r)   r*   r!   r=   r>   r?   zCustomer does not existrA   rB   rG   s           r   check_existencezCustomerClass.check_existence   s   #	-}'8'8+:L:LlNbNbdqdzdz  }J  }P  }P  R_  Re  Re  gt  g~  g~  @M  @X  @X  Zg  Zp  Zp  r  rG  rG  H!	+{~~AXAX/XY!	,=C[C[0[\}00C78	   &>> * 3 3!+!5!5","7"7'--'-- * 3 3)11(//)11! $]
 %)JJv$6!((0 	-FM]O,,	-rL   c                    t               }|j                  |_        |j                  |_        |j                  |_        |j                  j                         |_        |j                  |_        |j                  j                         |_        |j                  |_        |j                  j                         |_	        t        j                         |_        | j                  j                  |       	 | j                  j                          dddS # t         $ r5}| j                  j#                          ddt%        |       dcY d }~S d }~ww xY w)NsuccesszCustomer saved successfullyr   r   rA   )r   r   r   r   r   upperr)   r*   r    r!   r   now
added_dater   addcommitr4   rollbackr5   )r   	form_datar   r9   s       r   storezCustomerClass.store   s    ? !}}&00'22%..446"%..446"$,,224&lln 	H	FGGNN'4QRR 	FGG%GCF82DEE	Fs   2D 	E*E
E
Ec                 ^   	 | j                   j                  t              j                  t        j                  |k(        j                         }|r7| j                   j                  |       | j                   j                          dS y# t        $ r}t        |      }d| cY d }~S d }~ww xY w)NrR   r   rA   )
r   r(   r   r+   r   rD   deleterW   r4   r5   )r   r   r&   r9   r:   s        r   r\   zCustomerClass.delete   s    
	-77==/66}7G7G27MNTTVDt$  !& 	-FM]O,,	-s   BB	 		B,B'!B,'B,c                    t        t               | j                  j                  t              j                  t        j                  |k(        j                         }|st        dd      |j                  |_	        |j                  |_
        |j                  j                         |_        |j                  |_        |j                  j                         |_        |j                  |_        |j                   j                         |_        | j                  j#                          | j                  j%                  |       y)zH
        Actualiza los datos de la patente en la base de datos.
        i  zCliente no encontrado)status_codedetailN)r.   r   r   r(   r   r+   r   rD   r   r   r   r   rS   r)   r*   r    r!   rW   refresh)r   r   rY   r   s       r   updatezCustomerClass.update   s     	b	77==/66}7H7HC7OPVVXC8OPP&00'22%..446"%..446"$,,224!r   )Nr   
   )__name__
__module____qualname__r   r;   rK   rN   rP   rZ   r\   ra    r   r   r
   r
      s1    SAj$-N -D$-LF4-"r   r
   )app.backend.db.modelsr   r   r   rE   sqlalchemy.dialectsr   r   fastapir   r
   rf   r   r   <module>rj      s#    J J  %  !A" A"r   