
    Xh@                         d dl mZmZmZmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlZ G d d      Zy)    )EmployeeModelEmployeeLaborDatumModelBranchOfficeModelVacationModelTotalVacationDaysModelOldVacationModelOldDocumentEmployeeModelDocumentEmployeeModel)EmployeeLaborDatumClass)EmployeeExtraDatumClass)HelperClass)EmployeeClass)date)datetime)desc)or_)func)DropboxClassNc                   `    e Zd Zd ZddZddZd ZddZd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)VacationClassc                     || _         y )N)db)selfr   s     N/var/www/intrajisbackend.com/public_html/app/backend/classes/vacation_class.py__init__zVacationClass.__init__   s	        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
        j                  |k(        j                  t        j                  dk\        j                  t        j                  dk(        j!                  t#        t
        j                              }|j%                         }||z   dz
  |z  }|dk  s||kD  ry|j'                  |dz
  |z        j)                  |      j+                         }|sy|||||D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  r|j                  j-                  d      nd |j                  r|j                  j-                  d      nd |j                  |j                  d
 c}d}	t/        j0                  |	      }
|
S c c}w # t2        $ r}t5        |      }d	| cY d }~S d }~ww xY w)
N         Invalid page numberNo data found%Y-%m-%d
	status_iddocument_type_iddocument_employee_idsupportrutidsinceuntildaysno_valid_daystotal_itemstotal_pagescurrent_pageitems_per_pagedataError: r   queryr
   r%   r&   r   r'   r(   r)   r*   r+   r,   r-   r.   	outerjoinfilterorder_byr   countoffsetlimitallstrftimejsondumps	Exceptionstrr   r)   pager3   
data_queryr0   r1   r4   itemserialized_dataserialized_resulteerror_messages                r   get_pdf_allzVacationClass.get_pdf_all   s   0	-'<'F'FH]HnHnp}  qS  qS  Uj  Ur  Ur  tA  tE  tE  GT  GW  GW  Yf  Yl  Yl  n{  nA  nA  CP  CU  CU  Wd  Wr  Wr  sI35J5M5MQ^QsQs5stF=,,34F0::a?@F0AAQFGHT-"5"567  %**,K&7!;NKax4+-,$$dQh.%@AGGW[[]D&  +* $"0 !%  &*^^,0,A,A040I0I#'<<#xx"ggDHJJ!4!4Z!@TXDHJJ!4!4Z!@TX $		)-););O. !%

? ;$$)*  	-FM]O,,	-s=   FJ# 6J# J# B2JJ# J# #	K,K;KKc                 R   	 | 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
        j                  |k(        j                  t        j                  dk(        j!                  t#        t
        j                              }|j%                         }||z   dz
  |z  }|dk  s||kD  ry|j'                  |dz
  |z        j)                  |      j+                         }|sy|||||D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  r|j                  j-                  d      nd |j                  r|j                  j-                  d      nd |j                  |j                  d
 c}d}	t/        j0                  |	      }
|
S c c}w # t2        $ r}t5        |      }d| cY d }~S d }~ww xY w	Nr   r    r!   r"   r#   r$   r/   r5   r6   rD   s                r   get_allzVacationClass.get_allE   s   /	-'<'F'FH]HnHnp}  qS  qS  Uj  Ur  Ur  tA  tE  tE  GT  GW  GW  Yf  Yl  Yl  n{  nA  nA  CP  CU  CU  Wd  Wr  Wr  sI35J5M5MQ^QsQs5stF=,,34F0AAQFGHT-"5"567	  %**,K&7!;NKax4+-,$$dQh.%@AGGW[[]D&  +* $"0 !%  &*^^,0,A,A040I0I#'<<#xx"ggDHJJ!4!4Z!@TXDHJJ!4!4Z!@TX $		)-););O. !%

? ;$$)*  	-FM]O,,	-=   E.J 16J (J 0B2I>"J >J 	J&J!J&!J&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"                  t        j$                  t&        j(                  t*        j,                        j/                  t        t        j                  t
        j                  k(        j1                  t        t        j                  t        j                  k(        j1                  t&        t&        j                  t        j                  k(        j1                  t*        t*        j                  t&        j(                  k(        j3                  t
        j                  |k(        j3                  t        j                  dk(        j5                  t7        t
        j                              j9                         }|syg }|D ]`  }|d   |d   |d   |d   |d   |d   |d   |d	   |d
   |d   |d   |d   dz   |d   z   dz   |d   z   |d   |d   d}|j;                  |       b |S # t<        $ r}t?        |      }d| cY d }~S d }~ww xY w)Nr   r"   r   r       r               	   
                   )r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   
visual_rutemployee_namebranch_office_idbranch_office_namer5   ) r   r7   r
   r%   r&   r   r'   r(   r)   r*   r+   r,   r-   r.   r   r_   namesfather_lastnamemother_lastnamer   ra   r   branch_officer8   joinr9   r:   r   r>   appendrB   rC   )r   r)   r4   resultrowrow_dictrJ   rK   s           r   get_all_with_no_paginationz(VacationClass.get_all_with_no_paginationw   sP   7	-GGMM-77->>%::-55%))%((%++%++%**%33%00%++%55%55/@@)77!$ Y46K6N6NR_RtRt6tuT-):):>S>W>W)WXT13J3N3NR_RcRc3cdT+->-A-AE\EmEm-mnVM--45V1BBaGHXd=#6#678SU3 6 & F (!$Q(+A,/F"1vq6a& V VF%(V"%b'%(Ws]SW%<s%BSW%L(+B*-b'  h'#(& M 	-FM]O,,	-s%   IJ8 A(J8 8	KKKKc                 R   	 | 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
        j                  |k(        j                  t        j                  dk(        j!                  t#        t
        j                              }|j%                         }||z   dz
  |z  }|dk  s||kD  ry|j'                  |dz
  |z        j)                  |      j+                         }|sy|||||D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  r|j                  j-                  d      nd |j                  r|j                  j-                  d      nd |j                  |j                  d
 c}d}	t/        j0                  |	      }
|
S c c}w # t2        $ r}t5        |      }d| cY d }~S d }~ww xY wrN   r6   rD   s                r   pdf_get_allzVacationClass.pdf_get_all   s   6	-%//%6622%--!!  ####""++ i-/D/G/G=KmKm/mnouou  wD  wH  wH  LO  wO  pP  QW  QW  Xm  X~  X~  BC  XC  QD  EM  EM  NR  S`  Sf  Sf  Ng  Eh  %**,K&7!;NKax4+-,$$dQh.%@AGGW[[]D&  +* $"0 !%  &*^^,0,A,A040I0I#'<<#xx"ggDHJJ!4!4Z!@TXDHJJ!4!4Z!@TX $		)-););O. !%

? ;$$)*  	-FM]O,,	-rP   c                     	 | j                   j                  t              j                  t	        t        |      |k(        j                         }|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr5   )r   r7   r   r9   getattrfirstrB   rC   )r   fieldvaluer4   rJ   rK   s         r   getzVacationClass.get   se    	-77==/66w}e7TX]7]^ddfDK 	-FM]O,,	-s   AA 	A4A/)A4/A4c                    t               j                  |d   |d   |d         }t               }|d   |_        |d   |_        |d   |_        |d   |_        ||_        |d   |_        d|_        t        j                         |_        t        j                         |_        | j                  j                  |       	 | j                  j                          y# t         $ r
}Y d }~yd }~ww xY w)	Nr+   r,   r.   r'   r)    r    r   )r   r-   r   r'   r)   r+   r,   r.   r(   r   now
added_dateupdated_dater   addcommitrB   )r   vacation_inputsr-   vacationrJ   s        r   storezVacationClass.store   s    }!!/'":OG<TVefuVvw ?(78N(O%&u-(1(1!0!A&lln (H	GGNN 		s   =C 	C+&C+c                 L   	 | j                   j                  t              j                  t        j                  |k(        j                         }t        | j                         j                  d|j                        }|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nz/employee_documents/r5   )r   r7   r
   r9   r*   rq   r   rt   r(   rB   rC   )r   r*   r4   filerJ   rK   s         r   downloadzVacationClass.download	  s    	-77==!67>>?T?W?W[]?]^ddfD(,,-CT\\RDK 	-FM]O,,	-s   A=B   	B#	BB#B#c                 \   	 | j                   j                  t              j                  t        j                  |k(        j                         }|r6| j                   j                  |       | j                   j                          yy# t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr    u   No se encontró el registror5   )
r   r7   r   r9   r'   rq   deleter{   rB   rC   )r   r*   r4   rJ   rK   s        r   r   zVacationClass.delete  s    
	-77==/66}7Y7Y]_7_`ffhDt$ 4 	-FM]O,,	-s   BB 	B+B& B+&B+c                     | j                   j                  t              j                  t        j                  |k(        j                         }d|v r|d   
|d   |_        d|v r|d   
|d   |_        d|v r|d   
|d   |_        d|v r|d   
|d   |_	        t        j                         |_        | j                   j                  |       	 | j                   j                          y# t        $ r
}Y d }~yd }~ww xY w)Nr+   r,   r.   r(   r    r   )r   r7   r   r9   r*   one_or_noner+   r,   r.   r(   r   rw   update_daterz   r{   rB   )r   r*   r|   r}   rJ   s        r   updatezVacationClass.update!  s    GGMM-0778H8HB8NO[[]o%/'*B*N,W5HNo%/'*B*N,W5HNo-//2R2^%4_%EH"'OI,F,R.y9H'||~H	GGNN 		s   C* *	C=8C=c                 t   t        | j                        j                  d|      }t        j                  |      }|d   d   }t        | j                        j                  d|      }t               j                  |t        j                               }t               j                  ||j                        }|S )Nr)   r   entrance_company)r   r   rt   r@   loadsr   r   
legal_daysr   todayvacation_daysextreme_zone_id)r   r)   employee_labor_dataemployee_labor_data_decodedemployee_extra_datar-   r   s          r   legalzVacationClass.legal;  s    5dgg>BB5#N"jj)<=&9:S&TUg&h#5dgg>BB5#N}''(CTZZ\R#33D:M:]:]^ r   c                     | j                   j                  t              j                  t        j                  dk(        j                         }|j                  |j                  |j                  z
  z
  }|S )Nr    )	r   r7   r   r9   r*   rq   total_employee_vacation_days
total_daystotal_no_valid_days)r   total_vacation_daystotals      r   calculate_total_vacation_daysz+VacationClass.calculate_total_vacation_daysF  sn    "ggmm,BCJJKaKdKdhiKijppr#@@DWDbDbex  fM  fM  EM  Nr   c           	      ~   t        | j                        j                  |      }|dk(  r| j                  j                  t              j                  t        t        j                  t        j                  k(        j                  t        j                  |k(  t        j                  dk(  t        t        j                  dk(  t        j                  dk(              j                  t        t        j                               j#                         }d}|D ]/  }|j$                  d}n|j$                  }||j&                  z   |z
  }1 |S t(        j                  j+                  t,        t,        j                  t(        j                  k(        j/                  t(        j$                  t(        j                  t(        j                  t(        j0                  t(        j2                  t(        j&                  t,        j                        j                  t,        j                  |k(  t,        j                  dk(  t        t,        j                  dk(  t,        j                  dk(              j                  t        t,        j                               }d}|D ]/  }|j$                  d}n|j$                  }||j&                  z   |z
  }1 |S )Nr    r   rS   r   r   )r   r   	is_activer7   r   r8   r
   r*   r'   r9   r)   r&   r   r%   r:   r   rx   r>   r.   r-   r   rg   r	   add_columnsr+   r,   )r   r)   r%   	vacations
taken_daysr}   r.   s          r   takenzVacationClass.takenM  s   !$''*44S9	>m4	/1F1I1I]MoMo1op)--4)::a?-771<-771< (4 5 @ @AB335  J% H))1$%M$,$:$:M'(--7-G
H0 ! )..68P8S8SWgW|W|8|}$%5%C%CEUEXEXZjZnZn  qA  qG  qG  IY  I_  I_  aq  av  av  xP  xZ  xZ  [ 8 < < CE]EnEnrsEsux  zR  z\  z\  `a  za  c{  cE  cE  IJ  cJ  vK  L!$'?'J'J"KL	  J% H))1$%M$,$:$:M'(--7-G
H r   N)r    rX   )r    rT   )__name__
__module____qualname__r   rL   rO   rl   rn   rt   r~   r   r   r   r   r   r    r   r   r   r      sG    1-f0-d8-t7-r-,	--4	*r   r   )app.backend.db.modelsr   r   r   r   r   r   r	   r
   .app.backend.classes.employee_labor_datum_classr   .app.backend.classes.employee_extra_datum_classr    app.backend.classes.helper_classr   "app.backend.classes.employee_classr   r   r   
sqlalchemyr   r   r   !app.backend.classes.dropbox_classr   r@   r   r   r   r   <module>r      sD    F  F  F R R 8 <      : i ir   