3
؀ha                 @   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mZmZ d dlT d dl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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'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=T d dl>T d dl?T dd Z@ejAddd ZBdS )    )Flaskjsonifyrender_templateurl_forrequestredirectjson)datetime	timedeltadate)MailMessage)*N)app)db)BookingTypeSeedBookingStatusSeedMandatoryPaymentsSeed)BookingGuestTypesSeed)get_booking_status_id)BookingType)Booking)BookingGuest)BookingStatus)Facility)	Inventory)Detail)	Mandatory)Transaction)Gatepass)GatepassGuest)GatepassDetail)	GuestType)GatepassVehicle)Vehiclec             C   s   | j j  d S )N)sessionclose)self r(   -/booking_service/app/routes/reminders_urls.pyr&   $   s    r&   z/reminders/<booking_id>c             C   s  t j tdd jd}tjjt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t	jt	jt	jt	jt	j t	j!j"tj#d kj"tj
| kj"t	jt$dkj"t	jt$dkj% }|sg }|j&d t'd|idfS g }g }t(j)t*j+d	 d
}d}x|D ]}i }	t j jd|	d< |j|	d< |jjd|	d< |jjd|	d< d|j d |j |	d< |j|	d< |j
|	d< t j jd|	d< g }
tjjt,jt-t,j.t-j/kjt-j0t,j1j"t,j#d kj"t,j|j
kj% }x|D ]}|
j&t2|j1 qW t3|
|	d< g }t3||	d< t4|}t4|j}d}t5dt6d|	d}t7||||}y.|j8j9j:j;|j< d}|j&d|j d  W n2 t=k
r } z|j&t>| W Y d d }~X nX qW t'd|iS d S ) N   )daysz%Y-%m-%dUpdated	Cancelled.messagei  SENDGRID_API_KEY)apikeyz$reservations@olpejetaconservancy.orgz%B %Ytodaybooking_ref_codez%A %d %B %Ycheck_in_datecheck_out_date client
first_name
booking_idz%Ycopyright_yearnum_of_guestsnum_of_vehicleszBooking Reminderz	text/htmlzbookingreminder.html)data)request_bodyzReminder email sent to )?r	   nowr
   strftimer   r%   queryr   joinr   booking_public_idr9   add_columnsbooking_typebooking_check_in_datebooking_check_out_dateactual_booking_check_in_dateactual_booking_check_out_datebooking_done_by
checked_inchecked_outr3   
session_id
created_at
updated_atstatuspayment_statuscurrencyr8   	last_nameemail_addressphone_numberaddressadditional_notefilterdeletion_markerr   allappendr   sendgridSendGridAPIClientr   configr   r"   
guest_typebooking_guest_type_public_idbooking_guest_type_nameguest_countintsumEmailContentr   r   r7   mailsendpostget	Exceptionstr)r9   tomorrowget_all_bookingsr/   return_arrayerror_arraysgsendereach_bookingreminder_data	guest_sumget_all_guests
each_guestvehicle_sum
from_emailto_emailsubjectcontentrg   responseer(   r(   r)   send_reminder_emails   sn    





&r   )Cflaskr   r   r   r   r   r   r   r	   r
   r   
flask_mailr   r   sendgrid.helpers.mailpymysqlosmathrequestsuuidr\   routesr   r   routes.seed_functionsr   r   r   r   routes.bookings_urlsr   database.booking_typesr   database.bookingsr   database.booking_guestsr   database.booking_statusr   database.facilityr   database.inventoryr   database.booking_detailsr   database.mandatory_paymentsr   database.transactionr   database.gatepassr   database.gatepass_guestsr    database.gatepass_detailsr!   database.booking_guest_typesr"   database.gatepass_vehiclesr#   database.vehicler$   	variablesfunctions.date_operatorsfunctions.currency_operatorsr&   router   r(   r(   r(   r)   <module>   s:   $0O