B
    ×K˜bjB  ã               @   s¸   d dl Z 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mZmZ edd„ ƒZedd„ ƒZedd„ ƒZdS )é    N)ÚQ)ÚHttpResponse)Úlogin_required)ÚEmployee)ÚResign)ÚTransaction)ÚTerminal)ÚLeave)ÚPayloadBase)Úcheck_use_warn_tempÚcheck_use_high_tempÚtemperature_updatec       /      C   sŒ  t j  ¡ }|t jdd }| j}d}|jrHtjj|jd}|j	j
}d}nv|j}tjj|d}|js¾d}|j ¡ r‚|j|j ¡ d}|j ¡ r¢|j|j ¡ d ¡ }|j ¡ r¾|j|j ¡ d	}| ¡ }|t jd
d }|j|| ¡ gd}	|	 ¡ }
tjj|| ¡ | ¡ gd}| ¡ }|r:tjj|| ¡ | ¡ gd}ntjj|| ¡ | ¡ gd}| ¡ }tjj|d}|js–|j ¡ r–|j|j ¡ d ¡ }| ¡ }| d¡ ¡ }|j|d ¡ }| ¡ }| ¡ }tj t|dt|d@ tdd@ t|d@ ¡}| ¡ }tjj|d}|jd| ¡ d}| ¡ }|jd| ¡ d}| ¡ }d8dd„}t| ¡ ƒ}d}|	 d¡ ¡ }||dƒ} dd „ |D ƒ}!d! |!¡}"d"|" d# }#d$}$d%| d& | d' }%d(| d& | d) }&d*| d& | d+ }'d,| d& | d- }(d.| d& | d/ })| d0¡ ¡ }*d1d „ |*D ƒ}+d! |+¡},d2| d& | d3 |, d4 }-|||
||||||||d5œ|| |#|$|%|&|'|(|)|-d6œ
d7œ}.tt  !|.¡ƒS )9Né   )ÚdaysT)ÚidF)Ú
company_id)Údepartment__in)Úarea__in)Úposition__iné   )Úhire_date__range)Úemployee__inÚresign_date__range)r   Úpunch_time__range)Úemp__inr   )ÚcompanyÚemp_code)Úemp_code__in)Ústart_time__lte)Úend_time__gteé   )Úaudit_status)r   )r   r   )Úlate__gtÚatt_date)Úearly_leave__gtr#   c             S   s,   dd„ | D ƒ}d  |¡}d| d | }|S )Nc             S   s   g | ]}d |d  d  ‘qS )z\%22r   © )Ú.0Úir%   r%   ú:G:\easytimepro\master/mysite/iclock\dashboard_card_data.pyú
<listcomp>X   s    z.card_base.<locals>.get_url.<locals>.<listcomp>ú,a  /personnel/employee/export/?export_headers=emp_code,first_name,department,position_code,dev_privilege,employee_area,fingerprint,face,palm,vl_face,update_time,employee_flow_role,app_status_icon,app_punch_status_icon,enable_outdoor_management_icon,&_p1_emp_code__in=[%22[zn]%22]&page_size=999999&export_type=pdf&page=1&pdf-page-size=Default&orientation=Default&limit=999999&filename=)Újoin)Ú	emp_queryÚfilenameZempcode_listZempsZurlr%   r%   r(   Úget_urlW   s    
zcard_base.<locals>.get_urlap  /personnel/employee/export/?export_headers=emp_code,first_name,department,position_code,dev_privilege,employee_area,fingerprint,face,palm,vl_face,update_time,employee_flow_role,app_status_icon,app_punch_status_icon,enable_outdoor_management_icon,&page_size=999999&export_type=pdf&page=1&pdf-page-size=Default&orientation=Default&limit=999999&filename=Total%20Employeesz
New Joineec             S   s   g | ]}d |j j d  ‘qS )z\%22)Zemployeer   )r&   r'   r%   r%   r(   r)   d   s    zcard_base.<locals>.<listcomp>r*   zÁ/personnel/resign/export/?export_headers=emp_code,first_name,last_name,department,position,resign_type,resign_date,reason,report_generation_end_date,disableatt,&_p1_employee__emp_code__in=[%22[zd]%22]&page_size=999999&export_type=pdf&page=1&pdf-page-size=Default&orientation=Default&limit=999999a9  /iclock/terminal/export/?export_headers=sn,alias,area,area_code,ip_address,terminal_state,terminal_last_activity,user_count,fp_count,face_count,palm_count,transaction_count,cmd_count,company_name,&page_size=999999&export_type=pdf&page=1&pdf-page-size=Default&orientation=Default&limit=999999&filename=Total Devicez‘/att/api/transactionReport/export/?export_headers=emp_code,first_name,dept_name,att_date,punch_time,punch_state,source,displayed_temp&start_date=z
&end_date=z¨&departments=-1&areas=-1&positions=-1&page_size=999999&export_type=pdf&page=1&export_style=&pdf-page-size=Default&orientation=Default&limit=999999&filename=Verificationzv/att/api/firstLastReport/export/?export_headers=emp_code,first_name,dept_name,att_date,weekday,first_punch&start_date=z~&page_size=999999&export_type=pdf&page=1&export_style=&pdf-page-size=Default&orientation=Default&limit=999999&filename=PresentzÉ/att/api/absentReport/export/?export_headers=emp_code,first_name,dept_name,att_date,weekday,timetable,check_in,check_out,clock_in,clock_out,total_time,late,early_leave,absent,status,Remarks&start_date=z£&departments=-1&areas=-1&positions=-1&page_size=999999&export_type=pdf&page=1&export_style=2&pdf-page-size=Default&orientation=Default&limit=999999&filename=Absentz¥/att/api/lateReport/export/?export_headers=emp_code,first_name,dept_name,att_date,weekday,timetable,check_in,check_out,clock_in,clock_out,total_time,late&start_date=z©&departments=-1&areas=-1&positions=-1&page_size=999999&export_type=pdf&page=1&export_style=2&pdf-page-size=Default&orientation=Default&limit=999999&filename=Late Arrivalz²/att/api/earlyLeaveReport/export/?export_headers=emp_code,first_name,dept_name,att_date,weekday,timetable,check_in,check_out,clock_in,clock_out,total_time,early_leave&start_date=zƒ&page_size=999999&export_type=pdf&page=1&export_style=2&pdf-page-size=Default&orientation=Default&limit=999999&filename=Early LeaveZemployee__idc             S   s   g | ]}|d  ‘qS )r   r%   )r&   r'   r%   r%   r(   r)   u   s    z”/att/api/leaveSummaryReport/export/?export_headers=emp_code,first_name,dept_name,leave_1,leave_2,leave_3,leave_4,leave_5,leave_6,leave_7&start_date=z0&departments=-1&areas=-1&positions=-1&employees=z&page_size=999999&export_type=pdf&page=1&export_style=&pdf-page-size=Default&orientation=Default&limit=999999&filename=On Leave)Útd_md_empcountÚempcountÚnewjoinercountÚresigncountÚ
punchcountÚdevicecountÚabsentcountÚinofficecountÚ
leavecountÚlatearrivalÚ
earlycount)
ZtotalEmployeesZ
newJoineesZresignedEmployeesZtotalDevicesZverificationsZpresentEmployeesZabsentEmployeesZlateEmployeesZearlyEmployeesZleaveEmployees)Ú
card_datasZcard_data_download_url)N)"ÚdatetimeÚnowÚ	timedeltaÚuserÚis_employeer   ÚobjectsÚfilterr   Ú
departmentr   Úcurrent_companyÚis_superuserÚget_auth_deptÚexistsÚallÚget_auth_areaÚdistinctÚget_auth_posÚcountÚdater   r   r   Úvalues_listÚexcluder	   r   r
   Ústrr+   r   ÚjsonÚdumps)/Úrequestr<   Únext_dayr>   rD   r,   r   Ú	emp_countÚlast_seven_dayÚ
new_joinerÚnew_joiner_countÚresignÚresign_countÚpunch_recordÚpunch_countÚdevice_queryÚdevice_countÚpresent_empÚ
absent_empÚabsent_countÚpresent_countÚleave_approve_recordÚleave_countÚpayload_baseZlateÚ
late_countZearlyÚearly_countr.   Znow_date_strZtotal_emp_urlZnew_joiner_empcode_listZnew_joiner_emp_urlZresigned_empcode_listZresigned_empsZresigned_emp_urlZtotal_device_urlZverification_emp_urlZpresent_emp_urlZabsent_emp_urlZlate_emp_urlZearly_leave_emp_urlZ	leave_empZleave_emp_idsZleave_emp_ids_strZleave_emp_urlÚdatar%   r%   r(   Ú	card_base   sª    



*



rh   c             C   s  t j  ¡ }|t jdd }| j}|jr@tjj|jd}|j	j
}nr|j}tjj|d}|js²|j ¡ rv|j|j ¡ d}|j ¡ r–|j|j ¡ d ¡ }|j ¡ r²|j|j ¡ d}| ¡ }tjj|| ¡ | ¡ gd}d	 } }	 }
 }}tƒ }tƒ }tƒ }tƒ }tƒ }tƒ }xØ|D ]Ð}|j}t||ƒ}t||ƒ}|rF| |j¡ n*t||ƒ}|rd| |j¡ n| |j¡ |jr†| |j¡ n| |j¡ | |j¡ || }|| | }|| }t|ƒ}t|ƒ}	t|ƒ}
t|ƒ}t|ƒ}qW |||	|
|d
œd|idœ}tt  !|¡ƒS )Nr   )r   )r   )r   )r   )r   )r   )r   r   r   )r/   Úhigh_temp_countÚwarning_countÚnormal_countÚno_mask_countÚmasked_count)r:   Úother_datas)"r;   r<   r=   r>   r?   r   r@   rA   r   rB   r   rC   rD   rE   rF   rG   rH   rI   rJ   rK   r   rL   ÚsetÚtemperaturer   r   Úaddr   r   Ú	mask_flagÚlenr   rP   rQ   )rR   r<   rS   r>   r,   r   rT   rZ   ri   rj   rk   rl   rm   Úall_emp_code_setÚnormal_emp_code_setÚhigh_emp_code_setÚwarn_emp_code_setÚno_mask_emp_code_setÚmasked_emp_code_setÚtranÚcelsiusÚhigh_statusÚwarn_statusrg   r%   r%   r(   Ú	card_temp˜   sj    








r~   c       )      C   s2  t j  ¡ }|t jdd }| j}|jr@tjj|jd}|j	j
}nr|j}tjj|d}|js²|j ¡ rv|j|j ¡ d}|j ¡ r–|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 t|dt|d@ tdd@ t|d@ ¡}| ¡ }tjj|d}|jd| ¡ d ¡ }|jd| ¡ d ¡ }d } } } }}tƒ }tƒ }tƒ } tƒ }!tƒ }"tƒ }#xØ|D ]Ð}$|$j}%t|%|ƒ}%t |%|ƒ}&|&rT|  !|$j"¡ n*t#|%|ƒ}'|'rr|! !|$j"¡ n| !|$j"¡ |$j$r”|# !|$j"¡ n|" !|$j"¡ | !|$j"¡ |!|  }!||! |  }|#|" }#t%| ƒ}t%|!ƒ}t%|ƒ}t%|"ƒ}t%|#ƒ}q"W |||	||||||||||||dœd|idœ}(t&t' (|(¡ƒS )Nr   )r   )r   )r   )r   )r   )r   r   )r   )r   r   )r   r   )r   r   )r   )r   )r   r    )r!   )r   )r   r   )r"   r#   )r$   r#   )r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   ri   rj   rk   rl   rm   )r:   rn   ))r;   r<   r=   r>   r?   r   r@   rA   r   rB   r   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   r   r   r   rM   rN   r	   r   r
   ro   rp   r   r   rq   r   r   rr   rs   r   rP   rQ   ))rR   r<   rS   r>   r,   r   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   ri   rj   rk   rl   rm   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   rg   r%   r%   r(   Úcard_detailÝ   s¢    




*



r   )r;   rP   Zdjango.db.modelsr   Zdjango.http.responser   Zdjango.contrib.auth.decoratorsr   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.att.models.model_leaver	   Zmysite.att.modelsr
   Zmysite.att.utilsr   r   r   rh   r~   r   r%   r%   r%   r(   Ú<module>   s    E