3
؀h<                 @   s   d dl mZmZ d dlmZmZmZ d dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlT d dlmZ d dlT d d	lmZ d
d Zejddgddd Zejddd Zejddd Zejddgddd Zejddgddd Zdd ZdS )    )jsonifyrequest)datetime	timedeltadateN)app	FromCachedb_cache)db)
BookingBan)*)getBookingSessionUser)or_c             C   s   | j j  d S )N)sessionclose)self r   */booking_service/app/routes/booking_ban.pyr      s    r   z/bookings/ban/newPOST)methodsc        
      C   s  t jd } t| }|d r$|d } n"g }|j|d  td|idfS t jd j }t|}|s~g }|jd td|idfS tt jd }tj	 t
|d	 }|jd
}tttj t jd t jd || t jd tj |t jd tj d
}tjj| y>tjj  tt g }|jdt jd  d  td|idfS  tk
r }	 z>t|	 tjj  tt g }|jd t|t|	ddfS d }	~	X nX d S )Nphone_numberr      messagei  email_addressz&The email address provided is invalid.
ban_period)daysz%Y-%m-%d
first_name	last_namevehicle_registration
session_id)
booking_ban_public_idr   r   r   r   r   booking_ban_start_datebooking_ban_end_dater   
created_atzYou have successfully added z to ban list.   z:An error occurred while baning the guest. Try again later.)r   error)r   jsonvalidatePhoneNumberappendr   lowervalidateEmailintr   todayr   strftimer   struuiduuid4nowr
   r   addcommitr   	Exceptionprintrollback)
phonephone_validationr   emailvalid_emailr   Zend_date_datetimeend_datebooking_baner   r   r   add_new_booking_ban   sV    






r>   z/bookings/ban/viewc           !   C   sb  yt tjd } W n tk
r*   d} Y nX yt tjd }W n tk
rV   d}Y nX | dkrtjjtjtj	d kjtj
d kjtjj jttj }nFtjjtjtj	d kjtj
d kjtjj jttj| |dj}|s6| dkrg }|jd td|id	fS g }|jd
 td|id	fS n(g }x|D ]}i }|j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j}|dkrd|d< d|d< nd|d< d|d< |j}i }	y&t ||	 |	d |d< |	d |d< W n4 tk
r< }
 zd|d< d|d< W Y d d }
~
X nX |j| qBW td|id	fS d S )Npager   items2   r   Fz5There are currently no banned bookings in the system.r      z:There are currently no more banned bookings in the system.r    r   r   r   r   r   r!   r"   r#   1z&background-color: #e74c3c; color: #fffbooking_colorActivestatusz&background-color: #73a533; color: #fffLiftedsession_userr    data)!r+   r   argsr4   r
   r   queryr   filterdeletion_marker
updated_atorder_byr#   descoptionsr   r	   allpaginater@   r(   r   r    r   r   r   r   r   r!   r"   rF   r   r   )r?   r@   Zreturn_bant_bookingsoutputrJ   singlereturn_datarF   r   	user_infor=   r   r   r   view_all_banned_bokingsW   sr    

















rY   z#/bookings/ban/view/<booking_ban_id>c             C   sD  t jjtjtj| kjtjd kjtt	j
 }g }|r"i }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}|j}|j|d< |j|d< |j|d< ||d< ||d< |j|d	< |j|d
< |j|d< |j|d< |j|d< t jjtjttj|ktj|kjtjj jtt	j }t|dkr g }	x|D ]}
i }|
j|d< |
j|d< |
j|d< |
j|d< |
j|d	< |
j|d< |
j|d
< |
j|d< |
j|d< |
j}|dkrd|d< nd|d< |	j| qbW |	|d< ng |d< |j| td|idfS g }|jd td|idfS d S )NrH   r   rI   r    r   r   r   r   r   r!   r#   r"   rF   r   rC   rE   rG   
other_bansrJ   rB   z@The chosen banned booking does not seem to appear in the system.r   i  )r
   r   rL   r   rM   r    rN   rR   r   r	   firstr   r   r4   r   r   r   r   r   r!   r#   r"   rF   r   rP   rQ   rS   lenr(   r   )booking_ban_idget_booking_banrU   rW   rX   r=   r   r   Zget_other_bansrZ   Z	other_banZother_ban_objrF   r   r   r   r   view_single_booking_ban   sr    





















r_   z/bookings/ban/modifyc        
   d   C   sd  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX y&t jd j  t jd s| jd W n. tk
r  } z| jd	 W Y d d }~X nX y(t jd
 j  t jd
 s(| jd W n. tk
rX } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX | r0g }|jd t|| ddfS t jd
 }t|}|d rV|d }n"g }|j|d  td|idfS t jd }t|}|sg }|jd td|idfS tt jd dkrt jd }n*tt jd dkrt jd }n
t jd }t	j
jtjtjd kjtjt jd kj }|sJg }|jd  td|id!fS t jd" r\d#}	nd$}	t jd |_tj |_tttj t jd t jd t jd t jd
 t jd |j||	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^ } z>t| t	j
j  tt	 g }|jd( t|t|d)dfS d }~X nX d S )*Nr   zFirst Name  is empty.zFirst Name is missing.r   zLast Name  is empty.zLast Name is missing.r   zEmail is empty.zEmail is missing.r   zPhone number is empty.zPhone number is missing.r   zVehicle Registration is empty.z Vehicle Registration is missing.r   zSession ID is empty.zSession ID is missing.z5You appear to be missing some data. Please try again.)r   messagesi  r   r   r   z&The email address provided is invalid.Zreduce_daysZnew_reduce_end_dateZincrease_daysZnew_increase_end_dater"   r]   z.That booking ban does not exist in the system.i  rF   0rC   )r    r   r   r   r   r   r!   r"   rF   r   r#   z Booking ban successfully updatedr$   zBAn error occurred while updating the booking ban. Try again later.)r   r%   )r   r&   stripr(   KeyErrorr   r'   r*   r+   r
   r   rL   r   rM   rN   r    r[   r   r   r1   rO   r.   r/   r0   r!   r2   r3   r   r4   r5   r6   )
r`   r=   r   r7   r8   r9   r:   r;   r<   rF   r   r   r   modify_booking_ban   s    















rd   z/bookings/ban/search/by_keyc              C   s  ddig} t tj| }|r*td|idfS g }tjd j }tjjtj	tj
jtjd kjtj|kpptjj|j }x|D ]}|j|j
 q~W tjjtj	tj
jtjd kjtj|kptjj|j }x|D ]}|j|j
 qW tjjtj	tj
jtjd kjtj|kptjj|j }x|D ]}	|j|	j
 q,W tjjtj	tj
jtjd kjtj|kpxtjj|j }
x|
D ]}|j|j
 qW tjjtj	tj
jtjd kjtj|kptjj|j }x|D ]}|j|j
 qW t|s&g }|jd| d  td|idfS tjjtjtj
jt|jtjj j }|sg }|jd| d  td|id	fS g }x|D ]}i }|j
|d
< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j}|dkrd|d< d|d< nd|d< d|d< |j}i }y&t|| |d |d< |d |d< W n4 tk
r } zd|d< d|d< W Y d d }~X nX |j| qW td|id	fS d S )Nfieldkeyr`   i  zThe search for z did not return any results.r   i  rB   r    r   r   r   r   r   r!   r"   r#   rC   z&background-color: #e74c3c; color: #fffrD   rE   rF   z&background-color: #73a533; color: #fffrG   rH   r   rI   rJ   ) fieldValidationr   r&   r   rb   r
   r   rL   r   add_columnsr    rM   rO   r   containsrS   r(   r   r   r   r   setin_rP   r#   rQ   r!   r"   rF   r   r   r4   )validation_listr`   Zbooking_ban_arrayZsearch_termZreturn_booking_ban_emailsingle_emailZreturn_booking_ban_first_nameZsingle_first_nameZreturn_booking_ban_last_nameZsingle_last_nameZreturn_booking_ban_numbersZsingle_numberZreturn_booking_ban_regZ
single_regr   Zreturn_booking_banrU   rV   rW   rF   r   rX   r=   r   r   r   search_booking_ban{  s    






















rn   c             C   s\   t jjtjttj| ktj|kjtjdkjtj	d kj
ttj }|rXtdn d S )NrC   zLThe boooking has been banned.Please contact Ol Pejeta for further assistance)r
   r   rL   r   rM   r   r   r   rF   rO   rR   r   r	   r[   r4   )r   r   r^   r   r   r   check_booking_ban  s    
ro   )flaskr   r   r   r   r   r/   routesr   r   r	   r
   Zdatabase.booking_banr   functions.date_operatorsfunctions.booking_snippetsr   functions.validation
sqlalchemyr   r   router>   rY   r_   rd   rn   ro   r   r   r   r   <module>   s"   <NT u