U
    aŸ}jÞ  ã                   @   sH   d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 dd„ ZdS )é    )ÚrequestÚjsonify)Úget_db)Úerror_responseÚbuild_search_conditions)Úget_user_id_from_tokenÚget_admin_from_tokenc                 C   sd   | j ddgddd„ ƒ}| j ddgddd„ ƒ}| j d	dgdd
d„ ƒ}| j ddgddd„ ƒ}d S )Nz
/api/usersÚGET)Úmethodsc                  S   s   t j d¡} tt j dd¡ƒ}tt j dd¡ƒ}|d | }tƒ }| ¡ }d}d}g }g }	| rœdd	g}
t|
| ƒ\}}|rœ||7 }||7 }| |¡ |	 |¡ | ||	¡ | 	¡ d
 }|d7 }| ||g¡ | ||¡ | 
¡ }| ¡  g }|D ]}t|ƒ}d|d< | |¡ qît||||dœƒS )NÚsearchÚpageé   Úlimité
   z,SELECT * FROM users WHERE deleted_at IS NULLz3SELECT COUNT(*) FROM users WHERE deleted_at IS NULLÚphoneÚnicknamer   z* ORDER BY created_at DESC LIMIT ? OFFSET ?ú******Úpassword©ÚitemsÚtotalr   r   )r   ÚargsÚgetÚintr   Úcursorr   ÚextendÚexecuteÚfetchoneÚfetchallÚcloseÚdictÚappendr   )r   r   r   ÚoffsetÚconnr   ÚqueryÚcount_queryÚparamsÚcount_paramsÚsearch_fieldsÚsearch_condÚsearch_paramsr   Úrowsr   ÚrowÚuser© r.   ú:D:\Project\Python Project\BangBang\backend\routes\users.pyÚ	get_users   s>    

z'register_user_routes.<locals>.get_usersz/api/users/<int:user_id>c                 S   sP   t ƒ }| ¡ }| d| f¡ | ¡ }| ¡  |s8tdƒS t|ƒ}d|d< t|ƒS )Nú7SELECT * FROM users WHERE id = ? AND deleted_at IS NULLõ   ç”¨æˆ·ä¸å­˜åœ¨r   r   )r   r   r   r   r   r   r    r   )Úuser_idr#   r   r,   r-   r.   r.   r/   Úget_user1   s    z&register_user_routes.<locals>.get_userz/api/users/<int:user_id>/tasksc                 S   s  t j d¡}tt j dd¡ƒ}tt j dd¡ƒ}|d | }tƒ }| ¡ }d}d}| | g}	| | g}
|r¤dd	g}t||ƒ\}}|r¤||7 }||7 }|	 |¡ |
 |¡ | ||
¡ | 	¡ d
 }|d7 }|	 ||g¡ | ||	¡ | 
¡ }| ¡  dd„ |D ƒ}t||||dœƒS )Nr   r   r   r   r   z×
            SELECT t.*, u.phone as publisher_phone 
            FROM tasks t LEFT JOIN users u ON t.publisher_id = u.id 
            WHERE (t.publisher_id = ? OR t.acceptor_id = ?) AND t.deleted_at IS NULL
        z]SELECT COUNT(*) FROM tasks WHERE (publisher_id = ? OR acceptor_id = ?) AND deleted_at IS NULLzt.titlezt.descriptionr   z, ORDER BY t.created_at DESC LIMIT ? OFFSET ?c                 S   s   g | ]}t |ƒ‘qS r.   )r    )Ú.0r,   r.   r.   r/   Ú
<listcomp>f   s     z@register_user_routes.<locals>.get_user_tasks.<locals>.<listcomp>r   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r3   r   r   r   r"   r#   r   r$   r%   r&   r'   r(   r)   r*   r   r+   r   r.   r.   r/   Úget_user_tasks@   s6    

z,register_user_routes.<locals>.get_user_tasksÚPUTc                 S   sâ  t j d¡}|r| d¡s$tddƒS | d¡d }t|ƒ}|sHtddƒS td |ƒ}|sh|| krhtdd	ƒS t j}t	ƒ }| 
¡ }g }g }	|r¨d
|kr¨| d¡ |	 |d
 ¡ d|krÈ| d¡ |	 |d ¡ d|krè| d¡ |	 |d ¡ d|kr
| d¡ |	 |d ¡ d|kr,| d¡ |	 |d ¡ d|krN| d¡ |	 |d ¡ |sd| ¡  tdƒS |	 | ¡ | dd |¡› d|	¡ | ¡  |jdkr¬| ¡  tdƒS | d| f¡ | ¡ }
| ¡  t|
ƒ}d|d< t|ƒS )NÚAuthorizationzBearer u   è¯·å…ˆç™»å½•i‘  ú r   u!   ç™»å½•å·²è¿‡æœŸï¼Œè¯·é‡æ–°ç™»å½•u   æ— æƒä¿®æ”¹æ­¤ç”¨æˆ·ä¿¡æ¯i“  Úenabledzenabled = ?r   znickname = ?Úgenderz
gender = ?Úprovincezprovince = ?Úcityzcity = ?Údistrictzdistrict = ?u   æ²¡æœ‰éœ€è¦æ›´æ–°çš„å­—æ®µzUPDATE users SET z, z$ WHERE id = ? AND deleted_at IS NULLr   r2   r1   r   r   )r   Úheadersr   Ú
startswithr   Úsplitr   r   Újsonr   r   r!   r   r   ÚjoinÚcommitÚrowcountr   r    r   )r3   Úauth_headerÚtokenÚcurrent_user_idÚis_adminÚdatar#   r   Úupdate_fieldsÚupdate_valuesÚupdated_userr-   r.   r.   r/   Úupdate_useri   s`    













z)register_user_routes.<locals>.update_user)Úroute)Úappr0   r4   r7   rO   r.   r.   r/   Úregister_user_routes   s    
)

(rR   N)Úflaskr   r   Zutils.databaser   Zutils.helpersr   r   Z
utils.authr   r   rR   r.   r.   r.   r/   Ú<module>   s   