
    bfh^                     p    d dl Z d dlZd dlZd dlmZ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)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d4d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 Z2y3)5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	            HC:\Users\jesus\berger_seidle_backend\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_periodK   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 )Nr2   r   r3      r4   r5   r6   r7   r;   s         r(   calculate_last_two_periodsz&HelperClass.calculate_last_two_periodsa   s    '--c2!."34">!#451$2Q6 "2 4q 8r! #c*;&< <*+c1C8I4JJrC   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   r3   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_daysv   s    &&z:>
!
5?*I1--L 1 1<3E3E|GWGWX[\\a
 5?*
 rC   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 )NrH      rE   rI   r   r3   rK   )r   rL   rO   r   )rS   end_dateweekend_countdeltarV   s        r(   count_weekendszHelperClass.count_weekends   s    &&z:>
$$Xz:"	q))Hq!!h&##%*"E!L h& rC   c                 6    t        j                  | dz        }|S N   mathceil)amountvalues     r(   vacation_day_valuezHelperClass.vacation_day_value   s    		&)$rC   c                 2    t        j                  | dz        S )Ng      ?rb   )salarys    r(   gratificationzHelperClass.gratification   s    yy%%rC   c                     t        j                  |d      }t        j                  |d      }||z
  }|j                  dz  }|j                  dz  }|dz  }|dk\  r|dz  }|S )NrH   im  ra      r3   )r   rL   rJ   )	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rC   c                 "    t        |dz        }|S )Nr4   )r9   )r   monthsrq   s      r(   months_to_yearszHelperClass.months_to_years   s    F2IrC   c                     |dkD  rK|dk(  r#t        t        |      t        d      z  d      }|S t        t        |      t        d      z  d      }|S d}|S )Nr   r3   g͑T?rE   gUUUU?)roundr9   rM   )r   rJ   extreme_zone_status_idtotals       r(   vacation_dayszHelperClass.vacation_days   sa    !8%*c$i%*==qA 	 c$i%*==qA  ErC   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   r3   g(\?g      ?)rc   rd   rM   )r   rv   rz   r{   s       r(   progressive_vacation_daysz%HelperClass.progressive_vacation_days   sl    A:%*		%"3E$K"?@ 	 		5?eDk"AB  ErC   c                 .    |j                  d      }|d   S Nr2   r   r8   r   ruts     r(   numeric_rutzHelperClass.numeric_rut       iin1vrC   c                 &    |j                         }|S N)upper)r   stringresults      r(   upper_stringzHelperClass.upper_string   s    rC   c                 (    |j                  |      }|S r   r   )r   rf   	separators      r(   r8   zHelperClass.split   s    I&rC   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 )Nr2   r3   /r   z01/rE   )r   r8   r:   typeperiodrf   s      r(   social_law_datezHelperClass.social_law_date   sl    $$VS1C*19CK'E  QYJOS[0ErC   c                     t               j                  |d      }t        |d         dk  rd|d   z   |d<   |d   |d   z   }|S )Nr2   r3   r5   r6   r   )r   r8   r9   r   s      r(   social_law_periodzHelperClass.social_law_period   sN    $$VS1vay>BfQiF1Iq	F1I%rC   c                     t        j                         j                  dk(  rd| z
  }|S t        j                         j                  | z
  }|S r`   )r   nowrQ   )rf   working_dayss     r(   social_law_working_daysz#HelperClass.social_law_working_days   sE    <<>2%:L  $<<>//%7LrC   c                     |Q|Ot        j                  t        |      d      }t        j                  t        |      d      }||z
  }|j                  S yNrH   r   )r   rL   r:   rJ   )r   sinceuntil
since_date
until_dater]   s         r(   
legal_dayszHelperClass.legal_days   sP    !2!**3u:zBJ!**3u:zBJ+E::rC   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)Nr2   r    r4   r3   )r:   r8   r9   )r   r   r   since_arrayuntil_arrays        r(   rv   zHelperClass.months  s    %j&&s+%j&&s+!21~#A"(<KN+c+a..AARG#kZ[nJ]]`cdopqdr`sssrC   c                 *    |j                  |d      }|S )Nr   replace)r   value_to_remover   s      r(   remove_from_stringzHelperClass.remove_from_string  s    4rC   c                 *    |j                  ||      }|S r   r   )r   value_to_replacereplace_valuer   s       r(   r   zHelperClass.replace  s     0-@rC   c                 :    	 t        |        y# t        $ r Y yw xY w)NTF)rM   
ValueErrorrf   s    r(   
is_numericzHelperClass.is_numeric  s#    	%L 		s    	c                 4    |dk  rdt        |      z   }|S |}|S )Nr5   r6   r:   )r   numberr   s      r(   add_zerozHelperClass.add_zero  s*    B;3v;&F  FrC   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 )Nr3   l   __)	r   r   rP   rQ   rR   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^  ^	rC   c                 :    t        |      dz   t        |      z   }|S )N r   )r   r   r   nicknames       r(   r   zHelperClass.nickname5  s    t9s?S]2rC   c                     t        j                  |d      }t        j                  |d      }d}|}||k  r-|j                         dk  r|dz  }|t        d      z  }||k  r-t	        |      S )NrH   r   rK   r3   rI   )r   rL   rO   r   r9   )r   r   r   no_valid_entered_daysrS   r[   num_business_daysrV   s           r(   rJ   zHelperClass.days:  s~    &&uj9
$$UJ7 !h&##%)!Q&!I1--L h&
 $%%rC   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)rE      rZ   rK   rl      c              3   L   K   | ]  \  }}||t              z     z    y wr   )len).0idfactorss      r(   	<genexpr>z0HelperClass.verificator_digit.<locals>.<genexpr>N  s(     Q$!QGAG$455Qs   !$   r5   Kr6   )listmapr9   r:   reversesum	enumerate)r   	sum_valuerestverificator_digitr   s       @r(   r   zHelperClass.verificator_digitI  ss    3sCH%&$Q)C.QQ	 2~I ""$())rC   c                 .    |j                  d      }|d   S r   r   r   s     r(   r   zHelperClass.numeric_rut\  r   rC   c                 V    | j                  d      } | d   dz   | d   z   dz   | d   z   } | S )Nr2   rE   r3   r   r   )dates    r(   convert_to_utf8zHelperClass.convert_to_utf8a  s8    zz#Aw}tAw&,tAw6rC   c                 "    t        | dz        }|S )Ng
ףp=
?)ry   )rf   nets     r(   get_netzHelperClass.get_netf  s    E$J
rC   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)NrH   r3   r   )r   rL   r:   r   rP   rQ   rJ   max)entrance_companyrV   r   r   entrance_yearentrance_month
first_daterJ   s           r(   how_many_entrance_daysz"HelperClass.how_many_entrance_daysk  s    ''005E1F
S $<<>L (,,L(..M -11M-33N ,=1P%lM1E
 ):5;;1d|# rC   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   rL   r:   rP   rQ   r   r   last_day_monthrR   r   )	exit_company	exit_year
exit_monthrV   r   r   r   exit_dayrJ   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|#rC   c                     d k(  rd}|S Nr    )r   r   rf   s      r(   validate_entrancezHelperClass.validate_entrance      D=ErC   c                     |d k(  rd}|S r   r   )r   rf   s     r(   return_zero_empty_inputz#HelperClass.return_zero_empty_input  r   rC   c                     t        |      }t        |       } t        j                  | |      d   }t        j                  |       }|dk(  r|rd}nd}|dk7  rd}|S )Nr3   rE         ra   r9   rN   
monthrangeisleaprP   rQ   end_dayis_leap_years       r(   r   zHelperClass.last_day_month  s_    E
4y%%dE215t, A:,GGA:GrC   c                     t        |      }t        |       } t        j                  | |      d   }t        j                  |       }|dk(  r|rd}|S |dk(  r	|dk(  rd}|S d}|S )Nr3   rE   r   Fr   ra   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rC   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   rE   3ra   r   456789101112r   )r   rQ   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:: rC   c                 H    t        j                         j                  d      S )NrH   )r   r   strftime)r   s    r(   get_time_Y_m_dzHelperClass.get_time_Y_m_d  s    ||~&&z22rC   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 )NrH   r   r3   r4   )rP   rQ   rR   )rQ   rR   )r   rL   rQ   r   rP   )r   r   rv   s      r(   count_monthszHelperClass.count_months  s    &&z:>
&&z:>
J&aKF2%'//Z__q5HPQWX/Y
'//j6F6F6JPQ/R
 J& rC   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 )NrH   r   rR   rZ   rI   r3   )	r   rL   rQ   r   r   rR   rJ   appendr  )
r   r   r   format	start_objend_objperiods
period_end
next_monthrJ   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"$ rC   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      r3      rE      r      rZ      rK      rl      r            	      r5      r      r4            r   )r   rq   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rC   c                     t        j                  | d      }t        j                  |j                  |j
                        d   }|S )NrH   r3   r   rL   rN   r   rP   rQ   date_strr   last_days      r(   get_last_day_of_monthz!HelperClass.get_last_day_of_month\  8      :6&&tyy$**=a@rC   c                     t        j                  | d      }t        j                  |j                  |j
                        d   }|S )Nz%d/%m/%Yr3   r4  r5  s      r(    social_law_get_last_day_of_monthz,HelperClass.social_law_get_last_day_of_monthb  r9  rC   c                     t        j                  | d      }|j                  d      t        d      z
  t        d      z   }|t        d      z
  j	                  d      S )NrH   r3   r  rI       )r   rL   r   r   r  r5  s      r(   last_day_of_monthzHelperClass.last_day_of_monthh  sS      :6<<A<&)::YB=OO9!,,66zBBrC   c                     | dk(  ryy)Nr3   SNr   r   s    r(   get_social_law_young_statusz'HelperClass.get_social_law_young_statusm  s    A:rC   c                     t        j                  | d      }t        j                  |dd      d   }|j	                  d      S )NrH   rE   M)startr  freqr3   )r   rL   pandas
date_ranger  )r   date_dtnext_month_ends      r(   extention_contractzHelperClass.extention_contracts  sB    ##D*5  **!#NqQ &&z22rC   c                 l    | j                  d      } | d   }| d   }t        |      dz   t        |      z   S )Nr2   r3   r   )r8   r:   r   rQ   rP   s      r(   fix_current_dte_periodz"HelperClass.fix_current_dte_period}  s9    c"q	ay4y3U++rC   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 )Nr2   r3   r   r4   r5   r6   r7   rM  s      r(   fix_last_dte_periodzHelperClass.fix_last_dte_period  s    c"F1I"A:Evay>A%D!9D2:#e*$EJE5zC#d)++rC   c                 L    | j                  d      } | d   dz   | d   z   dz   dz   S )Nr2   r   r3   z-01z	 00:00:00r   )r   s    r(   create_period_datezHelperClass.create_period_date  s2    c"ayC&)+e3kAArC   N)r   )3__name__
__module____qualname__r)   r0   rB   rF   rX   r^   rg   rj   rt   rw   r|   r~   r   r   r8   r   r   r   r   rv   r   r   r   r   r   r   rJ   r   r   r   r   r   r   r   r   r   r  r  r  r  r8  r;  r>  rB  rK  rN  rP  rR  r   rC   r(   r   r      s   C<C@,*	"&$		


	



&*&


B D$";43 83lC
3,,$BrC   r   )rN   rc   r   r   r   rG  r   email.mime.textr   email.mime.multipartr   r   r   rC   r(   <module>rX     s.       (    $ .P
B P
BrC   