3
؀hY                 @   sb  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 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-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=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZF d dlGmHZH d d lIT d d lJT d d lKT d!d" ZLejMd#d$d% ZNejMd&d'd( ZOejMd)d*d+ ZPejMd,d-d. ZQejMd/d0d1 ZRejMd2d3d4 ZSejMd5d6d7 ZTdS )8    )Flaskjsonifyrender_templateurl_forrequestredirectjson)datetime	timedeltadate)relativedeltaN)app)db)BookingTypeSeedBookingStatusSeedMandatoryPaymentsSeed)BookingGuestTypesSeed)BookingType)Booking)BookingGuest)BookingStatus)Facility)	Inventory)Detail)	Mandatory)Transaction)Gatepass)GatepassGuest)GatepassDetail)	GuestType)GatepassVehicle)Vehicle)SalesforceData)Sun)Modify)Gate)VehicleDetail)Destination)Group)Partner)*c             C   s   | j j  d S )N)sessionclose)self r.   3/booking_service/app/routes/bookings_graphs_urls.pyr,   *   s    r,   z/bookings/graphs/day/allc               C   s   dS )N r.   r.   r.   r.   r/   view_graph_of_all_bookings_day2   s    r1   z/bookings/graphs/week/allc              C   s8  g } g }d}t j }t j j }t j t|d d }t j td| d }|jdd |jd }| j| d}x^||d k r|d7 }d| }	|t|	d }
|t|	d }|
jdd |jd }| j| qtW xRt| D ]D}i }|jd\}}t	j
|}t	j
|}|jd	d |jd	 |d
< g }g }i }tjjtjttjtjkjttjtjkjtj|kjtj|kjtjd kj |d< 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)tj*jtj|kjtj|kjtjd kj+ }xb|D ]Z}i }|j|d< |j)|d< |j|d< |j|d< |j|d< |j!|d< |j'|d< |j| q<W ||d< tjjtjttjtjkjttjtjkjtj|kjtj|kjtjd kj |d< 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)tj*jtj|kjtj|kjtjd kj+ }xb|D ]Z}i }|j|d< |j)|d< |j|d< |j|d< |j|d< |j!|d< |j'|d< |j| qW ||d< ||d< |j| qW t,d|idfS )N      )days   z%Y-%m-%dz to r      z%d-%m-%Yweekcheck_in_bookings_countbooking_public_idbooking_typebooking_type_idbooking_check_in_datebooking_check_out_datebooking_done_bybooking_ref_codecheck_in_bookings_datacheck_out_bookings_countcheck_out_bookings_dataweek_booking_detailsdata   )-r	   nowtodayweekdayr
   strftimeappendreversedsplitGenerateDateFromStringgenerateDater   r+   queryr   joinr   r:   booking_type_public_idr   statusbooking_status_public_idfilterr<   deletion_markercountr   r9   
booking_idadd_columnsr=   actual_booking_check_in_dateactual_booking_check_out_dater>   
checked_inchecked_out
session_id
created_at
updated_atr?   currencybooking_type_namebooking_status_nameallr   )
week_arrayrD   number_of_weeksrG   rH   start_of_this_weekend_of_this_week	this_weeki
no_of_daysstart_of_und_weekend_of_und_weekund_week	each_weekweeksstartendstart_of_weekend_of_weekcheck_in_booking_infocheck_out_booking_infobookings_detailsget_bookingseach_bookingbooking_datar.   r.   r/   view_graph_of_all_bookings_week7   s    


















rz   z/bookings/graphs/week/groupc              C   sx  g } g }d}t j }t j j }t j t|d d }t j td| d }|jdd |jd }| j| d}x^||d k r|d7 }d| }	|t|	d }
|t|	d }|
jdd |jd }| j| qtW xt| D ]}i }|jd\}}t	j
|}t	j
|}|jd	d |jd	 |d
< g }g }i }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|kjtj|kjtjd kj |d< 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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+jtj|kjtj|kjtjd kj, }xb|D ]Z}i }|j|d< |j*|d< |j|d< |j|d< |j|d< |j"|d< |j(|d< |j| q\W ||d< 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|kjtj|kjtjd kj |d< 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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+jtj|kjtj|kjtjd kj, }xb|D ]Z}i }|j|d< |j*|d< |j|d< |j|d< |j|d< |j"|d< |j(|d< |j| qW ||d< ||d< |j| qW t-d|idfS )Nr2   r3   )r4   r5   z%Y-%m-%dz to r   r6   z%d-%m-%Yr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   ).r	   rF   rG   rH   r
   rI   rJ   rK   rL   rM   rN   r   r+   rO   r   rP   r   r:   rQ   r   rR   rS   r(   r9   rW   rT   r<   rU   rV   r   rX   r=   rY   rZ   r>   r[   r\   r]   r^   r_   r?   r`   ra   rb   rc   r   )rd   rD   re   rG   rH   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   r.   r.   r/   !view_graph_of_group_bookings_week   s    


















r{   z/bookings/graphs/week/partnerc              C   sx  g } g }d}t j }t j j }t j t|d d }t j td| d }|jdd |jd }| j| d}x^||d k r|d7 }d| }	|t|	d }
|t|	d }|
jdd |jd }| j| qtW xt| D ]}i }|jd\}}t	j
|}t	j
|}|jd	d |jd	 |d
< g }g }i }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|kjtj|kjtjd kj |d< 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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+jtj|kjtj|kjtjd kj, }xb|D ]Z}i }|j|d< |j*|d< |j|d< |j|d< |j|d< |j"|d< |j(|d< |j| q\W ||d< 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|kjtj|kjtjd kj |d< 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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+jtj|kjtj|kjtjd kj, }xb|D ]Z}i }|j|d< |j*|d< |j|d< |j|d< |j|d< |j"|d< |j(|d< |j| qW ||d< ||d< |j| qW t-d|idfS )Nr2   r3   )r4   r5   z%Y-%m-%dz to r   r6   z%d-%m-%Yr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   ).r	   rF   rG   rH   r
   rI   rJ   rK   rL   rM   rN   r   r+   rO   r   rP   r   r:   rQ   r   rR   rS   r)   r9   rW   rT   r<   rU   rV   r   rX   r=   rY   rZ   r>   r[   r\   r]   r^   r_   r?   r`   ra   rb   rc   r   )rd   rD   re   rG   rH   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   r.   r.   r/   #view_graph_of_partner_bookings_week5  s    


















r|   z/bookings/graphs/month/allc              C   s*  g } g }d}d}x0||k r@t j t|d }|j| |d7 }qW xt|D ]}i }tjt|jdt|jdd }|jd|d< t	t|jdt|jddjd	d
 t	t|jdt|jd|jd	 }|j
d
\}	}
tj|	}tj|
}g }g }|jdd
 |jd |d< i }tjjtjttjtjkjttjtjkjtj|kjtj|kjtjd kj |d< 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+tj,jtj|kjtj|kjtjd kj- }xb|D ]Z}i }|j|d< |j+|d< |j|d< |j|d< |j |d< |j#|d< |j)|d< |j| q.W ||d< tjjtjttjtjkjttjtjkjtj |kjtj |kjtjd kj |d< 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+tj,jtj |kjtj |kjtjd kj- }xb|D ]Z}i }|j|d< |j+|d< |j|d< |j|d< |j |d< |j#|d< |j)|d< |j| qW ||d< ||d< | j| qNW t.d| idfS )Nr2   r   )monthsr3   z%Yz%mz%Bmonthz%Y-%m-%dz to z%d-%m-%Ymonth_date_ranger8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   month_booking_detailsrD   rE   )/r	   rF   r   rJ   rK   calendar
monthrangeintrI   r   rL   rM   rN   r   r+   rO   r   rP   r   r:   rQ   r   rR   rS   rT   r<   rU   rV   r   r9   rW   rX   r=   rY   rZ   r>   r[   r\   r]   r^   r_   r?   r`   ra   rb   rc   r   )rD   month_arraynumber_of_monthsri   r~   
each_monthreturn_monthlast_day
date_rangerp   rq   start_of_monthend_of_monthrt   ru   r   rw   rx   ry   r.   r.   r/    view_graph_of_all_bookings_month  s    

$((

















r   z/bookings/graphs/month/groupc              C   sj  g } g }d}d}x0||k r@t j t|d }|j| |d7 }qW xt|D ]}i }tjt|jdt|jdd }|jd|d< t	t|jdt|jddjd	d
 t	t|jdt|jd|jd	 }|j
d
\}	}
tj|	}tj|
}g }g }|jdd
 |jd |d< i }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|kjtj|kjtjd kj |d< 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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-jtj|kjtj|kjtjd kj. }xb|D ]Z}i }|j|d< |j,|d< |j|d< |j|d< |j!|d< |j$|d< |j*|d< |j| qNW ||d< 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!|kjtj!|kjtjd kj |d< 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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-jtj!|kjtj!|kjtjd kj. }xb|D ]Z}i }|j|d< |j,|d< |j|d< |j|d< |j!|d< |j$|d< |j*|d< |j| qW ||d< ||d< | j| qNW t/d| idfS )Nr2   r   )r}   r3   z%Yz%mz%Br~   z%Y-%m-%dz to z%d-%m-%Yr   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   r   rD   rE   )0r	   rF   r   rJ   rK   r   r   r   rI   r   rL   rM   rN   r   r+   rO   r   rP   r   r:   rQ   r   rR   rS   r(   r9   rW   rT   r<   rU   rV   r   rX   r=   rY   rZ   r>   r[   r\   r]   r^   r_   r?   r`   ra   rb   rc   r   )rD   r   r   ri   r~   r   r   r   r   rp   rq   r   r   rt   ru   r   rw   rx   ry   r.   r.   r/   "view_graph_of_group_bookings_month0  s    

$((

















r   z/bookings/graphs/month/partnerc              C   sj  g } g }d}d}x0||k r@t j t|d }|j| |d7 }qW xt|D ]}i }tjt|jdt|jdd }|jd|d< t	t|jdt|jddjd	d
 t	t|jdt|jd|jd	 }|j
d
\}	}
tj|	}tj|
}g }g }|jdd
 |jd |d< i }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|kjtj|kjtjd kj |d< 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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-jtj|kjtj|kjtjd kj. }xb|D ]Z}i }|j|d< |j,|d< |j|d< |j|d< |j!|d< |j$|d< |j*|d< |j| qNW ||d< 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!|kjtj!|kjtjd kj |d< 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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-jtj!|kjtj!|kjtjd kj. }xb|D ]Z}i }|j|d< |j,|d< |j|d< |j|d< |j!|d< |j$|d< |j*|d< |j| qW ||d< ||d< | j| qNW t/d| idfS )Nr2   r   )r}   r3   z%Yz%mz%Br~   z%Y-%m-%dz to z%d-%m-%Yr   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   r   rD   rE   )0r	   rF   r   rJ   rK   r   r   r   rI   r   rL   rM   rN   r   r+   rO   r   rP   r   r:   rQ   r   rR   rS   r)   r9   rW   rT   r<   rU   rV   r   rX   r=   rY   rZ   r>   r[   r\   r]   r^   r_   r?   r`   ra   rb   rc   r   )rD   r   r   ri   r~   r   r   r   r   rp   rq   r   r   rt   ru   r   rw   rx   ry   r.   r.   r/   $view_graph_of_partner_bookings_month  s    

$((

















r   )Uflaskr   r   r   r   r   r   r   r	   r
   r   Zdateutil.relativedeltar   pymysqlosmathrequestsuuidr   routesr   r   routes.seed_functionsr   r   r   r   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!   database.salesforcer"   database.sunr#   database.modifyr$   database.gater%   database.vehicle_detailsr&   database.destinationr'   database.groupr(   database.partnerr)   	variablesfunctions.date_operatorsfunctions.currency_operatorsr,   router1   rz   r{   r|   r   r   r   r.   r.   r.   r/   <module>   sV   $0}  w{