
    Y(	i\                          d dl Z d dlZd dlmZ d dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dl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 y)    N)	Nominatim)geodesic)datetime)timezone)ZoneInfovalidate_emailEmailNotValidErrorc                 6    d}t        j                  ||       ryy)Nz^09\d*TF)rematch)mobile_numberpatterns     /var/www/api/v1/app_func.pycheck_mobiler      s    G	xx'    c                 H    	 t        |       }y# t        $ r
}Y d }~yd }~ww xY w)NTFr   )emailves      r   check_emailr      s'    5! s    	!!c                 :    |}t        |       dkD  r
|dd  }| |z   }|S )Nr      )len)country_coder   mobile_fulls      r   
set_mobiler       s0    K
<1%ab)"]2r   c                     i }| j                   j                  D ].  }t        t        | |j                              ||j                  <   0 |S N)	__table__columnsstrgetattrname)data_rowdcolumns      r   
class2jsonr(   (   s?    
A$$,,WXv{{;<&++ -Hr   c                 b    | j                         D ci c]  \  }}d|vs|| }}}|S c c}}w )Nid)items)inp_jsonkr   filtered_datas       r   deleteIDr/   /   s;    &.nn&6R&6da4PQ:QQT&6MR Ss   ++c                     | }g }g }g d}|D ]:  }||v s|j                  |      }|j                  |       |j                  |       < t        t        ||            }|S )N)r   addresscitymobile
first_name	last_namelocation)getappenddictzip)db_jsondatakeysvaluesoutput_keysitemvaluer&   s           r   customer_output_datarB   5   se    D
DF_K;HHTNEKKMM% 	  	SfAHr   c                     	 t        j                  t        j                  t        j                        }t        dt        |      z         }|j                  | d|       y# t        $ r
}Y d }~yd }~ww xY w)NzNova lozinka:zGetWork - Nova lozinkatosubjectcontentsFT)yagmailSMTPapp_settings
EMAIL_FROM
EMAIL_CODEr"   send	Exception)to_emailr<   yagtextr   s        r   send_mail_passwordrR   D   sj    	ll<22L4K4KL?SY./* 	 	
   s   AA   	A3.A3c                 2   	 t        j                  t        j                  t        j                        }|d   }|d   }|d   }|d   }|d   }|d   }|dk(  rd}d	| d
| d| d| d| d| d}	|j                  | d|	       y# t        $ r
}
Y d }
~
yd }
~
ww xY w)N	name_fromname_toservicedatequantitydescription -   Poštovani D,

        Zelimo Vam javiti da je potvrdjena rezervacija za uslugu z na dan z u trajanju od ) sati.

        Molimo Vas kontaktirajte k    kako bi dogovorili točan termin za izvršenje usluge.
        
        Dodatna poruka za uslugu:
        u8   

        Srdačan pozdrav,
        GetWork tim
        zGetWork - Rezervacija uslugerD   FTrH   rI   rJ   rK   rL   rM   rN   )rO   r<   rP   rT   rU   rV   rW   rX   rY   rQ   r   s              r   send_mail_paymentra   Q   s    ll<22L4K4KL%	y/y/F|
#=)Kyk *BBI(SWRXXghpgq r"") +	 
 	 	0 	 	
   s   B B 	BBc                 "   	 t        j                  t        j                  t        j                        }|d   }|d   }|d   }|d   }|d   }|dk(  rd}d| d	| d
| d| d| d}|j                  | d|       y# t        $ r
}	Y d }	~	yd }	~	ww xY w)NrT   rU   rV   r   rY   rZ   r[   r\   r]   z na dan i sat z$.

        Molimo Vas kontaktirajte r_   u:   

        Srdačan pozdrav,
        Fit&More team
        u   GetWork - Narudžba uslugerD   FTr`   )
rO   r<   rP   rT   rU   rV   rW   rY   rQ   r   s
             r   send_mail_orderrc   s   s    ll<22L4K4KL%	y/y/J=)Kwi (BBI.Y]X^ _""+ -	 
 	 	. 	 	
   s   A8A; ;	B	Bc           	         	 t        j                  t        j                  t        j                        }|d   }|d   }|d   }t        j
                  }d| d| d| d| d	}|j                  | d	|
       y# t        $ r
}Y d }~yd }~ww xY w)NrT   rU   r   r\   z<,

        Zelimo Vam javiti da je rezervacija na dan i sat z obrisana, jer je proslo r^   uY    ako imate bilo kakvih pitanja.

        Srdačan pozdrav,
        Fit&More team
        z!GetWork - Otkazivanje rezervacijerD   FT)rH   rI   rJ   rK   rL   PRENOTED_PERIOD_HrM   rN   )	rO   r<   rP   rT   rU   rW   periodrQ   r   s	            r   send_mail_deleterg      s    ll<22L4K4KL%	y/J//wi (::>?XY_X` a""+ -		 	5 	 	
   s   A4A7 7	B
B
c                     	 t        j                  t        j                  t        j                        }|d   }|d   }d| d| d}|j                  | d|       y	# t        $ r
}Y d }~yd }~ww xY w)
NrU   new_idu-   Poštovani,

        Nova registracija: ID:  z
 za email u9   .

        Srdačan pozdrav,
        GetWork tim
        zGetWork - Nova registracijarD   FTr`   )rO   r<   rP   rU   ri   rQ   r   s          r   send_mail_registerrj      s    ll<22L4K4KLy/h!!'
7) <	 	/ 	 	
   s   AA 	A/*A/c                 t   t        dd      }|j                  |      }d}|rW|j                  |j                  |j                  fdd      }|j
                  j                  di       }|j                  d      }|  d	| d
|z   }|j                  |      }i }|r|j                  |d<   |j                  |d<   |S )Ngetwork_app_geoloc
   )
user_agenttimeoutrZ   en)languagezoomr1   countryz,  LatLon)r   geocodereverselatitude	longituderawr7   )	r1   r2   
geolocatorr6   rs   location_detailsaddress_rawfull_addressress	            r   set_locationr      s    &:BGJ !!$'HG%--x/@/@(BTBT.U`dkm-n&**..y"=//),Yba(72L!!,/H
C&&E
''E
Jr   c                 z   | j                  dd      } |j                  dd      }t        j                  |       } t        | d         | d<   t        | d         | d<   | d   | d   f}t        j                  |      }t        |d         |d<   t        |d         |d<   |d   |d   f}t	        ||      j
                  S )N'"ru   ry   rv   rz   )replacejsonloadsfloatr   km)	location1	location2point1point2s       r   distancer      s    !!#s+I!!#s+I

9%I!)E"23Ij"9U#34Ikj!)K"89F

9%I!)E"23Ij"9U#34Ikj!)K"89FFF#&&&r   c                 ^    t        |       }t        | |z
  dz        }| }|dkD  r| d|d}|S )N<   r   :02d)int)time_decimalhourmintime_strs       r   time_convertr      sE    |D
|d"b(
)CH
QwV1SI&Or   c                     ddl m} |j                  |       }t        |      }|j	                  |      }|j                  d      }|S )Nr   )parser%d.%m.%Y %H:%M)dateutilr   isoparser   
astimezonestrftime)
event_time
event_zoner   dtlocal_tzlocal_dtlocal_dt_strs          r   time_calendar_convertr      sF    		$B 
#H}}X&H $$%56Lr   c                     t        j                  | d      j                  t        j                        }t        |      }|j                  |      }|j                  d      }|S )Nz%Y-%m-%dT%H:%M:%SZ)tzinfor   )r   strptimer   r   utcr   r   r   )r   r   utc_dtr   r   r   s         r   time_calendar_convert_OLDr     s[    z+?@HHPXP\P\H]F
#H  *H$$%56Lr   c                 :    t         j                  t        |          S r   )rJ   service_typer   )
service_ids    r   service_convertr     s    $$S_55r   c                 6    | dt         j                  d   z   }|S )Nz.2fHR)rJ   currency)price_decimal	price_strs     r   price_convertr     s"     %)>)>t)DDIr   )!r   rH   geopy.geocodersr   geopy.distancer   r   r   r   zoneinfor   email_validatorr	   r
   rJ   r   r   r   r(   r/   rB   rR   ra   rc   rg   rj   r   r   r   r   r   r   r    r   r   <module>r      s    	  % #     >  DB:6,'	6r   