B
    DD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 G dd dejejejejeje	ZdS )    N)mixins)permissions)	sql_utils)Transaction)UtilGenericViewSet)TransactionListFilter)serializers)choices)get_api_company_id)Responsec            	   @   s   e Zd ZdZeZej Ze	Z
ejfZdddddddd	d
g	ZejejejejejejejdZdd Zdd Zdd Zdd Zdd Zdd ZdS )TransactionViewSetz;
    TransactionList pagination, search, filter, order
    idemp_code
punch_timeupload_timepunch_stateverify_type	work_code
area_aliasterminal_sn)listZretrievecreateupdateZpartial_updateactionZexportc             C   s   | j | jtjS )N)serializer_dictgetr   r   ZNoneSerializer)self r   AG:\easytimepro\master/mysite/iclock\api\views\view_transaction.pyget_serializer_class-   s    z'TransactionViewSet.get_serializer_classc             C   s   t | jj}| jj|d}|S )N)Zemp__company_id)r
   requestuserquerysetfilter)r   Z
company_idZqsr   r   r   get_queryset1   s    zTransactionViewSet.get_querysetc             C   s   |   d S )N)Zsave)r   
serializerr   r   r   perform_create6   s    z!TransactionViewSet.perform_createc          
   O   sR   y"|   }| | ddi}t|S  tk
rL } ztd|iS d }~X Y nX d S )NmessageZdeletedZdetail)Z
get_objectZperform_destroyr   	Exception)r   r    argskwargsinstanceZresponseer   r   r   destroyH   s    
zTransactionViewSet.destroyc             C   s  |j drz| |  }y(|j ddd}|  j|d}W n tk
r`   | |}Y nX | j|dd}|j	}|S t
|jdd	d
kr| |S tjdddd}t|}dd ttjD }dd ttjD }	g }|rx|D ]}
|
d	 |
d
 ddd |
d |
d fD t|
d |
d  |
d  |
d |
d |	|
d d||
d d|
d |
d |
d |
d |
d  d!}|| qW |S )"NZpageid_list ,)Zid__inT)Zmany!emergency_export_working_employeer      sqlZtransaction_export_dataatt)sqlidappc             S   s   i | ]\}}|d  |d qS )r2   r   r   ).0vir   r   r   
<dictcomp>d   s    z6TransactionViewSet.get_export_data.<locals>.<dictcomp>c             S   s   i | ]\}}|d  |d qS )r2   r   r   )r7   r8   r9   r   r   r   r:   e   s     c             S   s   g | ]}|rt |qS r   )str)r7   r9   r   r   r   
<listcomp>m   s    z6TransactionViewSet.get_export_data.<locals>.<listcomp>	   
                                 )r   r   Zemployee_nameZemployee_departmentZtransaction_punch_dateZtransaction_punch_timer   r   r   r   r   r   r   Zgps_locationZterminal_alias)Zquery_paramsr   Zfilter_querysetr$   splitr#   r(   Zpaginate_querysetZget_serializerdataintGETget_emergency_export_datar   get_sqlp_query	enumeratecZVERIFY_TYPEZPUNCH_STATEjoinr<   datetimeappend)r   r    r"   r.   r%   datassql_coderowsZVERIFY_TYPE_dictZPUNCH_STATE_dictrowdict_rowr   r   r   get_export_dataQ   sJ    





z"TransactionViewSet.get_export_datac             C   s0  |j dd}|r"tj|d}ntjtj dd}|tjdd }||dd}tjddd	|d
}d| _	dddddddddddddg| _
t|}g }|r,i }	xt|D ]l}
|
d |	kr|
d |
d |
d |
d |
d |
d |
d |
d |
d  |
d! |
d" |
d# |
d$ d%|	|
d < qW ||	  |S )&NrT   r/   z%Y-%m-%dr2   )Zdays)stetorderr3   r1   r4   )r5   r6   paramszAttendance employee listr   r   
first_name	last_name
local_namedepartment_namegendermobileemail
office_telbirthdayaddresspassportr   rA   rB   rC   rD   rE   rF   rG   r>   r?   r@   rH   )r   r   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   )rM   r   datetimestrptimeZnowstrftimeZ	timedeltar   rO   basenameexport_headersrP   extendvalues)r   r    rT   r]   r^   r`   rX   rY   rW   r[   rZ   r   r   r   rN      s>    

z,TransactionViewSet.get_emergency_export_dataN)__name__
__module____qualname____doc__r   ZmodelZobjectsallr"   r   Zfilter_classr   ZIsAuthenticatedZpermission_classesrp   r   ZTransactionSerializerZTransactionCreateSerializerZTransactionEditSerializerZTransactionActionSerializerZTransactionExportSerializerr   r   r$   r&   r-   r\   rN   r   r   r   r   r      s*   

	.r   )rl   Zrest_frameworkr   r   mysiter   Z&mysite.iclock.models.model_transactionr   Zmysite.iclock.api.utils_classr   Zmysite.iclock.api.filtersr   Zmysite.iclock.apir   Zmysite.iclockr	   rR   Zmysite.api.utilsr
   Zrest_framework.responser   ZListModelMixinZCreateModelMixinZRetrieveModelMixinZUpdateModelMixinZDestroyModelMixinr   r   r   r   r   <module>   s    