
    R;h                     x    d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ  G d d	      Zy
)    )Session)CompanyCourseRoleCreateCompanyRoleCreate)CompanyCourseRoleMapBaseTblCompanyCourseRoleMap)CompanyRoleMapBaseTblCompanyRoleMap)TblCourseList)TblSeafarerRole)CustomResponsec                   h    e Zd ZdedefdZdee   fdZde	fdZ
dee   fdZde	d	e	fd
Zde	fdZy)ComapanyMappingServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      ;/var/www/html/beacon-api/app/api/company_mapping/service.py__init__zComapanyMappingService.__init__
   s    
    requestsc                   K   g }|D ]H  }t        j                  |      }t        j                  || j                        }|j                  |       J | j                  j                          t        dt        |       d      S w)N1z Role(s) Created Successfullystatusmessage)	r   model_validater	   creater   appendcommitr   len)r   r   new_mappingsreqcreated_rolenew_mappings         r   create_role_mappingsz+ComapanyMappingService.create_role_mappings   sz     C-<<SAL+22<IK, 
 	<())FG
 	
   BB
company_idc                   K   | j                   j                  t              j                  t        t        j
                  t        j
                  k(        j                  t        j                  |k(        j                         }|st        dd      S |D cg c]:  }|j                  |j                  j
                  |j                  j                  d< }}t        dd|      S c c}w w)N0zNo roles found for this companyr   )role_map_id
sf_role_idsf_role_namer   Successr   r   data)r   queryr	   joinr   r+   filterr'   allr   r*   seafarer_roler,   )r   r'   rolesr	role_lists        r   get_company_rolesz(ComapanyMappingService.get_company_roles   s     GGMM+,T/?#=#=ARA]A]#]^V%00J>?SU	 	 !6WXX 
 	  !}}oo88 ! < <
  	 
 S))LL
s   BC*?C%C*c                   K   g }|D ]H  }t        j                  |      }t        j                  || j                        }|j                  |       J | j                  j                          t        dt        |       d      S w)Nr   z, Course-Role mapping(s) created successfullyr   )	r   r   r   r   r   r   r   r   r    )r   r   r!   r"   created_mappingr$   s         r   create_course_mappingsz-ComapanyMappingService.create_course_mappings1   sz     C6EEcJO188$''RK, 
 	<())UV
 	
r&   role_idc                 V  K   | j                   j                  t              j                  t        t        j
                  t        j
                  k(        j                  t        t        j                  t        j                  k(        j                  t        t        j                  t        j                  k(        j                  t        j                  |k(        }|r"|j                  t        j                  |k(        }|j                         }|st        dd      S |D cg c]m  }|j                  j                  j                  |j                  j                  j                   |j"                  j                  |j"                  j$                  do }}t        dd|      S c c}w w)Nr)   zNo course-role mappings foundr   )r+   r,   	course_idcourse_namer   r-   r.   )r   r0   r   r1   r	   r*   r   r+   r
   r>   r2   r'   r3   r   company_role_mapr4   r,   courser?   )r   r'   r<   r0   mappingsmr/   s          r   get_company_courses_rolesz0ComapanyMappingService.get_company_courses_roles>   sK    GGMM12T#%6%B%BF]FiFi%ijT/?#=#=ARA]A]#]^T-!8!8<S<]<]!]^V%00J>? 	 LL!2!=!=!HIE99;!6UVV 
   00>>II ! 2 2 @ @ M MXX// xx33	  	 
 S)$GG
s   D F)"A2F$F)r*   c                 l  K   | j                   j                  t              j                  t        t        j
                  t        j
                  k(        j                  t        t        j                  t        j                  k(        j                  t        t        j                  t        j                  k(        j                  t        j
                  |k(        j                         }|st        dd      S g }|D ]  }|j                  |j                  |j
                  |j                  j                   j                  |j                  j                   j"                  |j                  j$                  |j&                  j                  |j&                  j(                  d        t        dd|      S w)Nr)   z&No mappings found for this role_map_idr   )course_map_idr*   r+   r,   r'   r>   r?   r   r-   r.   )r   r0   r   r1   r	   r*   r   r+   r
   r>   r2   r3   r   r   rF   r@   r4   r,   r'   rA   r?   )r   r*   rB   r/   rC   s        r   get_courses_by_role_mapidz0ComapanyMappingService.get_courses_by_role_mapid[   s:    GGMM12T#%6%B%BF]FiFi%ijT/?#=#=ARA]A]#]^T-!8!8<S<]<]!]^V+77;FGSU 	 !6^__AKK!" }}00>>II ! 2 2 @ @ M M00;;XX// xx33   S)$GGs   F2F4N)__name__
__module____qualname__r   dictr   listr   r%   intr8   r   r;   rD   rG    r   r   r   r   	   sk    7 4 
48I3J 
M# M,
T:Q5R 
H# H H:H3 Hr   r   N)sqlalchemy.ormr   app.api.company_mapping.schemasr   r   app.models.main.company_courser   r   app.models.main.company_roler   r	   app.models.main.course_listr
   app.models.main.seafarer_roler   app.utils.schemas_utilsr   r   rN   r   r   <module>rV      s(    " V \ N 5 9 2kH kHr   