
    @h                         d dl mZ d dlmZ d dlmZ d dlmZ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	      Zy
)    )List)HTTPException)Session)AdminCreateAdminResponseAdminUpdateChangePasswordRequestUserResponse)	AdminBaseTblAdmin)TblUsers)CustomResponsec                   X    e Zd ZdedefdZdefdZd Zde	e
   fdZdefd	Zdefd
Zy)AdminServicedbtokenc                      || _         || _        y N)r   r   )selfr   r   s      1/var/www/html/beacon-api/app/api/admin/service.py__init__zAdminService.__init__
   s    
    requestc                   K   t        di |j                         }| j                  j                  |       | j                  j	                          |j
                  }t        j                  |      }|j                  ||j                  d      }t        di |j                         }| j                  j                  |       | j                  j                          | j                  j                  |       t        dd      S w)N)	entity_idpassword)update1zAdmin created successfullystatusmessage )r   dictr   addflushadmin_idr
   model_validate
model_copy	pass_wordr   
model_dumpcommitrefreshr   )r   r   created_adminr&   user_schemacreated_users         r   create_adminzAdminService.create_admin   s      27<<>2M" ))"11':!,,(X_XiXi4j,k;+"8"8":;L!&S2NOOs   DDc                 X  K   | j                   j                  d      }|st        dd      S | j                  j	                  t
              j                  t
        j                  |k(        j                         }|st        dd      S t        ddt        j                  |            S w)	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   r'   )r   r&   admin_profiles      r   get_admin_profilezAdminService.get_admin_profile   s     ::>>*-!7XYYh/66x7H7HH7TU[[]!7LMM#--m<
 	
s   B(B*returnc                    K   | j                   j                  t              j                         }|D cg c]  }t	        j
                  |       c}S c c}w wr   )r   r4   r   allr   r'   )r   resultsrs      r   get_all_adminszAdminService.get_all_admins(   sD     ''--)--/5<=W	((+W===s   2AAAc                   K   t        j                  |j                  | j                        }|st	        dd      |j
                  |j                  k7  rt	        dd      |j                  |j                  k7  rt	        dd      |j                  |_        | j                  j                  |       | j                  j                  t              j                  t        j                  |j                  k(        j                         }|r,|j                  |_        | j                  j                  |       | j                  j!                          | j                  j#                  |       t%        dd	      S w)
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$   r4   r   r5   	user_namer6   r   r+   r,   r   )r   r   adminusers       r   change_passwordzAdminService.change_password,   s     0 0$'':C8IJJ??g222C8STT7#;#;;C8hii!..Eww}}X&--h.@.@EOO.STZZ\#00DMGGKKS2QRRs   E9E;c                 J  K   t        j                  |      }|j                  t        dd      t	        j
                  |j                  || j                        }|st        dd      | j                  j                  t              j                  t        j                  |j                  k(  t        j                  |j                  k(        j                         }|st        dd      |j                  |j                  |_        |j                  |j                  |_        |j                  |j                  |_        |j                   |j                   |_
        | j                  j#                  |       | j                  j%                          t'        dd      S w)Nr@   zadmin not foundrA   zuser not found for this adminr   z!admin & user updated successfullyr   )r   r'   r&   r   r   r   r   r4   r   r5   r   role_idr6   rH   r)   r   
company_idr$   r+   r   )r   r   rI   updated_adminrJ   s        r   update_adminzAdminService.update_admin>   s8    ((1>>!C8IJJ twwGC8IJJh'..x/A/AU^^/SU]UeUeinivivUvw}}C8WXX??&"__DN??&!OODM==$ ==DL'"--DNDS2UVVs   F!F#N)__name__
__module____qualname__r   r#   r   r   r0   r8   r   r   r>   r	   rK   r   rP   r"   r   r   r   r   	   sU    7 4 P+ P
>d9o >S-B S$W+ Wr   r   N)typingr   fastapir   sqlalchemy.ormr   app.api.admin.schemasr   r   r   r	   r
   app.models.main.adminr   r   app.models.main.usersr   app.utils.schemas_utilsr   r   r"   r   r   <module>r[      s+     ! " n n 5 * 2IW IWr   