o
    hM                     @   sj   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ G dd dZd	S )
    )HTTPException)Session)AdminCreateAdminResponseAdminUpdateChangePasswordRequest)	AdminBaseTblAdmin)TblUsers)CustomResponsec                   @   sP   e Zd ZdedefddZdefddZdd	 Zde	fd
dZ
defddZdS )AdminServicedbtokenc                 C   s   || _ || _d S )N)r   r   )selfr   r    r   1/var/www/html/beacon-api/app/api/admin/service.py__init__   s   
zAdminService.__init__requestc                    sd   t di | }| j| | j  t|j|j|j|j	d}| j| | j
  tdddS )N)	user_namepasswordrole_id	entity_id1zAdmin created successfullystatusmessager   )r	   dictr   addflushr
   email_id	pass_wordr   admin_idcommitr   )r   r   created_admincreated_userr   r   r   create_admin$   s    

zAdminService.create_adminc                    s^   | j d}|stdddS | jttj|k }|s%tdddS tddt	
|dS )	Nr!   z-1zInvalid token: admin_id missingr   zNo admin data foundr   zAdmin Profile)r   r   data)r   getr   r   queryr	   filterr!   firstr   model_validate)r   r!   admin_profiler   r   r   get_admin_profile>   s   zAdminService.get_admin_profilec                    s   t |j| j}|stddd|j|jkrtddd|j|jkr)tddd|j|_| j	| | j
ttj|jk }|rN|j|_| j	| | j  | j| tddd	S )
N  zAdmin not foundstatus_codedetaili  zOld password is incorrectz.New password and confirm password do not matchr   zPassword changed successfullyr   )r	   get_idr!   r   r   r    old_passwordnew_passwordconfirm_passwordr   r(   r
   r)   r   r*   r   r"   refreshr   )r   r   adminuserr   r   r   change_passwordM   s"   
zAdminService.change_passwordc                    s   t |}|jd u rtdddt|j|| j}|s"tddd| jt	tj
|jktj|jk }|s>tddd|jd urG|j|_|jd urP|j|_|jd urY|j|_|jd urb|j|_
| j| | j  tdddS )Nr.   zadmin not foundr/   zuser not found for this adminr   z!admin & user updated successfullyr   )r   r+   r!   r   r	   updater   r(   r
   r)   r   r   r*   r   r    r   
company_idr   r"   r   )r   r   r7   updated_adminr8   r   r   r   update_admin_   s*   

(




zAdminService.update_adminN)__name__
__module____qualname__r   r   r   r   r%   r-   r   r9   r   r=   r   r   r   r   r   
   s    r   N)fastapir   sqlalchemy.ormr   app.api.admin.schemasr   r   r   r   app.models.main.adminr   r	   app.models.main.usersr
   app.utils.schemas_utilsr   r   r   r   r   r   <module>   s    