B
    b0                 @   sh   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZ d dlmZ d dlZG dd deZdS )    )ladonize)request_validstamp2datetimeinterface_responseonline_employee_newSUCCESS_CODEMESSAGE_CODESYSTEM_EXCEPTIONDATA_EXCEPTIONdatetime2stamp
user_photopaging)gettext_lazyNc            
   @   sR   e Zd ZdZeeeeeeeeeddd Zeeeeeeeeddd Z	dS )BioTimeAppMyApplicationu   
    【My Application】
    )Zrtypec          
      s  ddl m}m} ddlm}	 ddlm}
 ddlm} ddlm	} ddl
m}m}m}m}m} |dkrt|}|sxd	}nd
| }d}|dkrd}d|j d }d||d }|pd}y|g d}d|i}||fkr4ddlm  |ddd|d}t|||}||}|rt| fdd|D }||d< nt||fkr|ddd|d}t|||}||}|rt|fdd|D }||d< n||fkr|ddd|d}t|||}||}|rt|t|
jfdd|D }||d< n||fkrP|dd d|d}t|||}||}|rt|fd!d|D }||d< nX||fkr|dd"d|d}t|||}||}|rt|fd#d|D }||d< ttt|d$d%S  tk
r } z dd&l}|  ttd$d$|tS d&}~X Y nX nd'|}ttd$d$|t S d&S )(u  
        get own apply record(pending, approve, reject)
        @param category:        (1:leave，2：overtime， 3：manual log， 4：training， 5：change schedule)
        @param approve_status:  0:approved&rejected, 1:pending, 2:approved，3：rejected
        @param page_num:        page number(15items/page)
        @param language:
        @param token:
        @rtype:
            success
                category in (1, 2, 4)
                {"code":1,"error":"","describe":"","message":"","data":{"category":1,
                "items":[{"code": ID,"pin":"emp_code","name":"first_name","photo":"photo address","start":
                "start time(stamp)","end":"end time(stamp)","remark":"apply reason","category":"","apply_time":"",
                "approve_status":"int value","approve_describe":"status describe","approved_remark":"approve reason",
                 "approved_time":"approve time"},]}}
                category = 3
                {"code":1,"error":"","describe":"","message":"","data":{"category":1, "items":[{"code": ID,"pin":
                "emp_code","name":"first_name","photo":"photo address","punch_time":"punch time(stamp)",remark":
                "apply reason","category":"","apply_time":"","approve_status":"int value","approve_describe":
                "status describe","approved_remark":"approve reason","approved_time":"approve time"},]}}
                category = 5
                {"code":1,"error":"","describe":"","message":"","data":{"category":1, "items":[{"code": ID,"pin":
                "emp_code","name":"first_name","photo":"photo address","previous_shift":"","currently_shift":"",
                "remark":"apply reason","category":"","apply_time":"","approve_status":"int value","approve_describe":
                "status describe","approved_remark":"approve reason","approved_time":"approve time"},]}}
            fail
                {"code":-10001,"error":"","describe":"","message":"Pop-up message","data":""}
        r   )get_sqlp_query)db_const)models_choices)ALL_AUDIT_STATUS)get_func_key)CATEGORY_LEAVECATEGORY_OVERTIMECATEGORY_MANUALCATEGORY_TRAININGCATEGORY_SCHEDULE)r            z audit_status in (2) z audit_status in (%s) Z
audit_time)r   
apply_time'z* u.id = %(applier)s and %(audit_status)s  )Zapplieraudit_statusr   )categoryitemswhere)PUNCH_STATESsqlZmanual_punch_applicationmobile)ZsqlidZappparamsc                s   g | ]}|d  |d |d t |d t|d d|d dt |d |d t|d |d d|d |d d|d	 t|d
 dqS )r   r   r   r   z{0}            	   
   )codepinnamephotoZ
punch_timeremarkr!   r   approve_statusapprove_describeapproved_remarkapproved_time)r   r   formatdictget).0r)r$   status AG:\easytimepro\master/mysite/mobile\services\app_myapplication.py
<listcomp>P   s   z:BioTimeAppMyApplication.my_application.<locals>.<listcomp>r"   Zleave_applicationc                s   g | ]}|d  |d |d t |d t|d t|d d|d |d t|d |d	 d |d	 |d	 d|d
 t|d dqS )r   r   r   r   r)   z{0}r(   r*   r+      r-      )r.   r/   r0   r1   startendr2   r!   r   r3   r4   r5   r6   )r   r   r7   r9   )r:   r;   )r<   r=   r>   r?   ]   s   Zovertime_applicationc                s   g | ]}|d  |d |d t |d t|d t|d d|d d|d |d t|d |d	 d |d	 |d	 d|d
 t|d dqS )r   r   r   r   r)   z{0}r(   r*   r+   r@   r-   rA   )r.   r/   r0   r1   rB   rC   r2   r!   r   r3   r4   r5   r6   )r   r   r7   r9   )r:   r;   )r<   typesr=   r>   r?   k   s   Ztraining_applicationc                s   g | ]}|d  |d |d t |d t|d t|d d|d |d t|d |d	 d |d	 |d	 d|d
 t|d dqS )r   r   r   r   r)   z{0}r(   r*   r+   r@   r-   rA   )r.   r/   r0   r1   rB   rC   r2   r!   r   r3   r4   r5   r6   )r   r   r7   r9   )r:   r;   )r<   r=   r>   r?   y   s   Zschedule_applicationc                s   g | ]}|d  |d |d t |d |d p.d|d d|d |d d	t|d
 |d d |d |d d|d t|d dqS )r   r   r   r   Noner)   z{0}r(   r*   z%Y-%m-%dr+   r@   r-   rA   )r.   r/   r0   r1   Zprevious_shiftZcurrently_shiftr2   r!   r   r3   r4   r5   r6   )r   r7   strftimer   r9   )r:   r;   )r<   r=   r>   r?      s    Z
successfulNz"parameter approve_status={0} error)!Zmysite.sql_utilsr   r   
mysite.attr   r   Zmysite.att.models_choicesr   Zmysite.att.att_paramr   mysite.mobile.choicesr   r   r   r   r   r   idr$   r   r8   ZOVERTIME_TYPEr   r   jsondumps	Exception	traceback	print_excr   r	   r7   r
   )selfr!   r3   Zpage_numdevice_tokenlanguagetokenr   r   r   r   r   r   r   r   r   r   r   ZempZ_approve_statusZ	sort_nameZemp_id_formatr#   datar'   r%   Zrowsr"   erN   describer=   )r$   r<   rD   r>   my_application   s    






 
z&BioTimeAppMyApplication.my_applicationc          
   C   s  ddl m} ddlm}m}m}	m}
m} ddlm	} d}y||	fkrbddl
m} |jj|d}n||fkrddl
m} |jj|d}np||fkrdd	l
m} |jj|d}nJ||
fkrdd
l
m} |jj|d}n$||fkrddl
m} |jj|d}|jj|d}|r|r|d }|d j}||jkrNdtd}ttddd|S ||jkrxdtd}ttddd|S |  ddtdi}ttt|dS ntd}ttdd|tS W n@ tk
r  } z ddl}|   ttdd|t!S d}~X Y nX dS )u  
        delete self  application
        @param category:        (1:leave，2：overtime 3：manual log， 4：training， 5：change schedule)
        @param code:            object ID
        @param device_token:
        @param language:
        @param token:
        @rtype:
        r   )r   )r   r   r   r   r   )AbstractExceptionN)	ManualLog)rJ   )Leave)Overtime)Training)ChangeSchedulez{0}Zapp_application_remove_rejectedrG   Z audited_requests_cant_be_deletedmessageZapp_application_remove_successZobject_not_found)"rH   r   rI   r   r   r   r   r   Zmysite.workflow.modelsrX   Zmysite.att.modelsrY   ZobjectsfilterrZ   r[   r\   r]   r    ZAUDIT_SUCCESSr7   _r   r   ZREFUSEdeleter   rK   rL   r
   rM   rN   rO   r	   )rP   r!   r.   rQ   rR   rS   r   r   r   r   r   r   rX   ZobjsrY   rZ   r[   r\   r]   Zwf_objobjr    r^   rT   rV   rU   rN   r=   r=   r>   cancel   sN    





zBioTimeAppMyApplication.cancelN)
__name__
__module____qualname____doc__r   r   intstrrW   rc   r=   r=   r=   r>   r   
   s     r   )Zmysite.ladon.ladonizerr   Zmysite.mobile.utilsr   r   r   r   r   r   r	   r
   r   r   r   Zdjango.utils.translationr   r`   rK   objectr   r=   r=   r=   r>   <module>   s   4