
    Xht!                     d    d dl m Z  d dlmZ d dlmZmZmZ d dl m Z  d dlmZ d dl	Z	 G d d      Z
y)    )datetime)Session)ContractModelBranchOfficeModelContractTypesModel)HTTPExceptionNc                   :    e Zd ZdefdZd	dZd Zd Zd Zd
dZ	y)ContractClassdbc                     || _         y N)r   )selfr   s     N/var/www/intrajisbackend.com/public_html/app/backend/classes/contract_class.py__init__zContractClass.__init__
   s	        Nc                 d   	 | j                   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                        }|r"|j%                  t        j                  |k(        }|r"|j%                  t        j                  |k(        }|dk(  r|j'                         }|D cg c]  }|j                  |j                  |j
                  |j                  |j                  |j                  r|j                  j)                  d      nd |j                  r|j                  j)                  d      nd |j                  |j                  r|j                  j)                  d      nd d	 c}S |j+                         }||z   dz
  |z  }	|dk  s||	kD  rdddS |j-                  |dz
  |z        j/                  |      j'                         }|sdddS ||	|||D cg c]  }|j                  |j                  |j
                  |j                  |j                  |j                  r|j                  j)                  d      nd |j                  r|j                  j)                  d      nd |j                  |j                  r|j                  j)                  d      nd d	 c}d	S c c}w c c}w # t0        $ r}
dt3        |
      dcY d }
~
S d }
~
ww xY w)
Nr   z%d-%m-%Y)	idrutclientcontract_typebranch_office
start_dateend_dateamountrenovation_date   errorzInvalid page numberstatusmessagezNo data found)total_itemstotal_pagescurrent_pageitems_per_pagedata)r   queryr   r   r   r   r   r   r   r   r   r   r   r   	outerjoinbranch_office_idcontract_type_idorder_byfilterallstrftimecountoffsetlimit	Exceptionstr)r   r   r(   pager$   r&   r%   contractr!   r"   es              r   get_allzContractClass.get_all   s   H	:GGMM  !!$$"00((&&$$--!//
 i!#4#7#7=;Y;Y#Yi"$6$9$9]=[=[$[h!! & ]%6%6#%=>]%C%CGW%WXqyyy{ #'
(  #++#<<&oo%-%;%;%-%;%;NVNaNa("5"5">">z"JgkJRJ[J[ 1 1 : :: Fae&ooX`XpXpx'?'?'H'H'Tvz
 
( 
(  ++-K&7!;NKax4+-")6KLL<<^ ;<BB>RVVXD")oFF  +* $"0 #'
(  #++#<<&oo%-%;%;%-%;%;NVNaNa("5"5">">z"JgkJRJ[J[ 1 1 : :: Fae&ooX`XpXpx'?'?'H'H'Tvz
 
( 1
(:
(  	:%#a&99	:sP   FN CNN )N 8:N 3N ;CN	?N 
N 	N/N*$N/*N/c                     	 | j                   j                  t        j                  t        j                  t        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                        j+                  t        j                  |k(        j-                         }|r|j                  |j                  |j                  |j                  |j                  |j                  |j                  j/                         |j                  j/                         |j                  j/                         |j
                  |j                  |j"                  |j                  d}d|i}t1        j2                  |      }|S y# t4        $ r}t7        |      }d| cY d }~S d }~ww xY w)N)r   r(   addressr   r   r   r   r   r   currencyr   r   supportcontract_dataz3No se encontraron datos para el campo especificado.Error: )r   r&   r   r   r   r9   r(   r8   r:   r   r   r   r   r   r   r   r   r   r'   r)   r*   r+   first	isoformatjsondumpsr1   r2   )r   r   
data_queryr;   resultserialized_resultr5   error_messages           r   getzContractClass.getX   sX   )	-}'7'79M9M}OeOegt  hF  hF  HU  H]  H]  _l  _t  _t  vC  vG  vG  IV  I]  I]  _q  _  _  AN  AY  AY  [h  [q  [q  s@  sP  sP  Rc  Rq  Rq  r!	"35F5I5I]MkMk5kl!	"46H6K6K}OmOm6mn !2!23}//256   %--(2(C(C)11%>>(//%/%=%=","7"7"A"A"C * 3 3 = = ?'1'A'A'K'K'M * 3 3(//%/%=%=)11!$ $]
 %)JJv$6!(( M 	-FM]O,,	-s   I&I* *	J3JJJc                    t               }|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Contract saved successfullyr   r   r<   )r   r(   r)   r   r   r   r   r   r8   r9   r   r:   r   now
added_dater   addcommitr1   rollbackr2   )r   	form_datar:   r4   r5   s        r   storezContractClass.store   s    ? %.$>$>!$-$>$>! }}#**'22%..#,#<#< $,,%..#**"&lln 	H	FGGNN'4QRR 	FGG%GCF82DEE	Fs   1D 	E*E	E	Ec                 ^   	 | j                   j                  t              j                  t        j                  |k(        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)NrG   zContract deleted successfullyr   r   r<   )
r   r&   r   r+   r   deleterK   r1   rL   r2   )r   r   r5   s      r   rP   zContractClass.delete   s    		FGGMM-(//0@0@B0FGNNPGGNN'4STT 	FGG%GCF82DEE	Fs   A+A. .	B,7*B'!B,'B,c                    | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      |j                  |_        |j                  |_        |j                  |_	        |j                  |_
        |j                  |_        |j                  |_        |j                  |_        |j                  |_        |j                  |_        |j                   |_        |dk7  r||_        | j                   j%                          | j                   j'                  |       y)zG
        Actualiza los datos del contrato en la base de datos.
        i  zContrato no encontrado)status_codedetailN)r   r&   r   r+   r   r=   r   r   r   r   r   r   r   r(   r9   r8   r)   r:   rK   refresh)r   r   rM   support_filer4   s        r   updatezContractClass.update   s     77==/66}7G7G27MNTTVC8PQQ !}}#**#**%..'22#,#<#< $-$>$>!%..$,,$-$>$>!4+H!r   )NNr   
   r   )
__name__
__module____qualname__r   r   r6   rE   rN   rP   rV    r   r   r
   r
   	   s,    7 I:V*-XF:
F"r   r
   )r   sqlalchemy.ormr   app.backend.db.modelsr   r   r   fastapir   r?   r
   r[   r   r   <module>r_      s&     " V V  ! |" |"r   