o
    ȟ1i                     @   s$  d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZ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ddZejdeddefddZejdedeefdedefddZ ejdedee
eefdeee f defddZ!ej"dedee
eefdefddZ#ej"dedee
eefdefddZ$ejdedeefdedefd d!Z%ejd"edeefdedefd#d$Z&ejd%edee
eefdedefd&d'Z'ejd(edeefd)e(d*e)defd+d,Z*d-S ).    )	APIRouterDependsForm)	Annotated)get_db)hash_passwordget_user)GenericResponse)ForgotPasswordRequestResetPasswordRequestUserCreateSchemaUserLoginSchemaProfileSchemaProfileImageChangePasswordRequest)ParticipantService)UserService)ParentService)SendWelcomeEmailz/user)prefixz/registration)response_modelrequestc                    sp   | j dkrt |  | j dkrt |  | j dkr"t |  | j| jdg}t	|dd}|
  ddiS )	Nparentparticipantguest)emailnameZWelcome)tosubjectmessagezAccount created successfully)	user_typer   creater   register_new_participantr   Zcreate_userr   
first_namer   
send_email)r   
recipientsr    r&   /app/api/user.pyuser_registration   s   


r(   z/loginservicec                    s   d| | dS )NzAccount fetched successfullyr   data)Zvalidate_user_for_loginr   r)   r&   r&   r'   
user_login#   s   r-   z/imagec                    s   | | |I d H  ddiS )Nr   z$Profile image uploaded successfully.)upload_profile_imager   userr)   r&   r&   r'   r.   3   s   r.   z/parent/allc                    s   t   }d|dS )Nz"Parent data populated successfullyr*   )r   Zfetch_all_parentsr0   r)   r+   r&   r&   r'   get_all_parent_user<   s   

r2   z/participant/allc                    s   |  }d|dS )Nz'Participant data populated successfullyr*   )get_all_participantr1   r&   r&   r'   get_all_participant_userB   s   
r4   z/forgot-passwordc                       | |  ddiS )Nr   z9Password reset instructions have been sent to your email.)Zsend_password_reset_emailr,   r&   r&   r'   forgot_passwordH      
r6   z/reset-passwordc                    r5   )Nr   z%Password has been reset successfully.)reset_passwordr,   r&   r&   r'   r8   M   r7   r8   z/change-passwordc                    s   | || I d H  ddiS )Nr   zPassword changed successfully.)change_passwordr/   r&   r&   r'   r9   S   s   r9   z/{user_id}/toggle-activeuser_idr    c                    s*   | | |}|rdnd}dd| diS )NZ	activatedZdeactivatedr   zUser z successfully)toggle_user_active)r:   r    r)   Z
new_statusstatusr&   r&   r'   r;   ]   s   r;   N)+fastapir   r   r   typing_extensionsr   core.configr   core.security.authenticationr   r   schemar	   Zschema.userr
   r   r   r   r   r   r   services.participantr   Zservices.userr   Zservices.parentr   core.email.configr   user_routerpostr(   r-   r.   getr2   r4   r6   r8   r9   intstrr;   r&   r&   r&   r'   <module>   s\    $
	