3
؀h]-                 @   s  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Zd dlZd dlZd dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dl m!Z! d dl"T dd Z#ej$ddgddd Z%ej$ddd Z&dd Z'dd Z(dS )    )Flaskjsonifyrender_templateurl_forrequestredirectjson)datetime	timedeltadateN)app)db)BookingTypeSeedBookingStatusSeed)BookingType)Booking)BookingGuest)BookingStatus)Detail)	GuestType)*c             C   s   | j j  d S )N)sessionclose)self r   4/booking_service/app/routes/express_checkout_urls.pyr      s    r   z/bookings/express/newPOST)methodsc              C   s  t jjtjtjd kjtjdkj dkr4tj	  t
jd j  s^t
jd j  s^t
jd j  s^tt
jd j  s^tt
jd j  s^tt
jd j  s^tt
jd	 j  s^tt
jd
 j  s^tt
jd j  s^tt
jd j  s^t
jd j  s^t
jd j  s^t
jd j  s^t
jd j  s^t
jd j  r|g } | jd td| idfS tj jd}ttj }g }t
jd |k rg } | jd td| idfS t
jd |k rg } | jd td| idfS t
jd t
jd k r*g } | jd td| idfS tt
jd tt
jd  tt
jd  tt
jd	  tt
jd
  tt
jd  tt
jd  }|dkrg } | jd td| iS t|t
jd t
jd t
jd t
jd d t
jd  ttj d d dtdd}t jj| tttj |tdt
jd d }t jj| tttj |td!t
jd d }t jj| tttj |td"t
jd d }t jj| tttj |td#t
jd	 d }	t jj|	 tttj |td$t
jd
 d }
t jj|
 tttj |td%t
jd d }t jj| tttj |td&t
jd d }t jj| yt
jd' }W n8 tk
r } ztd(t|  d }W Y d d }~X nX tttj |t
jd t
jd t
jd t
jd t
jd |d)}t jj| yLt jj  tt  g } | jd* i }||d+< t
jd |d< t| |d,d-fS  t k
r } z8t| t jj!  tt  g } | jd. td| idfS d }~X nX d S )/Nz$626f13f2-aab0-4488-a774-44969b3062a3r   typecheck_in	check_outea_adult_citizenea_adult_residentnon_resident_adultea_child_citizenea_child_residentnon_resident_childinfant
first_name	last_nameemailphoneaddressz5You appear to be missing some data. Please try again.messagei  z%Y-%m-%dz)Your check in date cannot be in the past.z*Your check out date cannot be in the past.z:Your check out date cannot come before your check in date.z9A booking must have at least one guest. Please try again. 
      	Abandoned)booking_public_idbooking_typebooking_check_in_datebooking_check_out_datebooking_done_bybooking_ref_codeexpress_checkoutstatuszEA Adult Citizen)booking_guest_public_id
booking_id
guest_typeguest_countzEA Adult ResidentzNon Resident AdultzEA Child CitizenzEA Child ResidentzNon Resident ChildInfantadditional_notez.There was an error getting the following key: )booking_details_public_idr;   r(   r)   email_addressphone_numberr,   r?   z+The booking has been made. Please carry on.r2   )r-   data   zdIt's us, not you. There was an error while creating the express booking. :-( Please try again later.)"r   r   queryr   filterdeletion_markerbooking_status_public_idcountr   seed_default_booking_statusr   r   stripstrappendr   r	   nowstrftimeuuiduuid4intr   get_booking_status_idaddr   get_booking_guest_type_idKeyErrorprintr   commitr   	Exceptionrollback)outputtodayr;   ZissuesZtotal_guestsbookingZguest1Zguest2Zguest3Zguest4Zguest5Zguest6Zguest7r?   guest_key_errordetailreturn_dataer   r   r   add_new_express_booking   s    



b













rb   z/bookings/express/viewc               C   s  t jjtjttjtjkjttj	tj
kjttjtjkjtjtj	tjtjtjtjt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dkjtjj  j! } | sg }|j"d t#d|idfS g }g }x| D ]}|j"|j qW yt$j%t&d|id}W n6 t$j'j(t$j'j)t$j'j*fk
r8 } zW Y d d }~X nX x| D ]}i }|j|d< |j|d< |j	|d	< |j|d
< |j|d< |j|d< |j|d< g }t jjtjt+tj,t+j-kjt+j.tj/jtjd kjtj|jkj! }	x|	D ]}
|
j.dkr|
j/}|
j.dkr
|
j/}|
j.dkr|
j/}|
j.dkr.|
j/}|
j.dkr@|
j/}|
j.dkrR|
j/}|
j.dkr|
j/}qW i }||d< ||d< ||d< ||d< ||d< ||d< ||d< |j"| || | | | | | |d< ||d< |j|d< |j|d< yNxH|j0 d  D ]8}|d! |jkr|d" d# |d$  |d%< |j|d&< qW W nn t1k
rp } zd'|d%< |j|d&< W Y d d }~X n: t2t3fk
r } zd(|d%< |j|d&< W Y d d }~X nX |j|d)< |j|d*< |j"| qBW t#d |idfS d S )+Nr0   z.There are currently no bookings in the system.r-      	users_ids)r   r2   r3   booking_type_idr4   r5   r6   r7   zEA Adult CitizenzEA Adult ResidentzNon Resident AdultzEA Child CitizenzEA Child ResidentzNon Resident Childr>   r!   r"   r#   r$   r%   r&   r'   guest_totalguestsbooking_statusbooking_status_idrC   	public_idr(   r.   r)   session_user
session_idzN/AzNetwork Error
created_at
updated_at)4r   r   rE   r   joinr   r2   r;   r   r3   booking_type_public_idr   r9   rH   add_columnsr4   r5   actual_booking_check_in_dateactual_booking_check_out_dater6   
checked_inchecked_outrl   rm   rn   r7   booking_type_namebooking_status_namerF   rG   r8   order_bydescallrM   r   requestspostget_user_from_aumra
exceptionsConnectionErrorTimeoutConnectTimeoutr   r<   booking_guest_type_public_idbooking_guest_type_namer=   r   
IndexErrorAttributeErrorUnboundLocalError)return_bookingsr[   id_arrayeach_idreturn_userconnection_errorsingler`   guest_arrayget_all_guests
each_guestr!   r"   r#   r$   r%   r&   r'   
guest_datauser
user_errornetwork_related_errorsr   r   r   view_all_express_bookings   s    

$








 



r   c             C   sB   t jjtjtjd kjtj| kj }x|D ]}|j}|S W d S )N)	r   r   rE   r   rF   rG   rw   rz   rH   )status_name	status_idr   ri   r   r   r   rS   :  s    
rS   c             C   sB   t jjtjtjd kjtj| kj }x|D ]}|j}|S W d S )N)	r   r   rE   r   rF   rG   r   rz   r   )guest_type_nametype_idr   booking_guest_type_idr   r   r   rU   F  s    
rU   ))flaskr   r   r   r   r   r   r   r	   r
   r   pymysqlosmathr{   rP   routesr   r   routes.seed_functionsr   r   database.booking_typesr   database.bookingsr   database.booking_guestsr   database.booking_statusr   database.booking_detailsr   database.booking_guest_typesr   	variablesr   routerb   r   rS   rU   r   r   r   r   <module>   s$   $( /q