B
    GDbå  ã               @   s¤   d dl 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 G dd„ deejƒZdS )é    N)Ústatus)ÚResponse)Úviewsets)ÚAPPCustomizeResponseModelMixin)ÚEmployee)ÚResign)ÚTransaction)ÚTerminal)Ú
Membership)ÚMyUser)ÚCompanyc               @   s   e Zd Zdd„ ZdS )ÚDashboardStasticsc       %      C   sF  t j  ¡ }|t jdd }|j}i }| jj dd ¡}|ræ| ¡ }tj	j
|d d¡}tj	j
t|d d ƒd d¡}	tj	j
t|	d d ƒd	 d
¡}
|
 ¡ rÎ|d d }tj	j
t|ƒd	 d¡}|d d }nddi}t|tjdS n0| ¡ }tj	j
|d d¡}|d d }| ¡ }|jr4ddi}t|tjdS tj	j
t|ƒd}|jsŽ|j ¡ rl|j
|j ¡ d}|j ¡ rŽ|j
|j ¡ d ¡ }| ¡ }|t jdd }|j
|| ¡ gd}| ¡ }tj	j
|| ¡ | ¡ gd}| ¡ }tj	j
|| ¡ | ¡ gd}tj	j
|d}|  d¡ ¡ }|j!|d ¡ }| ¡ }| ¡ }tj	j
|dj!|d  dd¡}|r‚| "¡ |d
< dd„ |D ƒ|d< n |j# "¡ |d
< d d„ |D ƒ|d< |jsÌ|j ¡ rÌ|j
|j ¡ d ¡ }d}x(|D ] }| $¡ } | d!krÖ|d7 }qÖW |}!| ¡ }"|"|! }#||||||"|!|#|d
 |d d"œ
}$d|$i}t|tj%dS )#Né   )ZdaysÚcompany_search_item)ÚnameÚidr   )Ú
company_idZuser_id)r   Úcurrent_companyr   ZResultzPlease Enter Valid Company Name)r   z Only Admin can Access Statistics)Zdepartment__in)Zarea__iné   )Zhire_date__range)Zemployee__inZresign_date__range)Zemp__inZpunch_time__range)ZcompanyZemp_code)Zemp_code__in)Úuser)Úcompany__namer   Zrolec             S   s   g | ]}|d    ¡ ‘qS )r   )Úupper)Ú.0Úcompany_name© r   úCG:\easytimepro\master/mysite/mobile\api_rest\views\view_stastics.pyú
<listcomp>D   s    z*DashboardStastics.list.<locals>.<listcomp>Zother_companyc             S   s   g | ]}|d    ¡ ‘qS )r   )r   )r   r   r   r   r   r   G   s    )r   é   é   )
ZEmployee_CountZNew_Joiner_CountZResign_CountZAbsent_CountZPresent_CountZTotal_Device_CountZOnline_Devices_CountZOffline_Devices_CountZCurrent_CompanyZOther_Company)&ÚdatetimeÚnowZ	timedeltar   ÚrequestZquery_paramsÚgetÚlowerr   ZobjectsÚfilterÚvaluesr
   Ústrr   Úexistsr   r   ZHTTP_406_NOT_ACCEPTABLEZget_current_companyZis_employeer   Zis_superuserZget_auth_deptÚallZget_auth_areaZdistinctÚcountÚdater   r   r	   Zvalues_listZexcluder   r   ZgetDynStateZHTTP_200_OK)%Úselfr!   r    Znext_dayr   Úresultr   Zcompnay_name_detailsZcompany_id_detailsZcheck_membershipZcurrent_company_id_detailsr   Zcurrent_company_namer   Zresponser   Z	emp_queryZ	emp_countZlast_seven_dayZ
new_joinerZnew_joiner_countZresignZresign_countZpunch_recordZdevice_queryZpresent_empZ
absent_empZabsent_countZpresent_countZmatched_companyr)   ZdeviceZdevice_stateZonline_device_countZdevice_countZoffline_device_countÚdatar   r   r   Úlist   sŽ    
  

zDashboardStastics.listN)Ú__name__Ú
__module__Ú__qualname__r.   r   r   r   r   r      s   r   )r   Zrest_frameworkr   Zrest_framework.responser   Zmysite.mobile.api_restr   Z(mysite.mobile.api_rest.app_customize_mixr   Z&mysite.personnel.models.model_employeer   Z$mysite.personnel.models.model_resignr   Z&mysite.iclock.models.model_transactionr   Z#mysite.iclock.models.model_terminalr	   Zmysite.base.modelsr
   Zmysite.accounts.modelsr   Zmysite.cloud.modelsr   ZGenericViewSetr   r   r   r   r   Ú<module>   s   