
    'Xi                     d    d 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Z G d d	      Zy
)u-   Lógica para support_areas (áreas de apoyo).    )datetime)OptionalAny)case)Session)SupportAreaModelc                 |    | y t        | t              r| S t        | d      r| j                  |      S t        |       S )Nstrftime)
isinstancestrhasattrr
   )vfmts     O/var/www/pie360backend.cl/public_html/app/backend/classes/support_area_class.py	_date_strr   
   s:    y!Sq*zz#q6M    c            	       |    e Zd ZdefdZddededee   defdZ	d	edefd
Z
dedefdZd	ededefdZd	edefdZy)SupportAreaClassdbc                     || _         y )N)r   )selfr   s     r   __init__zSupportAreaClass.__init__   s	    r   Npageitems_per_pagesupport_areareturnc           	         	 | j                   j                  t              j                  t        j                  j                  d            }|rYt        |      j                         r@|j                  t        j                  j                  d|j                          d            }|j                  t        t        j                  j                  d      dfd      t        j                  j                               }|dkD  r|dkD  r|j                         }||z   dz
  |z  xs d}|dk  s||kD  r||||g dS |j                  |dz
  |z        j                  |      j!                         }|D cg c]C  }|j"                  |j                  t%        |j&                        t%        |j(                        dE }	}|||||	dS |j!                         }|D cg c]C  }|j"                  |j                  t%        |j&                        t%        |j(                        dE c}S c c}w c c}w # t*        $ r}
dt        |
      g d	cY d}
~
S d}
~
ww xY w)
u5   Lista áreas de apoyo activas (deleted_date is None).N%   r   )else_)total_itemstotal_pagescurrent_pager   dataidr   
added_dateupdated_dateerrorstatusmessager$   )r   queryr   filterdeleted_dateis_r   stripr   likeorder_byr   asccountoffsetlimitallr&   r   r'   r(   	Exception)r   r   r   r   r-   r!   r"   rowsrr$   es              r   get_allzSupportAreaClass.get_all   s1   0	FGGMM"23::;K;X;X;\;\]a;bcEL 1 7 7 9%5%B%B%G%G!LL^L^L`KaabHc%deNN&3377=qAK --113E axNQ.#kkm*^;a?NRWVW!8tk1'2'2(,*8 "  ||TAX$?@FF~VZZ\ "   dd()&/&=(1!..(A	  $/#.$(&4   99;D   $$$%NN"+ALL"9$-ann$=	 #"  	F%#a&"EE	FsJ   D8H. ;8H. 3AH$;	H. H. AH)!H. $
H. .	I7IIIr&   c                    	 | j                   j                  t              j                  t        j                  |k(  t        j
                  j                  d            j                         }|sddddS d|j                  |j                  t        |j                        t        |j                        ddS # t        $ r}dt        |      ddcY d}~S d}~ww xY w)u!   Obtiene un área de apoyo por id.Nr)   Registro no encontrado.r*   successr%   )r+   r$   )r   r-   r   r.   r&   r/   r0   firstr   r   r'   r(   r9   r   r   r&   rowr<   s       r   getzSupportAreaClass.getL   s    	H./(++r13C3P3P3T3TUY3Z[ 
 ")6OY]^^#&&$'$4$4"+CNN";$-c.>.>$?	   	H%#a&$GG	Hs%   A2B9 5AB9 9	CCCCr$   c                    	 |j                  d      xs dj                         xs d}t        j                         }t	        |||d      }| 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)
u   Crea un área de apoyo.r    N)r   r'   r(   r/   r@   u   Área de apoyo creada.r+   r,   r&   r)   r+   r,   )rD   r1   r   nowr   r   addcommitrefreshr&   r9   rollbackr   )r   r$   r   rI   rC   r<   s         r   storezSupportAreaClass.storeb   s    	: HH^4:AACKtL,,.C") !	C GGKKGGNNGGOOC '4LTWTZTZ[[ 	:GG%#a&99	:s   B)B, ,	C'5'C"C'"C'c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS d|v r |d   xs dj                         xs d|_        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)
u#   Actualiza un área de apoyo por id.r)   r?   rH   r   rF   Nr@   zRegistro actualizado.rG   )r   r-   r   r.   r&   rA   r1   r   r   rI   r(   rK   rL   r9   rM   r   )r   r&   r$   rC   r<   s        r   updatezSupportAreaClass.updateu   s    	:''-- 01889I9L9LPR9RSYY[C")6OPP%$($8$>B#E#E#G#O4 '||~CGGNNGGOOC '4KSUVV 	:GG%#a&99	:s%   AC A7C 	D	'D>D	D	c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS t        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)u   Borrado lógico (deleted_date).r)   r?   rH   r@   zRegistro eliminado.rG   N)r   r-   r   r.   r&   rA   r   rI   r/   r(   rK   r9   rM   r   rB   s       r   deletezSupportAreaClass.delete   s    
	:''-- 01889I9L9LPR9RSYY[C")6OPP'||~C"//CGGNN'4IQSTT 	:GG%#a&99	:s%   AB  A	B   	C)'CCC)r   d   N)__name__
__module____qualname__r   r   intr   r   r   r=   rD   dictrN   rP   rR    r   r   r   r      s    7 2FC 2FS 2FhWZm 2Fgj 2FhHc Hc H,:$ :3 :&: :D :S : : : :r   r   N)z%Y-%m-%d %H:%M:%S)__doc__r   typingr   r   
sqlalchemyr   sqlalchemy.ormr   app.backend.db.modelsr   r   r   rY   r   r   <module>r_      s(    3     " 2}: }:r   