
    @h                         d dl mZ d dlmc mc mZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZmZ d d	lmZ  G d
 d      Zy)    )OAuth2PasswordRequestFormN)Session)
JWTManager)TblAdmin)TblCompanyList)SeafarererRoleBaseTblSeafarerRole)TblUsers	UsersBase)CustomResponsec                       e Zd ZdedefdZdej                  fdZde	fdZ
dej                  fdZdej                  fd	Zd
 Zdej                   fdZy)AuthServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      0/var/www/html/beacon-api/app/api/auth/service.py__init__zAuthService.__init__   s    
    requestc                    K   t        j                  |      }t        j                  || j                         | j                  j                          t        dd      S w)N1zUser created successfullystatusmessage)r   model_validater
   creater   commitr   r   r   created_users      r   create_userzAuthService.create_user   sD      //8dgg.S2MNN   AAcredentialsc                   K   t        j                  || j                        }|st        dd      S |j                  |j                  k7  rt        dd      S |j
                  |j                  |j                  d d d d}|j                  dv r|j                  |d<   | j                  j                  t              j                  t              j                  t        j                  |j                  k(        j                         }|r<|j                   |d	<   n,|j                  d
k(  r|j                  |d<   nt        dd      S t#        j$                  |      }t#        j&                  |      }|||dS w)N-1zPlease enter a valid user namer   z-2zIncorrect password)subuser_idrole_idadmin_idseafarer_id
company_id>            r)   r+      r*   z-3zUser role not supported)access_tokenrefresh_tokentoken_payload)r
   get_by_user_filterr   r   password	user_nameusr_idr(   	entity_idqueryr   joinr   filterr)   firstr+   r   create_access_tokencreate_refresh_token)r   r#   user_logr2   companyr0   r1   s          r   
user_loginzAuthService.user_login   sR    ..{DGGD!7WXX8#4#44!7KLL%%''
 y((0(:(:M*%ggmmN388BII!!X%7%77eg  .5.@.@l+"+3+=+=M-(!7PQQ!55mD"77F(**
 	
s   E2E4c                 
  K   t        j                  |      }|j                  t        dd      S t	        j
                  |j                  || j                         | j                  j                          t        dd      S w)Nr%   User id not foundr   r   zUser updated successfully)r   r   r6   r   r
   updater   r   )r   r   updated_users      r   update_userzAuthService.update_user6   sf      //8&!7JKK++\477CS2MNN   BBc                    K   t        j                  |      }t        j                  || j                         | j                  j                          t        dd      S w)Nr   zRole created successfullyr   )r   r   r	   r   r   r   r   r   s      r   create_rolezAuthService.create_role>   sF     )88A|TWW5S2MNNr"   c                    K   | j                   j                  t              j                         }|D cg c]/  }t        j
                  j                  |      j                         1 }}t        dd|      S c c}w w)Nr   zRoles fetched successfully)r   r   data)	r   r8   r	   allschemasSeafarerRoler   
model_dumpr   )r   rolesrole
roles_datas       r   get_all_roleszAuthService.get_all_rolesD   si     o.224Y^_Y^QUg**99$?JJLY^
_S2NU_`` `s   2A=4A8(A=c                 
  K   t        j                  |      }|j                  t        dd      S t	        j
                  |j                  || j                         | j                  j                          t        dd      S w)Nr%   rB   r   r   zUser Role updated successfully)r   r   
sf_role_idr   r	   rC   r   r   )r   r   updated_user_roles      r   update_rolezAuthService.update_roleI   sn     .==gF''/!7JKK0;;=NPTPWPWXS2RSSrF   N)__name__
__module____qualname__r   dictr   rL   
UserCreater!   r   r@   
UserUpdaterE   SeafarerRoleCreaterH   rR   SeafarererRoleUpdaterV    r   r   r   r   
   sy    7 $ O);); O
,E 
BO);); OO)C)C Oa
T(D(D Tr   r   )fastapi.securityr   app.api.auth.schemasapiauthrL   sqlalchemy.ormr   app.dependency.authanticationr   app.models.main.adminr   app.models.main.company_listr   app.models.main.seafarer_roler   r	   app.models.main.usersr
   r   app.utils.schemas_utilsr   r   r_   r   r   <module>rk      s1    6 & & " 4 * 7 M 5 2ET ETr   