3
؀hF-                 @   s  d dl mZmZ d dlmZ d dlZd dlmZmZmZ d dlm	Z	 d dl
T 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lT d dlZdd Zejddd Zejddgddd Zejddd Zejddd ZdS )    )jsonifyrequest)datetimeN)app	FromCachedb_cache)db)*)Booking)BookingAccount)BookingUser)BookingStatus)Transaction)BookingPaymentc             C   s   | j j  d S )N)sessionclose)self r   //booking_service/app/routes/booking_finances.pyr      s    r   z-/puser-bookings/view/<booking_user_public_id>c              C   sZ  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 tjjtjtj	| kjtj
d kjttj }|dkrtjjtjtj| kjtj
d kjtjj jttj }nFtjjtjtj| kjtj
d kjtjj jttj||dj}|s<g }|jd td|id	fS g }x|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)jtj|j*kjttj }i }	|j+|	d
< t,j-t.j/|j0}
y|
j1 d d d |	d< W n tk
r   d|	d< Y nX |j0|	d< |j|	d< |j |	d< |j!|	d< |j&|	d< |j|	d< |j%dkrpd|	d< n6|j$dkrd|	d< n |j
dkrd|	d< n
|j)|	d< |j(dkrd|	d< |j(dkrd|	d< |j(dkrd|	d< |j(dkrd |	d< n|j(sd!|	d< |j2j3 j4 d" |j5j3 j4  |	d#< |j6|	d$< |j|	 qHW td|id	fS d S )%Npage   items2   r   Fz/There user does not have any bookings currenct.message   booking_totaldatacurrency_namecurrency currency_idbooking_public_idbooking_check_in_datebooking_check_out_datebooking_ref_code
created_atzChecked Outbooking_statusz
Checked In	CancelledPaidpayment_status   zIncomplete Payment   Complimentary   z
To InvoicezNot Paid 	full_nameemail)7intr   args	Exceptionr   r   queryr   filterbooking_user_public_iddeletion_markeroptionsr   r   firstr   public_user_account_idorder_byr%   descallpaginater   appendr   r
   joinr   statusbooking_status_public_idadd_columnsr!   r"   r#   actual_booking_check_in_dateactual_booking_check_out_date
checked_inchecked_outr$   
updated_atr)   booking_status_name
booking_idr   requestsgetget_currencyformatr   json
first_namestriptitle	last_namer0   )r6   r   r   Zget_booking_user_detailsreturn_puser_bookingsoutputr   single_bookingreturn_bookingreturn_datar   r   r   r   view_all_puser_bookings   s    















$
rY   z/add/booking_userPOST)methodsc             C   s  | d }| d }| d }t jjtj|dj }ttj f}|sy|t||||t	j
 d}t jj| y||d< tddid	fS  tk
r } z t| t jj  tt  W Y d d }~X nX W n2 tk
r } ztd
 t| W Y d d }~X nX n|j|d< tddid	fS d S )NrP   rS   r0   )r0   )r6   rP   rS   r0   r%   Zuser_account_idmessagesZSuccessr   e2r   success)r   r   r4   r   	filter_byr9   struuiduuid4r   nowaddr   r3   printrollbackr   r6   )r   Zbooking_user_account_detailsrP   rS   r0   userZbooking_user_ider   r   r   add_booking_user   s4    

ri   z/booking_usersc              C   sn  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j j }n0tjjtjtj	d kj
tjj j| |dj}g }|sg }|jd td|id	fS xx|D ]p}i }|j|d
< |jj j d |jj j  |d< |j|d< |j|d< t |jdkrDdnd|d< |j| qW td|id	fS d S )Nr   r   r      r   Fz+There currently no booking users available.r   r   r6   r.   r/   r0   Zregistered_on   Z	SuspendedActiveZactive_statusr   )r1   r   r2   r3   r   r   r4   r   r5   r7   r;   r%   r<   r=   r>   r   r?   r   r6   rP   rQ   rR   rS   r0   rA   )r   r   Zbooking_usersr   rU   rg   responser   r   r   getAllBookingUser   s8    

*


$

rn   z)/user/statements/<booking_user_public_id>c             C   sR  t jjtjtj| kjtjd kjtjj	 j
ttj }g }x|D ]}t jjtjtj|jkj }|js*i }|j|d< |j}|jd | }t|dkr|d d }n|}||d< |j|d< tjtj|j}	y|	j d d d	 |d
< W n tk
r   d|d
< Y nX t|j|d< t t|j!d|d< d|d< t t|j!d|d< |j"| 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jt#jd kjtj|jkj }
xB|
D ]8}i }tjtj|j(}|jd |j }t|dkr4|d d }n|}t jjt0jt0jd kjt0j1|j*kj }|j2r||j2d |j3 }n|j4}|j.|d< ||d< |j|d< |j d d d	 |d
< yt|j,|d< W n  tk
r   t|jY nX d|d< t t|j&d|d< t t|j!d|d< |j"| qW t5|dd dd}t6d|idfS W d S )N
sales_dater.         Ztransaction_referencedescriptionr   r   r   r   r   conversion_rater*   ZdebitZcreditZrunning_balancez...c             S   s   | d S )Nro   r   )dr   r   r   <lambda>E  s    z+view_all_buser_statements.<locals>.<lambda>T)keyreverser   )7r   r   r4   r   r5   r:   r7   r;   r%   r<   r8   r   r   r=   r
   r!   rJ   r9   r"   booking_done_byr$   lenticketrK   rL   rM   rN   r   rO   r3   floatcurrency_selling_rate_at_timeroundr   r?   r   r@   rC   transaction_totaltransaction_total_currencytransaction_payment_currencytransaction_payment_methodtransaction_booking_public_id$payment_currency_buying_rate_at_time%payment_currency_selling_rate_at_timetransaction_payment_gatewaytransaction_datecurrency_buying_rate_at_timer   transaction_idcard_first_fourcard_last_fourmpesa_referencesortedr   )r6   rT   r   rV   Zselect_bookingrX   rx   Zcustomer_refZcustomer_referencer   select_transactionssingle_transactionZtransaction_currencyget_booking_paymentZbank_referencer   r   r   view_all_buser_statements   s    





r   ) flaskr   r   r   ra   routesr   r   r   r   	variablesdatabase.bookingsr
   database.booking_accountr   Zdatabase.booking_userr   database.booking_statusr   database.transactionr   database.booking_paymentsr   functions.date_operatorsfunctions.validationrK   r   routerY   ri   rn   r   r   r   r   r   <module>   s&   g.+