
    chD\                     |    d dl Z d dlZd dlZd dlmZmZ d dlmZ d dl Z d dlZd dlZd dl	m
Z
 d dlmZ  G d d      Zy)    N)datetime	timedelta)MedicalLicenseModel)MIMEText)MIMEMultipartc                   @   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd5dZd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Zd+ Z+d, Z,d- Z-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2d3 Z3y4)6HelperClassc                    d}d}d}d}t               }||d<   d|d<   |d   |d	<   d
|d    d|d    d|d    d|d    d|d    d}|j                  t        |d             t        j                  ||      5 }|j                  ||       |j                  ||d   |j                                d d d        y # 1 sw Y   y xY w)Nmail.jisparking.com  noreply@jisparking.com	Macana11!Fromzcontacto@jisparking.comTosubjectSubjectz
        Nombre: namez
        Apellido: lastnamez
        Correo: emailu   
        Teléfono: phonez#
        
        Mensaje:
        messagez	
        plainr   attachr   smtplibSMTP_SSLloginsendmail	as_string)	selfdatasmtp_server	smtp_port	smtp_usersmtp_passwordmsgbodyservers	            L/var/www/intrajisbackend.com/public_html/app/backend/classes/helper_class.py
send_emailzHelperClass.send_email   s    +	,	# oF-D	iIf 
#$ %g  M? #	 
i 	 	

8D'*+ k95 	CLLM2OOIs4y#--/B	C 	C 	Cs   77B77C c           	      n   d}d}d}d}t               }||d<   d|d<   d|d	<   d
|d    d|d    d|d    d| d	}|j                  t        |d             t        j                  ||      5 }	|	j                  ||       |	j                  ||d   |j                                d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   zempleos@jisparking.comr   zNuevo postulante a Jisparkingr   z>
        <html>
            <body>
                <p>Nombre: namesu!   </p>
                <p>Región: regionz </p>
                <p>Comuna: communez%</p>
                <p>CV: <a href="z[" download="Curriculum.pdf">Curriculum</a></p>
            </body>
        </html>
        htmlr   )
r    r!   filer"   r#   r$   r%   r&   r'   r(   s
             r)   send_email_with_attachmentz&HelperClass.send_email_with_attachment,   s    +	,	# oF,D	8I !M? +!(^, - O, -!!% '		 	

8D&)* k95 	CLLM2OOIs4y#--/B	C 	C 	Cs   +7B++B4c                     | j                  d      } t        | d         }t        | d         }|dk(  r|dz
  }d}n|}|dz
  }|dk  rdt        |      z   }t        |      dz   t        |      z   }|S )N-r         
   0splitintstrcurrent_periodcurrent_period_yearcurrent_period_monthlast_period_yearlast_period_monthlast_periods         r)   calculate_last_periodz!HelperClass.calculate_last_periodL   s    '--c2!."34">!#451$2Q6 "2 4q 8r! #c*;&< <*+c1C8I4JJ    c                     | j                  d      } t        | d         }t        | d         }|dk(  r|dz
  }d}n|}|dz
  }|dk  rdt        |      z   }t        |      dz   t        |      z   }|S )Nr3   r   r4      r5   r6   r7   r8   r<   s         r)   calculate_last_two_periodsz&HelperClass.calculate_last_two_periodsb   s    '--c2!."34">!#451$2Q6 "2 4q 8r! #c*;&< <*+c1C8I4JJrD   c                    t        j                  | d      } | }d}|t        |      k  r[|t        d      z  }t	        j
                  |j                  |j                  |j                        dk  r|dz  }|t        |      k  r[|S )N%Y-%m-%dr   r4   days   )	r   strptimefloatr   calendarweekdayyearmonthday)
start_datenum_daysholidayscurrent_date
added_dayss        r)   add_business_dayszHelperClass.add_business_daysw   s    &&z:>
!
5?*I1--L 1 1<3E3E|GWGWX[\\a
 5?*
 rD   c                    t        j                  | d      } t        j                  |d      }|j                         dk(  r|t        d      z  }d}t        d      }| }||k  r#|j                         dk\  r|dz  }||z  }||k  r#|S )NrI      rF   rJ   r   r4   rL   )r   rM   rP   r   )rT   end_dateweekend_countdeltarW   s        r)   count_weekendszHelperClass.count_weekends   s    &&z:>
$$Xz:"	q))Hq!!h&##%*"E!L h& rD   c                 6    t        j                  | dz        }|S N   mathceil)amountvalues     r)   vacation_day_valuezHelperClass.vacation_day_value   s    		&)$rD   c                 2    t        j                  | dz        S )Ng      ?rc   )salarys    r)   gratificationzHelperClass.gratification   s    yy%%rD   c                     t        j                  |d      }t        j                  |d      }||z
  }|j                  dz  }|j                  dz  }|dz  }|dk\  r|dz  }|S )NrI   im  rb      r4   )r   rM   rK   )	r    
start_yearend_yeardate1date2r^   yearsremaining_daysremaining_monthss	            r)   get_end_document_total_yearsz(HelperClass.get_end_document_total_years   sp    !!*j9!!(J7 

c!c))R/ q QJErD   c                 "    t        |dz        }|S )Nr5   )r:   )r    monthsrr   s      r)   months_to_yearszHelperClass.months_to_years   s    F2IrD   c                     |dkD  rK|dk(  r#t        t        |      t        d      z  d      }|S t        t        |      t        d      z  d      }|S d}|S )Nr   r4   g͑T?rF   gUUUU?)roundr:   rN   )r    rK   extreme_zone_status_idtotals       r)   vacation_dayszHelperClass.vacation_days   sa    !8%*c$i%*==qA 	 c$i%*==qA  ErD   c                     |dkD  rc|dk(  r/t        j                  t        |dz         t        d      z        }|S t        j                  t        |dz         t        d      z        }|S d}|S )Nr   r4   g(\?g      ?)rd   re   rN   )r    rw   r{   r|   s       r)   progressive_vacation_daysz%HelperClass.progressive_vacation_days   sl    A:%*		%"3E$K"?@ 	 		5?eDk"AB  ErD   c                 .    |j                  d      }|d   S Nr3   r   r9   r    ruts     r)   numeric_rutzHelperClass.numeric_rut       iin1vrD   c                 &    |j                         }|S N)upper)r    stringresults      r)   upper_stringzHelperClass.upper_string   s    rD   c                 (    |j                  |      }|S r   r   )r    rg   	separators      r)   r9   zHelperClass.split   s    I&rD   c                     t               j                  |d      }|d   dz   |d   z   }| dk(  rdt        |      z   }|S | dk(  rt        |      dz   t        |      z   }|S )Nr3   r4   /r   z01/rF   )r	   r9   r;   typeperiodrg   s      r)   social_law_datezHelperClass.social_law_date   sl    $$VS1C*19CK'E  QYJOS[0ErD   c                     t               j                  |d      }t        |d         dk  rd|d   z   |d<   |d   |d   z   }|S )Nr3   r4   r6   r7   r   )r	   r9   r:   r   s      r)   social_law_periodzHelperClass.social_law_period   sN    $$VS1vay>BfQiF1Iq	F1I%rD   c                     t        j                         j                  dk(  rd| z
  }|S t        j                         j                  | z
  }|S ra   )r   nowrR   )rg   working_dayss     r)   social_law_working_daysz#HelperClass.social_law_working_days   sE    <<>2%:L  $<<>//%7LrD   c                     |Q|Ot        j                  t        |      d      }t        j                  t        |      d      }||z
  }|j                  S yNrI   r   )r   rM   r;   rK   )r    sinceuntil
since_date
until_dater^   s         r)   
legal_dayszHelperClass.legal_days   sP    !2!**3u:zBJ!**3u:zBJ+E::rD   c                    t        |      j                  d      }t        |      j                  d      }|Q|O|d   dk7  rF|d   dk7  r>t        |d         t        |d         z
  dz  t        |d         z   t        |d         z
  S yy)Nr3   r    r5   r4   )r;   r9   r:   )r    r   r   since_arrayuntil_arrays        r)   rw   zHelperClass.months  s    %j&&s+%j&&s+!21~#A"(<KN+c+a..AARG#kZ[nJ]]`cdopqdr`sssrD   c                 *    |j                  |d      }|S )Nr   replace)r    value_to_remover   s      r)   remove_from_stringzHelperClass.remove_from_string  s    4rD   c                 *    |j                  ||      }|S r   r   )r    value_to_replacereplace_valuer   s       r)   r   zHelperClass.replace  s     0-@rD   c                 :    	 t        |        y# t        $ r Y yw xY w)NTF)rN   
ValueErrorrg   s    r)   
is_numericzHelperClass.is_numeric  s#    	%L 		s    	c                 4    |dk  rdt        |      z   }|S |}|S )Nr6   r7   r;   )r    numberr   s      r)   add_zerozHelperClass.add_zero  s*    B;3v;&F  FrD   c                 p   t        j                         }|j                  }|j                  }|j                  }| j                  |      }t        j                  dd      }t        |      dz   t        |      z   dz   t        |      z   dz   t        |      z   dz   t        |      z   dz   t        |      z   }|S )Nr4   l   __)	r   r   rQ   rR   rS   r   randomrandintr;   )	r    r   descriptionr   current_yearcurrent_monthcurrent_dayrandom_float	file_names	            r)   r   zHelperClass.file_name'  s    llnxx		ggm4~~a)9:%+c#h6<s;?OORUUX[\gXhhknnqt  vC  rD  D  GJ  J  MP  Q]  M^  ^	rD   c                 :    t        |      dz   t        |      z   }|S )N r   )r    r   r   nicknames       r)   r   zHelperClass.nickname6  s    t9s?S]2rD   c                     t        j                  |d      }t        j                  |d      }d}|}||k  r-|j                         dk  r|dz  }|t        d      z  }||k  r-t	        |      S )NrI   r   rL   r4   rJ   )r   rM   rP   r   r:   )r    r   r   no_valid_entered_daysrT   r\   num_business_daysrW   s           r)   rK   zHelperClass.days;  s~    &&uj9
$$UJ7 !h&##%)!Q&!I1--L h&
 $%%rD   c                     t        t        t        t        |                   } | j	                          g dt        fdt        |       D              }|dz  }d|z
  }|dk(  ry|dk(  ryt        |      S )N)rF      r[   rL   rm      c              3   L   K   | ]  \  }}||t              z     z    y wr   )len).0idfactorss      r)   	<genexpr>z0HelperClass.verificator_digit.<locals>.<genexpr>O  s(     Q$!QGAG$455Qs   !$   r6   Kr7   )listmapr:   r;   reversesum	enumerate)r   	sum_valuerestverificator_digitr   s       @r)   r   zHelperClass.verificator_digitJ  ss    3sCH%&$Q)C.QQ	 2~I ""$())rD   c                 .    |j                  d      }|d   S r   r   r   s     r)   r   zHelperClass.numeric_rut]  r   rD   c                 V    | j                  d      } | d   dz   | d   z   dz   | d   z   } | S )Nr3   rF   r4   r   r   )dates    r)   convert_to_utf8zHelperClass.convert_to_utf8b  s8    zz#Aw}tAw&,tAw6rD   c                 "    t        | dz        }|S )Ng
ףp=
?)rz   )rg   nets     r)   get_netzHelperClass.get_netg  s    E$J
rD   c                 4   | t        j                  t        |       d      } t        j                         }|j                  }|j
                  }| j                  }| j
                  }||k(  r-||k(  r(t        ||d      }| |z
  j                  }t        d|      S yy)NrI   r4   r   )r   rM   r;   r   rQ   rR   rK   max)entrance_companyrW   r   r   entrance_yearentrance_month
first_daterK   s           r)   how_many_entrance_daysz"HelperClass.how_many_entrance_daysl  s    ''005E1F
S $<<>L (,,L(..M -11M-33N ,=1P%lM1E
 ):5;;1d|# rD   c                 J   | t        j                  t        |       d      } | j                  }| j                  }t        j
                         }|j                  }|j                  }t        j                  ||      }| j                  }||k(  r||k(  r||z
  }t        d|      S yyr   )
r   rM   r;   rQ   rR   r   r	   last_day_monthrS   r   )	exit_company	exit_year
exit_monthrW   r   r   r   exit_dayrK   s	            r)   how_many_exit_dayszHelperClass.how_many_exit_days  s    ##,,S->
KL %))I%++J $<<>L (,,L(..M )77	:NN $''HL(Z=-H &01d|#rD   c                     d k(  rd}|S Nr    )r   r   rg   s      r)   validate_entrancezHelperClass.validate_entrance      D=ErD   c                     |d k(  rd}|S r   r   )r    rg   s     r)   return_zero_empty_inputz#HelperClass.return_zero_empty_input  r   rD   c                     t        |      }t        |       } t        j                  | |      d   }t        j                  |       }|dk(  r|rd}nd}|dk7  rd}|S )Nr4   rF         rb   r:   rO   
monthrangeisleaprQ   rR   end_dayis_leap_years       r)   r   zHelperClass.last_day_month  s_    E
4y%%dE215t, A:,GGA:GrD   c                     t        |      }t        |       } t        j                  | |      d   }t        j                  |       }|dk(  r|rd}|S |dk(  r	|dk(  rd}|S d}|S )Nr4   rF   r   Fr   rb   r   r   s       r)   full_last_day_monthzHelperClass.full_last_day_month  sx    E
4y%%dE215t, A:,G  aZLE1G  GrD   c                     |dk(  rdddfS |dk(  rdddS |dk(  rd	d
dS |dk(  rdddS |dk(  rd	d
dS |dk(  rd	d
dS |dk(  rdddS |dk(  rdddS |dk(  rd	d
dS |dk(  rdddS |dk(  rd	d
dS |dk(  rdddS y )N1   )r   adjustment_day2r   rF   3rb   r   456789101112r   )r    rR   s     r)   final_day_monthzHelperClass.final_day_month  s    C< "b:;;c\ "a99c\ "a99c\ "b::c\ "a99c\ "a99c\ "b::c\ "b::c\ "a99d] "b::d] "a99d] "b:: rD   c                 H    t        j                         j                  d      S )NrI   )r   r   strftime)r    s    r)   get_time_Y_m_dzHelperClass.get_time_Y_m_d  s    ||~&&z22rD   c                 $   t        j                  | d      } t        j                  |d      }d}| |k  r\|dz  }| j                  dk(  r"| j                  | j                  dz   dd      } n | j                  | j                  dz   d      } | |k  r\|S )NrI   r   r4   r5   )rQ   rR   rS   )rR   rS   )r   rM   rR   r   rQ   )r   r   rw   s      r)   count_monthszHelperClass.count_months  s    &&z:>
&&z:>
J&aKF2%'//Z__q5HPQWX/Y
'//j6F6F6JPQ/R
 J& rD   c                    d}t        j                  ||      }t        j                  ||      }g }||k  r|j                  |j                  k(  r|}n8|j                  d      t	        d      z   }|t	        |j
                        z
  }||z
  j                  dz   }	|j                  |j                  |      |j                  |      |	g       |t	        d      z   }||k  r|S )NrI   r   rS   r[   rJ   r4   )	r   rM   rR   r   r   rS   rK   appendr  )
r    r   r   format	start_objend_objperiods
period_end
next_monthrK   s
             r)   get_periodszHelperClass.get_periods  s    %%eV4	##E627"'--/$
 '..2.69JJ
')*HH
 *0014D NNI..v6
8K8KF8SUYZ[ #YA%66I! 7"$ rD   c                    d}|dk\  r
|dk(  r|dz   }|dk\  r|dk(  s|dk(  r|dz   }|dk\  r|dk(  s
|dk(  s|dk(  r|dz   }|dk\  r|dk(  s|dk(  s
|dk(  s|d	k(  r|dz   }|d
k\  r|dk(  s|dk(  s|dk(  s
|d	k(  s|dk(  r|dz   }|dk\  r#|dk(  s|dk(  s|dk(  s|d	k(  s
|dk(  s|dk(  r|dz   }|dk\  r(|dk(  s|dk(  s|dk(  s|d	k(  s|dk(  s
|dk(  s|dk(  r|dz   }|dk\  r-|dk(  s#|dk(  s|dk(  s|d	k(  s|dk(  s|dk(  s
|dk(  s|dk(  r|dz   }|dk\  r2|dk(  s(|dk(  s#|dk(  s|d	k(  s|dk(  s|dk(  s|dk(  s
|dk(  s|dk(  r|dz   }|dk\  r7|dk(  s-|dk(  s(|dk(  s#|d	k(  s|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  s|dk(  r|d	z   }|dk\  r<|dk(  s2|dk(  s-|dk(  s(|d	k(  s#|dk(  s|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  s|dk(  r|d	z   }|dk\  rA|dk(  s7|dk(  s2|dk(  s-|d	k(  s(|dk(  s#|dk(  s|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  s|dk(  r|d	z   }|dk\  rF|dk(  s<|dk(  s7|dk(  s2|d	k(  s-|dk(  s(|dk(  s#|dk(  s|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  s|dk(  r|dz   }|dk\  rK|dk(  sA|dk(  s<|dk(  s7|d	k(  s2|dk(  s-|dk(  s(|dk(  s#|dk(  s|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  s|dk(  r|dz   }|dk\  rP|dk(  sF|dk(  sA|dk(  s<|d	k(  s7|dk(  s2|dk(  s-|dk(  s(|dk(  s#|dk(  s|dk(  s|dk(  s|dk(  s|dk(  s
|dk(  s|dk(  r|dz   }|dk(  rd}|S )Nr      r4      rF      r      r[      rL      rm      r            	      r6      r      r5            r   )r    rr   levelr|   s       r)   r   z%HelperClass.progressive_vacation_days'  sN   B;EQJAIEB;EQJ%1*AIEB;EQJ%1*
AIEB;EQJ%1*
eqjAIEB;EQJ%1*
eqjTY]^T^AIEB;EQJ%1*
eqjTY]^T^bgklblAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpzAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  IAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  I  MR  VW  MWAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  I  MR  VW  MW  [`  df  [fAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  I  MR  VW  MW  [`  df  [f  jo  su  juAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  I  MR  VW  MW  [`  df  [f  jo  su  ju  y~  BD  yDAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  I  MR  VW  MW  [`  df  [f  jo  su  ju  y~  BD  yD  HM  QS  HSAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  I  MR  VW  MW  [`  df  [f  jo  su  ju  y~  BD  yD  HM  QS  HS  W\  `b  WbAIEB;EQJ%1*
eqjTY]^T^bgklblpuyzpz  D  HI  I  MR  VW  MW  [`  df  [f  jo  su  ju  y~  BD  yD  HM  QS  HS  W\  `b  Wb  fk  oq  fqAIEA:ErD   c                     t        j                  | d      }t        j                  |j                  |j
                        d   }|S )NrI   r4   r   rM   rO   r   rQ   rR   date_strr   last_days      r)   get_last_day_of_monthz!HelperClass.get_last_day_of_month]  8      :6&&tyy$**=a@rD   c                     t        j                  | d      }t        j                  |j                  |j
                        d   }|S )Nz%d/%m/%Yr4   r5  r6  s      r)    social_law_get_last_day_of_monthz,HelperClass.social_law_get_last_day_of_monthc  r:  rD   c                     t        j                  | d      }|j                  d      t        d      z
  t        d      z   }|t        d      z
  j	                  d      S )NrI   r4   r  rJ       )r   rM   r   r   r  r6  s      r)   last_day_of_monthzHelperClass.last_day_of_monthi  sS      :6<<A<&)::YB=OO9!,,66zBBrD   c                     | dk(  ryy)Nr4   SNr   r   s    r)   get_social_law_young_statusz'HelperClass.get_social_law_young_statusn  s    A:rD   c                     t        j                  | d      }t        j                  |dd      d   }|j	                  d      S )NrI   rF   M)startr  freqr4   )r   rM   pandas
date_ranger  )r   date_dtnext_month_ends      r)   extention_contractzHelperClass.extention_contractt  sB    ##D*5  **!#NqQ &&z22rD   c                 l    | j                  d      } | d   }| d   }t        |      dz   t        |      z   S Nr3   r4   r   r9   r;   r   rR   rQ   s      r)   fix_current_dte_periodz"HelperClass.fix_current_dte_period~  s9    c"q	ay4y3U++rD   c                 l    | j                  d      } | d   }| d   }t        |      dz   t        |      z   S rN  rO  rP  s      r)   
fix_periodzHelperClass.fix_period  s:    c"q	ay5zC#d)++rD   c                     | j                  d      } t        | d         dz
  }|dk(  rd}t        | d         dz
  }n| d   }|dk  rdt        |      z   }nt        |      }t        |      dz   t        |      z   S )Nr3   r4   r   r5   r6   r7   r8   rP  s      r)   fix_last_dte_periodzHelperClass.fix_last_dte_period  s~    c"F1I"A:Evay>A%D!9D2:#e*$EJE4y3U++rD   c                 L    | j                  d      } | d   dz   | d   z   dz   dz   S )Nr3   r   r4   z-01z	 00:00:00r   )r   s    r)   create_period_datezHelperClass.create_period_date  s2    c"ayC&)+e3kAArD   N)r   )4__name__
__module____qualname__r*   r1   rC   rG   rY   r_   rh   rk   ru   rx   r}   r   r   r   r9   r   r   r   r   rw   r   r   r   r   r   r   rK   r   r   r   r   r   r   r   r   r   r  r  r  r   r9  r<  r?  rC  rL  rQ  rS  rU  rW  r   rD   r)   r	   r	      s	   C<C@,*	"&$		


	



&*&


B D$";43 83lC
3,,,$BrD   r	   )rO   rd   r   r   r   app.backend.db.modelsr   rH  r   email.mime.textr   email.mime.multipartr   r	   r   rD   r)   <module>r^     s1       ( 5    $ .Y
B Y
BrD   