o
    ¿ÔiÙ  ã                   @   sh   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
m
Z
 ee
ƒZdd„ Zdd	„ Zd
d„ ZdS )é    )ÚFlaskÚrequestÚjsonify)ÚBcrypt)Úconnect_to_database)Úclosing)Úappc                  C   sŠ  t  ¡ } |  d¡}|  d¡}|  d¡}|  d¡}|  dd¡}|r&|r&|r&|s.tddiƒd	fS tƒ }|s<td
ddœƒdfS | ¡ }| d|f¡ | ¡ }|rVtdddœƒd	fS g }	g }
|  ¡ D ]\}}|	 	|¡ |dkrst
 |¡ d¡}|
 	|¡ q^|	 ddg¡ |
 d|g¡ d |	¡}d dgt|
ƒ ¡}d|› d|› d}| ||
¡ |j}d}| ||d |f¡ | ¡  | ¡  tdddœƒdfS )NÚemailÚpasswordÚ	firstnameÚlastnameÚroleé   ÚmessagezMissing required fieldsé  zDatabase connection errorÚtrue©r   Úerroréô  z$SELECT * FROM users WHERE email = %szUser already existsúutf-8Ústatusr   ú, z%szINSERT INTO users (z
) VALUES (ú)z-UPDATE users SET doctor_id = %s WHERE id = %siè  zUser created successfullyÚfalseéÉ   )r   Úget_jsonÚgetr   r   ÚcursorÚexecuteÚfetchoneÚitemsÚappendÚbcryptÚgenerate_password_hashÚdecodeÚextendÚjoinÚlenÚ	lastrowidÚcommitÚclose)Údatar	   r
   r   r   r   Ú
connectionr   ÚuserÚfieldsÚvaluesÚkeyÚvalueÚ
fields_strÚplaceholdersÚqueryZgenerated_idZupdate_query© r5   úI/Users/harjaapdhillon/Desktop/newidea/medvista_backend/Services/Signup.pyÚsignup	   sF   





r7   c               
   C   s  t  ¡ } |  d¡}|stdddœƒdfS tƒ }zÝz¯t| ¡ ƒŸ}| d|f¡ | ¡ }|sCtdddœƒdfW  d   ƒ W W | 	¡  S g }g }|  
¡ D ]!\}}|dkrl|d	kr_t |¡ d
¡}| |› d¡ | |¡ qK|s…tdddœƒdfW  d   ƒ W W | 	¡  S | |¡ dd |¡› d}	| |	|¡ | ¡  | d|f¡ | ¡ }
dd„ |jD ƒ}tt||
ƒƒ}W d   ƒ n1 sÁw   Y  W n' tyî } z| ¡  td|› ddœƒdfW  Y d }~W | 	¡  S d }~ww W | 	¡  n| 	¡  w tdd|dœƒdfS )NÚidzMissing Users IDr   r   r   z"SELECT id FROM users WHERE id = %szUsers not foundé”  r
   r   ú = %szNo fields to updatezUPDATE users SET r   z WHERE id = %sz!SELECT * FROM users WHERE id = %sc                 S   s   g | ]}|d  ‘qS )r   r5   )Ú.0Údescr5   r5   r6   Ú
<listcomp>f   s    zupdate_user.<locals>.<listcomp>zInternal server error r   zUser updated successfullyr   )r   r   r+   éÈ   )r   r   r   r   r   r   r   r   r   r*   r    r"   r#   r$   r!   r&   r)   ÚdescriptionÚdictÚzipÚ	ExceptionÚrollback)r+   Zuser_idr,   r   Zuser_existsr.   r/   r0   r1   r4   Zupdated_usersÚcolumn_namesZupdated_user_dataÚer5   r5   r6   Úupdate_user?   sb   
ú
&ãÿÿ
€ì
&
ñà€"$
€ü€rF   c            
   
   C   sž  t ƒ } z²zˆt| jddƒv}| d¡ dd„ | ¡ D ƒ}dd |¡ d }g }|D ]}tj |¡}|d urB|d	|› d
7 }| 	|¡ q)tj d¡}|rrd| 
¡ vr\d|vr\|d| 7 }ntdddœƒdfW  d   ƒ W W |  ¡  S | ||¡ | ¡ }W d   ƒ n1 s†w   Y  W n# ty¯ }	 ztd|	› ddœƒdfW  Y d }	~	W |  ¡  S d }	~	ww W |  ¡  n|  ¡  w |sÆtdddœƒdfS t|ddœƒdfS )NT)Ú
dictionaryzSHOW COLUMNS FROM usersc                 S   s    g | ]}|d  dkr|d  ‘qS )ÚFieldr
   r5   )r;   Úrowr5   r5   r6   r=   y   s    ÿzgetuser.<locals>.<listcomp>zSELECT r   z FROM users WHERE 1=1z AND r:   ZextrasqlZSELECTú;ú zInvalid SQL inputr   r   r   zInternal server error: r   zNo data foundr   r9   )r+   r   r>   )r   r   r   r   Úfetchallr&   r   Úargsr   r!   Úupperr   r*   rB   )
r,   r   Úcolumnsr4   r/   ÚcolumnÚparam_valueZ	extra_sqlÚresultrE   r5   r5   r6   Úgetuserr   sP   
ÿÿÿ
€ç
#ù
ã€$
€ü€rS   N)Úflaskr   r   r   Zflask_bcryptr   Úconfr   Ú
contextlibr   r   r"   r7   rF   rS   r5   r5   r5   r6   Ú<module>   s    63