3
hi                 @   sj  d dl mZmZmZmZmZmZmZ d dlmZm	Z	m
Z
 d dlZd dlmZmZ d dlmZ d dlmZ d dlT d dlT d dlT d dlT d dlT d dlmZ d	d
 Zdd Zdd Zdd Zdd Zejddgddd Zejddgddd Z ejddgddd Z!ejddgddd  Z"ejd!dgdd"d# Z#ejd$d%gdd&d' Z$ejd(d)d* Z%dS )+    )Flaskjsonifyrender_templateurl_forrequestredirectjson)datetime	timedeltadateN)appbookings_logger)db)Note)*)AsyncRequestsc             C   s   | j j  d S )N)sessionclose)self r   1/booking_service/app/routes/booking_notes_urls.pyr      s    r   c             C   s  | d }| d }i }| d |d< | d |d< t j jd|d< | d |d< | d	 |d	< tjtjd
 d}t|}t|}| d }tdt	d|d}t
||||}	y&|jjjj|	j d}
tdt|
iS  tk
r
 } z&tj }tdt| d | W Y d d }~X nX d S )N	recipientsenderbooking_refbooking_ref_codetodayz%Ycopyright_yearnamenoteSENDGRID_API_KEY)apikeysubjectz	text/htmlzcheckpoint_alert.html)data)request_bodymessagezError: z	. Trace: )r	   nowstrftimesendgridSendGridAPIClientr   configEmailContentr   Mailclientmailsendpostgetr   str	Exception	traceback
format_exc)
email_datar   r   booking_detailssg
from_emailto_emailr!   contentr.   responseetracer   r   r   RangerNoteMailer   s,    r?   c             C   s4  | d }| d }i }| d |d< | d |d< t j jd|d< | d |d< | d |d< | d	 |d	< | d
 |d
< | d |d< tjtjd d}t|}t|}| d }tdt	d|d}t
||||}	y&|jjjj|	j d}
tdt|
iS  tk
r. } z&tj }tdt| d | W Y d d }~X nX d S )Nr   r   destinationr   z%Yr   r   adultchildrenvehicle_regunticketed_alertr   )r    r!   z	text/htmlz checkpoint_unticketed_alert.html)r"   )r#   r$   zError: z	. Trace: )r	   r%   r&   r'   r(   r   r)   r*   r+   r   r,   r-   r.   r/   r0   r1   r   r2   r3   r4   r5   )r6   r   r   Zalert_detailsr8   r9   r:   r!   r;   r.   r<   r=   r>   r   r   r   RangerUnticketedNoteMailer5   s4    
rE   c             C   s  | d }| d }i }| d |d< | d |d< t j jd|d< | d |d< | d	 |d	< | d
 |d
< tjtjd d}t|}t|}| d }tdt	d|d}t
||||}	y&|jjjj|	j d}
tdt|
iS  tk
r } z&tj }tdt| d | W Y d d }~X nX d S )Nr   r   r   r   r   z%Yr   r   r   update_noter   )r    r!   z	text/htmlzcheckpointupdate_alert.html)r"   )r#   r$   zError: z	. Trace: )r	   r%   r&   r'   r(   r   r)   r*   r+   r   r,   r-   r.   r/   r0   r1   r   r2   r3   r4   r5   )r6   r   r   r7   r8   r9   r:   r!   r;   r.   r<   r=   r>   r   r   r   updateRangerNoteMailerV   s.    rG   c             C   s(  | d }| d }i }| d |d< | d |d< t j jd|d< | d |d< | d	 |d	< | d
 |d
< | d |d< tjtjd d}t|}t|}| d }tdt	d|d}t
||||}	y&|jjjj|	j d}
tdt|
iS  tk
r" } z&tj }tdt| d | W Y d d }~X nX d S )Nr   r   r   r   r   z%Yr   r   r   rF   rD   r   )r    r!   z	text/htmlz&checkpointupdate_unticketed_alert.html)r"   )r#   r$   zError: z	. Trace: )r	   r%   r&   r'   r(   r   r)   r*   r+   r   r,   r-   r.   r/   r0   r1   r   r2   r3   r4   r5   )r6   r   r   r7   r8   r9   r:   r!   r;   r.   r<   r=   r>   r   r   r    updateUnticketedRangerNoteMaileru   s2    
rH   z	/note/newPOST)methodsc              C   s$  dddddidddg} t tj| }|r:td|id	fS y"tjd
 rVttjd
 }nd }W n tk
rt   d }Y nX tttj	 tjd tjd |tjd t
j d}tjj| y0tjj  tt g }|jd td|idfS  tk
r   tjj  tt g }|jdd	f Y nX d S )N
booking_idz
Booking ID)fieldaliasrL   r   
session_idz
Session IDmessagesi  show_on_invoice)booking_notes_public_idrK   r   rP   rN   
created_atzNew note saved.r$      z4There was an error saving the note. Try again later.)fieldValidationr   r   r   boolr3   r   r2   uuiduuid4r	   r%   r   r   addcommitr   appendrollback)validation_listrO   rP   r   r$   r   r   r   
addNewNote   sB    





r]   z/inspection-note/newc           (   C   sb  dddddidddg} t tj| }|r:td|id	fS y&d }d
}tjd rZtjd }nd }W n  tk
r   d }d
}d }Y nX g }tttj tjd tjd |tjd ||t	j
 d}tjj| tttj tjd dtjd t	j
 d}tjj| ytjj  tt W n> tk
rR   tjj  tt |jd td|idfS X g }|dkrDtjjtjtjtjd kj }|s|jd td|idfS |j}	i }
ttjd |
 |
d }|
d }dg}yTt|dkr(x>|D ]2}i }||d< ||d< d|	 d |d< tjd |d< ||d< tjd |d< t	j
 jd|d< |	|d < yt| |jd! tttj tjd d"tjd t	j
 d}tjj| ytjj  tt W n( tk
r   tjj  tt Y nX td|id#fS  tk
r } ztt|W Y d d }~X nX qW n W n tk
r@   Y nX n|jd$ td|id#fS d S )%NrK   z
Booking ID)rL   rM   rL   r   rN   z
Session IDrO   i     alert)rQ   rK   r   rP   rN   ranger_noter_   rR   zAn inspection note was created)booking_activity_public_idrK   booking_activity_descriptionrN   rR   z.An error occured while saving inspection Note.r$   i  Tz(An error occured while sending an alert.emailsession_userz!obtsalert@olpejetaconservancy.orgr   r   r   zBooking Alert (#)r!   r   z%B %Yr   r   zAlert sent successfully.zAlert email sentrS   z Booking Note successfully saved.)rT   r   r   r   r3   r   r2   rV   rW   r	   r%   r   r   rX   BookingActivityrY   r   r[   rZ   queryBookingfilterbooking_public_idfirstr   getBookingSessionUserlenr&   r?   KeyError)r\   rO   rP   r`   r_   r$   r   booking_activityreturn_bookingr   	user_inforc   r   facility_mailing_list
each_emailr6   r=   r   r   r   addNewInsectionNote   s    












&
rt   z/inspection-unticketed-note/newc           %   C   sh  t jjdd} t jjd}t jjd}t jjd}t jjdd}t jjdd}t jjdd}t jjd	d}t jjd
d}t jjdd}	t jjdd}
t jjd}g }| j s|jd |j s|jd |dkr|dkr|jd |s|jd |j s|jd |j s|jd |r.td|idfS tjjt	j
t	jjt	jj|j }d}y(d }d}t jd rzt jd }nd }W n" tk
r   d }d}d }Y nX g }ttj }|d d }t	||| |||||t jd ||tj |||||	|
d}tjj| g }|dkrJtd i }tt jd | |d }|d  }tjjtjtj| kjttj }|j}d!g}yt |dkr.x|D ]}i }||d"< ||d#< d$| d% |d&< ||d'< ||d(< t!||d)< t!||d*< ||d+< ||d,< tj j"d-|d.< t jjd	d|d/< t jjd
d|d0< t jjdd|d1< t jjdd|d2< t jjdd|d3< t jjdd|d4< yt#| y,tjj$  t%t |jd5 td6|id7fS  tk
r } z4t| tjj&  t%t |jd8 td6|id9fS d }~X nX W n0 tk
r$ } ztt|W Y d d }~X nX qW n W n t'k
rF   Y nX n|jd: td6|id7fS d S );NZunticketed_destination Zunticketed_adultsZunticketed_childrenZunticketed_vehicle_registrationZunticketed_gateZunticketed_infantsZunticketed_guideZunticketed_nameZunticketed_vehicle_typeZunticketed_driverZunticketed_mileagerN   z"Destination has not been Provided!z!Registerer has not been Provided!r   z$Number of pax has not been Provided!z+Vehicle registration has not been Provided!zgate has not been Provided!zName has not been Provided!rO   i  zUnticketed guests   r_   r^      )rQ   r   r@   gaterC   rA   rB   rP   rN   r`   r_   rR   guideinfantsr   vehicle_typedrivermileageTz	and hrererc   rd   z!obtsalert@olpejetaconservancy.orgr   r   zUnticketed Booking Alert (re   r!   r   r@   rA   rB   rC   rD   z%B %Yr   Z
guest_namer{   r|   r}   rz   ry   zAlert sent successfully.r$   rS   z.An error occured while saving inspection Note.i  zNote successfully saved.)(r   r   r1   striprZ   r   r   r   rg   r   add_columnsrQ   ri   rC   ilikeallr3   r2   rV   rW   r	   r%   rX   printrl   Destinationgatepass_destination_public_idoptions	FromCachedb_cacherk   gatepass_destination_namerm   intr&   rE   rY   r   r[   rn   )r@   adultsrB   rC   rx   rz   ry   r   r{   r|   r}   rN   rO   Zreturn_vehicle_regZnote_detailrP   r`   r_   r$   booking_notes_idbooking_notes_id_referencer   rq   rc   destination_dbdestination_namerr   rs   r6   r=   r   r   r   addNewUnticketedInsectionNote@  s    	












 &
r   z/inspection-note/updatec               C   s*  dddddidddg} t tj| }|r:td|id	fS y&d }d
}tjd rZtjd }nd }W n  tk
r   d }d
}d }Y nX g }tttj tjd tjd tjd |tjd ||t	j
 d	}tjj| tttj tjd dtjd  tjd t	j
 d}tjj| g }tjjtjtjtjd kj }|sV|jd td|idfS |j}	i }
ttjd |
 |
d }|
d }dg}ylt|dkrxV|D ]J}i }||d< ||d< d|	 d |d< tjd |d< tjd |d< ||d< tjd |d< t	j
 jd|d < |	|d!< yt| |jd" tttj tjd d#tjd  tjd t	j
 d}tjj| ytjj  tt W n( tk
r   tjj  tt Y nX td|id$fS  tk
r } ztt|W Y d d }~X nX qW n W n0 tk
r$ } ztt|W Y d d }~X nX d S )%Nrj   z
Booking ID)rL   rM   rL   r   rN   z
Session IDrO   i  r^   r_   rF   note_public_id)	rQ   rK   r   rF   rP   rN   r`   r_   rR   z6An inspection update note was created on booking note )ra   rK   rb   rN   rR   z/An error occured while sending an update alert.r$   i  rc   rd   z!obtsalert@olpejetaconservancy.orgr   r   r   zBooking Alert Update(#re   r!   r   rK   z%B %Yr   r   zAlert updated successfully.z Alert update email sent for noterS   )rT   r   r   r   r3   r   r2   rV   rW   r	   r%   r   r   rX   rf   rg   rh   ri   rj   rk   rZ   r   rl   rm   r&   rG   rY   r   r[   )r\   rO   rP   r`   r_   r$   r   ro   rp   r   rq   rc   r   rr   rs   r6   r=   r   r   r   updateNewInsectionNote  s    










&r   z"/unticketed-inspection-note/updatec               C   s  dddddidddg} t tj| }|r:td|id	fS tjd }tjd
 }|d d }tjjtjtj	|kj
 }|sg }|jd| d  td|idfS y&d }d}tjd rtjd }	nd }	W n  tk
r   d }d}d }	Y nX g }tttj |jtjd tjd
 |tjd ||	tj d	}
tjj|
 g }i }ttjd | |d }|d }dg}ypt|dkrАxZ|D ]N}i }||d< ||d< d| d |d< tjd |d< tjd |d< ||d< tjd |d< ||d < tj jd!|d"< ||d< yt| |jd# tttj |jd$tjd
  tjd tj d%}tjj| ytjj  tt W n( tk
r   tjj  tt Y nX td|id&fS  tk
r } ztt|W Y d d }~X nX qzW n W n0 tk
r } ztt|W Y d d }~X nX d S )'Nr   zBooking ref)rL   rM   rL   r   rN   z
Session IDrO   i  r   rw   zThe booking reference z is not in the system.r$   i  r^   r_   rF   )	rQ   rK   r   rF   rP   rN   r`   r_   rR   rc   rd   z!obtsalert@olpejetaconservancy.orgr   r   r   z Unticketed Booking Alert Update(re   r!   r   rj   rK   rD   z%B %Yr   zAlert updated successfully.zJAn inspection update note was created and alert update email sent for note)ra   rK   rb   rN   rR   rS   )rT   r   r   r   r   r   rg   rh   ri   r   rk   rZ   r3   r   r2   rV   rW   rj   r	   r%   rX   rl   rm   r&   rH   rf   rY   r   r[   )r\   rO   Zbooking_referencer   r   rp   r$   rP   r`   r_   r   rq   rc   r   rr   rs   r6   ro   r=   r   r   r   updateUnticketedInsectionNote[  s    










&r   z/note/deletePATCHc              C   s  ddddddg} t tj| }|r4td|idfS tjjtjtj	d kjtj
tjd kj }|sg }|jd td	|id
fS d|_	tjd |_tj |_y0tjj  tt g }|jd td	|idfS  tk
r   tjj  tt g }|jd td	|idfS X d S )Nnote_idzNote ID)rL   rM   rN   z
Session IDrO   i  z;The note either does not exist or has already been deleted.r$   i  r^   zSuccessfully deleted the note.   z6There was an error deleting the note. Try again later.)rT   r   r   r   r   r   rg   r   ri   deletion_markerrQ   rk   rZ   rN   r	   r%   
updated_atrY   r   r3   r[   )r\   rO   Zget_noter$   r   r   r   
deleteNote  s>    




r   z*/note/view/inpected-alerted-note/<note_id>c          -   C   s  t jjtjtjtjtjtjtj	tj
tjtjjtjd kjtj| kjtj
d kjttj }g }|ri }i }y(t|j| |d |d< |d |d< W n2 tk
r } zd|d< d|d< W Y d d }~X nX |j|d< |j	|d< |j|d< |j|d< |j|d< |j|d	< t jjtjtjtjtjtj	tj
tjtjjtjd kjtjd
kjtj
|jkjtjj jttj }t|dkrg }x|D ]}i }	|j	|	d< |j|	d< |j
|	d< i }
y(t|j|
 |
d |	d< |
d |	d< W n4 tk
r } zd|	d< d|	d< W Y d d }~X nX y>t jjtjtj|jkj }|j}|j}||	d< ||	d< W n4 tk
r } zd|	d< d|	d< W Y d d }~X nX |j|	 qW ||d< ng |d< |j| td t| td|idfS g }|jd td|idfS d S )Nrd   rN   ru   r   r   r_   rR   rK   r`   r^   r   rF   r   rj   update_notesreturn_datar"   r   z6The chosen note does not seem to appear in the system.r$   i  )r   r   rg   r   r   rN   r_   r`   rK   r   rF   rQ   rR   ri   r   r   r   r   rk   rl   r3   order_bydescr   rm   rh   rj   r   rZ   r   r   )r   Zget_ranger_noteoutputr   rq   r=   get_ranger_note_updatesupdate_ranger_notesrF   update_ranger_note_obuser_info_updaterp   r   rj   r$   r   r   r   view_single_alert_note  s    $





 





r   )&flaskr   r   r   r   r   r   r   r	   r
   r   rV   routesr   r   r   database.bookings_notesr   	variablesfunctions.date_operatorsfunctions.currency_operatorsfunctions.booking_snippetsfunctions.validationfunctions.async_functionsr   r   r?   rE   rG   rH   router]   rt   r   r   r   r   r   r   r   r   r   <module>   s0   $!!3w ,pi1