U
    xøe!o  ã                   @   s4  d dl mZmZ d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	Z	d dl
mZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Z d1d2„ Z!d3d4„ Z"d5d6„ Z#d7d8„ Z$d9d:„ Z%d;d<„ Z&dS )=é    )ÚrenderÚHttpResponseN)r   )ÚJsonResponse)Úuniform)Údefaultdictc               
   C   sh   z*t  d¡} |  ¡  |  ¡ }| dg ¡}W n8 t jjk
rb } ztd|› ƒ g }W 5 d }~X Y nX |S )Nz6http://210.56.21.197/trucking/index.php/Api/adminLoginÚresponseúError fetching data: ©ÚrequestsÚgetÚraise_for_statusÚjsonÚ
exceptionsÚRequestExceptionÚprint©r   Ú	data_sendÚdataÚe© r   ú5/var/www/html/TRUCKING_PROJECT/trucking/main/views.pyÚget_users_data   s    ÿr   c              
   C   sx   z:t | ƒ tjdd| id}| ¡  | ¡ }| dg ¡}W n8 tjjk
rr } zt d|› ƒ g }W 5 d }~X Y nX |S )Nú9http://210.56.21.197/trucking/index.php/Api/shipmentGraphÚmonth)r   r   r   )r   r
   Úpostr   r   r   r   r   )r   r   r   r   r   r   r   r   Úget_monthly_graph_data   s    þr   c               
   C   sh   z*t  d¡} |  ¡  |  ¡ }| dg ¡}W n8 t jjk
rb } ztd|› ƒ g }W 5 d }~X Y nX |S )Nz<http://210.56.21.197/trucking/index.php/Api/getDriverDetailsr   r   r	   r   r   r   r   Úget_drivers_data0   s    ÿr   c               
   C   sh   z*t  d¡} |  ¡  |  ¡ }| dg ¡}W n8 t jjk
rb } ztd|› ƒ g }W 5 d }~X Y nX |S )Nz=http://210.56.21.197/trucking/index.php/Api/getShipperDetailsr   r   r	   r   r   r   r   Úget_shiper_data?   s    ÿr   c               
   C   sh   z*t  d¡} |  ¡  |  ¡ }| dg ¡}W n8 t jjk
rb } ztd|› ƒ g }W 5 d }~X Y nX |S )NzAhttp://210.56.21.197/trucking/index.php/Api/getAllOrdersInWaitingr   r   r	   r   r   r   r   Úget_pending_order_dataN   s    ÿr   c               
   C   sh   z*t  d¡} |  ¡  |  ¡ }| dg ¡}W n8 t jjk
rb } ztd|› ƒ g }W 5 d }~X Y nX |S )NzBhttp://210.56.21.197/trucking/index.php/Api/getAllOrdersInProgressr   r   r	   r   r   r   r   Úget_inprogress_order_data]   s    ÿr   c               
   C   sh   z*t  d¡} |  ¡  |  ¡ }| dg ¡}W n8 t jjk
rb } ztd|› ƒ g }W 5 d }~X Y nX |S )NzAhttp://210.56.21.197/trucking/index.php/Api/getAllOrdersCompletedr   r   r	   r   r   r   r   Úcompleted_order_datal   s    ÿr    c               
   C   sh   z*t  d¡} |  ¡  |  ¡ }| dg ¡}W n8 t jjk
rb } ztd|› ƒ g }W 5 d }~X Y nX |S )NzAhttp://210.56.21.197/trucking/index.php/Api/getAllOrdersCancelledr   r   r	   r   r   r   r   Úcancelled_order_data{   s    ÿr!   c                 C   sÄ  t j ¡ }| d¡}td|ƒ tƒ }|r@| dd¡}| dd¡}| dd¡}| dd¡}| dd¡}| d	d¡}	| d
g ¡}
g }g }g }g }g }g }|
D ]’}| ¡ D ]„\}}| dd¡}| dd¡}| dd¡}| dd¡}| |¡ | |¡ | |¡ | |¡ || | | }| |¡ | |¡ q¦qšt|ƒ t|ƒ n0d}d}d}d}d}d}	g }g }g }g }g }g }|||||dœ}ddddg}ddddg}d}t	| d|||||||	||||||dœƒS )Nz%BzCurrent Month:Úshipper_countr   Údriver_countÚpending_order_countÚshipment_process_countÚcompleted_CountÚcancelled_CountÚ
graph_dataÚ1Ú2Ú3Ú4©ZTotalZWaitingzIn progressZ	DeliveredZ	CancelledzIncorrect addresszWeather conditionszFederal HolidayszDamage during transité(   é   é   é   z11%zdashboard.html)ÚuserDatar"   r#   r$   r%   r&   r'   Úseries_dataÚ
categoriesÚcurrent_monthÚlabelsÚseriesÚavg_exceptions)
ÚdatetimeÚdateÚtodayÚstrftimer   r   r   ÚitemsÚappendr   )ÚrequestZcurrent_dater5   r2   r"   r#   r$   r%   r&   r'   r(   ÚwaitingÚshippingÚ	completedÚ	cancelledÚtotal_ordersÚdatesÚday_datar:   ÚstatesÚwaiting_countÚshipping_countÚcompleted_countÚcancelled_countÚtotal_order_countr3   r6   r7   r8   r   r   r   Ú	dashboardŒ   sž    






ÿÿÿ

û	üórM   c              
   C   sÆ  | j dkr¶| j d¡dkr¶zXt | j¡}|d }t|ƒ d}d|i}tj||d}|j	rftdƒ | ¡ }g }g }g }g }	g }
g }|rD|d }|rD|D ]’}| 
¡ D ]„\}}| d	d
¡}| dd
¡}| dd
¡}| dd
¡}| |¡ | |¡ | |¡ |	 |¡ || | | }|
 |¡ | |¡ q¬q t|
ƒ t|ƒ |
||||	dœ}td||dœƒW S tdddœƒW S W n: tk
r² } ztdt|ƒdœƒ W Y ¢S d }~X Y nX ntddiƒS d S )NÚPOSTúx-requested-withÚXMLHttpRequestr   r   ©r   zAPI request successfulr   r)   r   r*   r+   r,   r-   Úsuccess)Ústatusr3   r4   Úfailureú!Failed to connect to external API©rS   ÚmessageÚerrorúInvalid request)ÚmethodÚheadersr   r   ÚloadsÚbodyr   r
   r   Úokr=   r>   r   Ú	ExceptionÚstr)r?   r   r   Úapi_urlÚpayloadr   r@   rA   rB   rC   rD   rE   r(   rF   r:   rG   rH   rI   rJ   rK   rL   r3   r   r   r   r   ÚupdateGraphó   sp     ÿ



ÿÿÿ
ûÿ
*rc   c                 C   s6   t ƒ }t|ƒ |r"t| dd|iƒS t| ddg iƒS d S )Nzshiper_list.htmlÚshipper_data_list)r   r   r   )r?   ÚshipperDatar   r   r   ÚshiperDetails=  s
    rf   c                 C   s6   t ƒ }t|ƒ |r"t| dd|iƒS t| ddg iƒS d S )Nzdriver_list.htmlÚdriver_data_list)r   r   r   )r?   Ú
driverDatar   r   r   ÚdriverDetailsG  s
    ri   c                 C   s.   t ƒ }|rt| dd|iƒS t| ddg iƒS d S )NzpendingOrderDetails.htmlZpending_orders_data)r   r   )r?   ZpendingOrdersDatar   r   r   ÚpendingOrdersQ  s    rj   c                 C   s.   t ƒ }|rt| dd|iƒS t| ddg iƒS d S )NzinprogressOrderDetails.htmlZinprogress_orders_data)r   r   )r?   ZinprogressOrdersDatar   r   r   ÚinprogressOrders[  s    rk   c                 C   s.   t ƒ }|rt| dd|iƒS t| ddg iƒS d S )NzcompletedOrderDetails.htmlr    )r    r   )r?   ZcompletedOrdersDatar   r   r   ÚcompletedOrdersf  s    rl   c                 C   s6   t ƒ }t|ƒ |r"t| dd|iƒS t| ddg iƒS d S )NzcancelledOrderDetails.htmlr!   )r!   r   r   )r?   ZcancelledOrdersDatar   r   r   ÚcancelledOrdersq  s
    rm   c                 C   s
   t | dƒS )NzorderTracking.html)r   )r?   r   r   r   ÚordersTracking|  s    rn   c                 C   sš   | j  d¡}| j  d¡}| j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ d}d}d	}	d
}
t| d|||||||||	|
dœ
ƒS )NÚorderIdÚ
orderPriceÚorderDeliveryÚ
driverNameÚdriverEmailÚdriverPhoneç¡Ö4ï8…?@çÐDØðô–R@ç¸…ëQ(>@çèj+ö—áQ@zpendingOrderTracking.html)
Úorder_idÚorder_priceÚorder_delivery_timeÚdriver_nameÚdriver_emailÚdriver_phoneÚ
origin_latÚ
origin_lngÚdestination_latÚdestination_lng©ÚGETr   r   r   )r?   ro   rp   rq   rr   rs   rt   r   r€   r   r‚   r   r   r   ÚpendingOrdersTracking  s&    ýr…   c                 C   s¦   | j  d¡}| j  d¡}| j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ d}d}d	}	d
}
d}d}t| d|||||||||	|
||dœƒS )Nro   rp   rq   rr   rs   rt   gxœ¢#¹Œ?@gõ¹ÚŠý•R@gÎªÏÕVÜ8@g£¼ÀP@güs×2>@g|ò°PkÞQ@zinprogressOrderTracking.html)ry   rz   r{   r|   r}   r~   r   r€   r   r‚   Ú
driver_latÚ
driver_lngrƒ   )r?   ro   rp   rq   rr   rs   rt   r   r€   r   r‚   r†   r‡   r   r   r   ÚinprogressOrdersTracking™  s.    ûrˆ   c                 C   s¨   | j  d¡}| j  d¡}| j  d¡}| j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ d}d	}	d
}
d}t| d|||||||||	|
|dœƒS )Nro   rp   rq   ÚorderDeliveredrr   rs   rt   ru   rv   rw   rx   zcompletedOrderTracking.html)ry   rz   r{   Zorder_deliveredr|   r}   r~   r   r€   r   r‚   rƒ   )r?   ro   rp   rq   r‰   rr   rs   rt   r   r€   r   r‚   r   r   r   ÚcompletedOrdersTrackingµ  s(    ýrŠ   c                 C   s¨   | j  d¡}| j  d¡}| j  d¡}| j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ | j  d¡}t|ƒ d}d	}	d
}
d}t| d|||||||||	|
|dœƒS )Nro   rp   rq   ÚcancelledReasonrr   rs   rt   ru   rv   rw   rx   zcancelledOrderTracking.html)ry   rz   r{   Zcancelled_reasonr|   r}   r~   r   r€   r   r‚   rƒ   )r?   ro   rp   rq   r‹   rr   rs   rt   r   r€   r   r‚   r   r   r   ÚcancelledOrdersTrackingÎ  s(    ýrŒ   c           	   
   C   sÎ   | j dkr¾| j d¡dkr¾zht | j¡}|d }|d }d}||dœ}tj||d}|jrpt	ƒ }t
d	|d
œƒW S t
dddœƒW S W qÊ tk
rº } zt
dt|ƒdœƒ W Y ¢S d }~X Y qÊX nt
ddiƒS d S )NrN   rO   rP   Úuser_idÚaccount_stateú;http://210.56.21.197/trucking/index.php/Api/updateUserState©r   rŽ   rQ   rR   )rS   rd   rT   rU   rV   rX   rY   )rZ   r[   r   r   r\   r]   r
   r   r^   r   r   r_   r`   )	r?   r   r   rŽ   ra   rb   r   re   r   r   r   r   Úupdate_shiper_stateç  s"    þ*r‘   c           	   
   C   sÎ   | j dkr¾| j d¡dkr¾zht | j¡}|d }|d }d}||dœ}tj||d}|jrpt	ƒ }t
d	|d
œƒW S t
dddœƒW S W qÊ tk
rº } zt
dt|ƒdœƒ W Y ¢S d }~X Y qÊX nt
ddiƒS d S )NrN   rO   rP   r   rŽ   r   r   rQ   rR   )rS   rg   rT   rU   rV   rX   rY   )rZ   r[   r   r   r\   r]   r
   r   r^   r   r   r_   r`   )	r?   r   r   rŽ   ra   rb   r   rh   r   r   r   r   Úupdate_driver_state  s"    þ*r’   c                 C   sî   | j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d	¡}	| j  d
¡}
| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}t| d|||||||||	|
||||||dœƒS )Nro   rp   Ú	ordertimerq   ÚpickupAddressÚdestinationAddressÚisFullTruckÚ	cargoTypeÚ	cargoSizeÚcargoWeightrr   rs   rt   ÚshipperNameÚshipperEmailÚshipperPhonezpendingOrderMoreDetails.html)ry   rz   Ú
order_timer{   Úpickup_addressÚdestination_addressÚis_full_truckÚ
cargo_typeÚ
cargo_sizeÚcargo_weightÚshipper_nameÚshipper_emailÚshipper_phoner|   r}   r~   ©r„   r   r   )r?   ro   rp   Ú	orderTimerq   r”   r•   r–   r—   r˜   r™   rr   rs   rt   rš   r›   rœ   r   r   r   Úpending_details*  s"    r©   c                 C   sü   | j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d	¡}	| j  d
¡}
| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}t| d|||||||||	|
|||||||dœƒS )Nro   rp   r“   rq   ÚorderPickupr”   r•   r–   r—   r˜   r™   rr   rs   rt   rš   r›   rœ   zinprogressOrderMoreDetails.html)ry   rz   r   r{   Úorder_pickuprž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r|   r}   r~   r§   )r?   ro   rp   r¨   rq   rª   r”   r•   r–   r—   r˜   r™   rr   rs   rt   rš   r›   rœ   r   r   r   Úinprogress_details?  s$    r¬   c                 C   s
  | j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d	¡}	| j  d
¡}
| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}t| d|||||||||	|
||||||||dœƒS )Nro   rp   r“   rq   rª   ÚorderDeleverdr”   r•   r–   r—   r˜   r™   rr   rs   rt   rš   r›   rœ   zcompletedOrderMoreDetails.html)ry   rz   r   r{   r«   Zorder_deleverdrž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r|   r}   r~   r§   )r?   ro   rp   r¨   rq   rª   r­   r”   r•   r–   r—   r˜   r™   rr   rs   rt   rš   r›   rœ   r   r   r   Úcompleted_detailsU  s&    r®   c                 C   sü   | j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d	¡}	| j  d
¡}
| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}| j  d¡}t| d|||||||||	|
|||||||dœƒS )Nro   rp   ÚexceptionReasonr“   rq   r”   r•   r–   r—   r˜   r™   rr   rs   rt   rš   r›   rœ   zcancelledOrderMoreDetails.html)ry   rz   Zexception_reasonr   r{   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r|   r}   r~   r§   )r?   ro   rp   r¯   r¨   rq   r”   r•   r–   r—   r˜   r™   rr   rs   rt   rš   r›   rœ   r   r   r   Úcancelled_detailsl  s$    r°   )'Zdjango.shortcutsr   r   r
   Údjango.httpr   r   Úrandomr   r9   Úcollectionsr   r   r   r   r   r   r   r    r!   rM   rc   rf   ri   rj   rk   rl   rm   rn   r…   rˆ   rŠ   rŒ   r‘   r’   r©   r¬   r®   r°   r   r   r   r   Ú<module>   sD   gJ


!"