o
    ¿Ôi…  ã                   @   sH   d dl mZmZ d dlmZ dd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )é    )ÚrequestÚjsonify)Úconnect_to_databasec                 C   sB   t |  ¡ ƒ}t|dƒ\}}t|dƒ\}}|d›d|d›d|d›S )Ni  é<   Ú02ú:)ÚintÚtotal_secondsÚdivmod)Útdr	   ÚhoursÚ	remainderÚminutesÚseconds© r   úI/Users/harjaapdhillon/Desktop/newidea/medvista_backend/Services/Doctor.pyÚserialize_timedelta   s   r   c           
      C   s¤  t ƒ }zÁ| ¡ ¦}| d| f¡ | ¡ }|s6tddigddœƒdfW  d   ƒ W | ¡  | ¡  | ¡  S | d| f¡ dd	„ |jD ƒ}| ¡ }|sktdd
igddœƒdfW  d   ƒ W | ¡  | ¡  | ¡  S g }|D ]!}t	t
||ƒƒ}|d |d t|d ƒt|d ƒdœ}	| |	¡ qot|ddœƒdfW  d   ƒ W | ¡  | ¡  | ¡  S 1 s±w   Y  W | ¡  | ¡  | ¡  d S | ¡  | ¡  | ¡  w )Nú"SELECT id FROM users WHERE id = %sÚmessageúDoctor ID does not existT)ÚdataÚerroré”  z1SELECT * FROM doctor_timings WHERE doctor_id = %sc                 S   s   g | ]}|d  ‘qS )r   r   )Ú.0Údescr   r   r   Ú
<listcomp>   s    z&get_doctor_timings.<locals>.<listcomp>z No timings found for this doctoréÈ   ÚidÚday_of_weekÚ
start_timeÚend_time)r   r   r   r    F)r   ÚcursorÚexecuteÚfetchoner   ÚcommitÚcloseÚdescriptionÚfetchallÚdictÚzipr   Úappend)
Ú	doctor_idÚconnr!   ÚdoctorÚcolumnsZtimingsZserialized_timingsÚtimingZtiming_dictZserialized_timingr   r   r   Úget_doctor_timings   sV   
û
çÿò
ð

üã
ßþ
r0   c           
   
   C   s>  t  ¡ }g d¢}t|tƒstdddœƒdfS tƒ }zø| ¡ Ý}| d| f¡ | ¡ }|sItdddœƒdfW  d   ƒ W | 	¡  | 
¡  | 
¡  S |D ]’}|D ]+}||vrztd	|› d
ddœƒdf    W  d   ƒ W | 	¡  | 
¡  | 
¡  S qOg d¢}|d |vr¯td|d › dd |¡ ddœƒdf  W  d   ƒ W | 	¡  | 
¡  | 
¡  S | d| |d f¡ | ¡ }	|	rÍtd|d › dddœƒ qK| d| |d |d |d f¡ qKtdddœƒdfW  d   ƒ W | 	¡  | 
¡  | 
¡  S 1 sþw   Y  W | 	¡  | 
¡  | 
¡  d S | 	¡  | 
¡  | 
¡  w )N)r   r   r    zExpected a list of timingsT©r   r   é  r   r   r   ú'ú' is required)ZMondayZTuesdayZ	WednesdayZThursdayZFridayZSaturdayZSundayr   zInvalid day_of_week: z. Must be one of z, z‚
                    SELECT id FROM doctor_timings 
                    WHERE doctor_id = %s AND day_of_week = %s
                zTiming for z# already exists. Use PUT to update.zœ
                    INSERT INTO doctor_timings (doctor_id, day_of_week, start_time, end_time) 
                    VALUES (%s, %s, %s, %s)
                r   r    z#Doctor timings created successfullyFéÉ   )r   Úget_jsonÚ
isinstanceÚlistr   r   r!   r"   r#   r$   r%   ÚjoinÚprint)
r+   r   Úrequired_fieldsr,   r!   r-   r/   ÚfieldZ
valid_daysÚexisting_timingr   r   r   Úcreate_doctor_timings4   sj   

û'
ß ô'
â*î'
ì
ýýÛ'
×'þ
r>   c           	      C   s˜  t  ¡ }ddg}|D ]}||vrtd|› dddœƒdf  S q
tƒ }z›| ¡ €}| d| f¡ | ¡ }|sStd	ddœƒd
fW  d   ƒ W | ¡  | ¡  | ¡  S | d| |f¡ | ¡ }|s~tdddœƒd
fW  d   ƒ W | ¡  | ¡  | ¡  S | d|d |d |f¡ tdddœƒdfW  d   ƒ W | ¡  | ¡  | ¡  S 1 s«w   Y  W | ¡  | ¡  | ¡  d S | ¡  | ¡  | ¡  w )Nr   r    r3   r4   Tr1   r2   r   r   r   úm
                SELECT id FROM doctor_timings 
                WHERE doctor_id = %s AND id = %s
            ú(Timing ID does not exist for this doctor)r   r   z¦
                UPDATE doctor_timings 
                SET start_time = %s, end_time = %s, updated_at = CURRENT_TIMESTAMP 
                WHERE id = %s
            z"Doctor timing updated successfullyFr   )	r   r6   r   r   r!   r"   r#   r$   r%   )	r+   Ú	timing_idr   r;   r<   r,   r!   r-   r=   r   r   r   Úupdate_doctor_timingsj   sT   ÿ
û
ìýñ
öüè
äþ
rB   c                 C   sN  t ƒ }z–| ¡ {}| d| f¡ | ¡ }|s3tdddœƒdfW  d   ƒ W | ¡  | ¡  | ¡  S | d| |f¡ | ¡ }|s^tdddœƒdfW  d   ƒ W | ¡  | ¡  | ¡  S | d|| f¡ td	d
dœƒdfW  d   ƒ W | ¡  | ¡  | ¡  S 1 s†w   Y  W | ¡  | ¡  | ¡  d S | ¡  | ¡  | ¡  w )Nr   r   Tr1   r   r?   r@   zj
                DELETE FROM doctor_timings 
                WHERE id = %s AND doctor_id = %s
            z"Doctor timing deleted successfullyFr   )r   r!   r"   r#   r   r$   r%   )r+   rA   r,   r!   r-   r=   r   r   r   Údelete_doctor_timing”   sH   
û
íýñ
÷ýé
åþ
rC   N)
Úflaskr   r   Úconfr   r   r0   r>   rB   rC   r   r   r   r   Ú<module>   s    '6*